我正在将Virtuoso SPARQL端点用于DBpedia。运行某些测试查询没有问题,但是我的问题是当我基于实体的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猫头鹰本体中一个国家的首字母。 ?state foaf:name "State of Alaska"@en
应该将变量?state
与文字实体Alaska
进行匹配。当我的查询由非foaf:name
的变量控制时,我没有问题。我查看了示例,但看不出语法有什么问题。即使我将最后一行编辑为-
?state a foaf:name "State of Alaska"@en .
-代码继续失败。我查看了其他示例,但找不到我的特定问题。似乎该代码应该根据foaf:name
文字返回阿拉斯加的资本。
答案 0 :(得分:2)
我找到了答案。关键是不要在顶部添加此前缀
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 .
}