我正在DBpedia live http://dbpedia-live.openlinksw.com/sparql/中写一个查询来返回知名人士的详细信息。作为一个测试用例,我知道在http://dbpedia.org/page/Nero存在一个罗马皇帝Nero的页面,但我的查询并没有为他返回一行。我的SPARQL查询是:
# Runs in live (http://dbpedia-live.openlinksw.com/sparql/)
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX dbo: <http://dbpedia.org/ontology/>
SELECT DISTINCT ?x0 ?name2 ?dob
WHERE {
?x0 rdf:type foaf:Person.
?x0 rdfs:label ?name.
?x0 dbo:birthDate ?dob.
FILTER REGEX(?name,"^Ner.*","i").
BIND (str(?name) AS ?name2)
} ORDER BY ?name2 LIMIT 100
我检查了页面http://dbpedia.org/page/Nero,它在我的查询中引用了rdf:type,rdfs.label和dbo.birthDate属性。当我运行上面的查询时,它使用不区分大小写的REGEX版本返回名称以“Ner”开头的100个其他人。
所以我的问题是:为什么上述查询不会在结果列表中返回Nero?
答案 0 :(得分:2)
首先,请注意,在DBpedia上,Nero(当前)位于result rows 109 and 110,因此您需要至少110行才能看到他。
现在,请注意Nero的说明on DBpedia-Live与on DBpedia不同 - 并且两者都不正确。
特别需要注意的是,在DBpedia-Live上看到,Nero的http://dbpedia.org/
property
/birthDate
有一个值 - {{1} } - 在DBpedia上,1937-12-15 (xsd:date)
http://dbpedia.org/
ontology
有两个值 - /birthDate
和0037-12-15 (xsd:date)
。
另请注意,在DBpedia-Live上,Nero没有1937-12-15 (xsd:date)
http://dbpedia.org/
ontology
值 - 而在DBpedia上,/birthDate
http://dbpedia.org/
property
没有任何价值。
您应该对这些结果感兴趣 - DBpedia和DBpedia-Live。