我尝试在DBpedia上使用Sparql查询获取有关城市的一些数据。问题是我无法让查询起作用。
目前我这样做:
SELECT ?title,?name,?abs WHERE {
?title skos:subject
<http://dbpedia.org/resource/Category:Cities%2C_towns_and_villages_in_Slovenia>.
?title dbpprop:officialName ?name.
?title dbpprop:abstract ?abs
}
我从斯洛文尼亚得到所有城镇和村庄的所有数据。问题是,我想获得仅一个城镇的数据(officialName和/或abstract),例如Ljubljana。所以我尝试了这样的事情:
SELECT ?name WHERE {
?name dbpprop:officialName
<http://dbpedia.org/resource/Ljubljana>.
}
当然它不起作用。我不知道为什么,虽然:),但我一直在尝试,并注意到一些事情,如果我把
?name skos:subject <http://dbpedia.org/resource/Category:Ljubljana>.
我得到了一些结果(这与我无关,但无论如何),但如果我把
?name skos:subject <http://dbpedia.org/resource/Ljubljana>.
虽然元素skos上没有任何结果:主题存在于页面http://dbpedia.org/resource/Ljubljana。
有人可以解释为什么第二个例子不起作用以及如何得到我想要的结果?
谢谢, Ablak
由于
答案 0 :(得分:4)
您想要查询<http://dbpedia.org/resource/Ljubljana>
作为主题,而不是对象;这将替换SPARQL查询中的?title
绑定,例如:
SELECT ?name, ?abs WHERE {
<http://dbpedia.org/resource/Ljubljana>
skos:subject <http://dbpedia.org/resource/Category:Cities%2C_towns_and_villages_in_Slovenia> ;
dbpprop:officialName ?name ;
dbpprop:abstract ?abs .
}
这就是您的图表匹配?name skos:subject <http://dbpedia.org/resource/Ljubljana>
未返回预期结果的原因; Ljubljana的URI应该是您想要匹配的语句的主题。