【问题标题】:Sparql DBPedia not returning foaf:name querySparql DBPedia 不返回 foaf:name 查询
【发布时间】:2018-09-26 20:09:32
【问题描述】:

我正在为 DBpedia 使用 Virtuoso SPARQL 端点。我在运行一些测试查询时没有问题,但我的问题是当我在基于实体的foaf:name "literal" 的查询上运行时。下面是我的代码:

prefix db: <http://dbpedia.org/resource/>
prefix dbo: <http://dbpedia.org/ontology/>
prefix foaf: <http://xlms.com/foaf/0.1/>

SELECT ?capital WHERE{
        ?state dbo:capital ?capital .
        ?state foaf:name "State of Alaska"@en .
        }

我的逻辑是 ?state dbo:capital ?capital 指的是 DBpedia owl 本体中的州首府。 ?state foaf:name "State of Alaska"@en 应该将变量 ?state 与文字实体 Alaska 匹配。当我的查询由不是foaf:name 的变量控制时,我没有问题。我查了一些例子,看不出我的语法有什么问题。即使我将最后一行编辑为 --

?state a foaf:name "State of Alaska"@en .

-- 代码继续失败。我查找了其他示例,但找不到我的具体问题。似乎此代码应该根据foaf:name 文字返回阿拉斯加的首都。

【问题讨论】:

  • ?state a foaf:name "State of Alaska"@en . -> 这显然不是三重模式!
  • 主要问题是,您的 FOAF 命名空间是错误的,它必须是 xmlns 而不是 xlms -> http://xmlns.com/foaf/0.1/

标签: sparql dbpedia


【解决方案1】:

我找到了答案。关键是不要在顶部添加这个前缀

prefix foaf: <http://xlms.com/foaf/0.1/> 

应该用正确的foaf:前缀声明替换:

prefix foaf: <http://xmlns.com/foaf/0.1/> 

甚至可能跳过,因为foaf: 前缀是predefined

所以下面的查询确实有效:

SELECT ?capital WHERE {
        ?state dbo:capital ?capital .
        ?state foaf:name "State of Alabama"@en .
}

【讨论】:

  • 真的,关键是在您的 SPARQL 中不要出现印刷错误(这确实需要为给定查询中使用的所有前缀声明 prefix,即使该端点具有预定义的 foaf: 前缀) .
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多