我想用SPARQL查询DBPedia来选择汽车制造商(法国要开始),但我不知道如何做到这一点。
我从这个问题开始:
select distinct * where {
?carManufacturer dbpedia-owl:product <http://dbpedia.org/page/Automobile> .
?carManufacturer dbpprop:locationCountry "France"@en
} LIMIT 100
但是,它返回一个空结果集。我做错了什么?
答案 0 :(得分:4)
您使用错误的URI来识别DBPedia资源。在DBPedia上,http://dbpedia.org/resource/Automobile
引用名词'汽车',而http://dbpedia.org/page/Automobile
引用描述名词'汽车'的页面。因此,
SELECT DISTINCT * WHERE {
?carManufacturer dbpedia-owl:product <http://dbpedia.org/resource/Automobile>.
?carManufacturer dbpprop:locationCountry "France"@en.
} LIMIT 100
工作正常。
但是,如果你想要更加惯用,你可以使用一些语法糖来消除查询中的主题重复。 DBPedia还会加载http://dbpedia.org/resource/
作为前缀dbpedia
,因此您实际上可以完全从查询中删除所有URI:
SELECT DISTINCT * WHERE {
?carManufacturer dbpedia-owl:product dbpedia:Automobile;
dbpprop:locationCountry "France"@en.
} LIMIT 100