【发布时间】:2014-03-17 11:23:05
【问题描述】:
我有以下 SPARQL 查询:
SELECT ?nationalityLabel WHERE {
dbpedia:Henrik_Ibsen dbpedia-owl:nationality ?nationality .
?nationality rdfs:label ?nationalityLabel .
}
我检查了 Henrik Ibsen 是否存在,并且他有国籍本体/属性: http://dbpedia.org/page/Henrik_Ibsen
这是一个本体: http://dbpedia.org/ontology/nationality
与此处列出的非常相似的查询有效: https://stackoverflow.com/a/10248653/1680130
我遇到的问题是查询没有返回任何结果。
如果我能得到帮助解决这个问题,那就太好了。
总结解决方案: 这两个答案都非常好,但最终都落在了 Joshua 上,因为告知 dbpedia-owl 更清洁。我认为的最佳解决方案:
首先使用 dbpedia-owl 检查出生地:
select ?label {
dbpedia:Henrik_Ibsen
dbpedia-owl:birthPlace
[ a dbpedia-owl:Country ;
rdfs:label ?label ]
filter langMatches(lang(?label),"en")
}
如果找到然后得到恶魔:
select ?label {
dbpedia:Norway dbpedia-owl:demonym ?label
filter langMatches(lang(?label),"en")
}
如果上述失败,则执行“脏”查询:
SELECT
?nationality
WHERE {
dbpedia:Henrik_Ibsen dbpprop:nationality ?nationality .
filter langMatches(lang(?nationality),"en")
}
当然是“脏”意味着数据正确但不经常出现顺序可能会更好,因为人们可以出生在一个国家但来自不同的国家。
【问题讨论】: