我正在使用GraphDB的免费版本,从DBpedia中选择一些数据。
以下是我尝试的内容:
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dbr: <http://dbpedia.org/resource/>
Select ?about
WHERE {
dbr:Eiffel_Tower a ?o .
SERVICE <https://dbpedia.org/sparql> {
dbr:Eiffel_Tower dbo:abstract ?about .
}
FILTER (LANG(?about) = "de")
}
但是,我没有结果。
如果我在http://factforge.net/上运行查询,如:
Select ?about
Where {
dbr:Eiffel_Tower dbo:abstract ?about .
}
'''
or even like:
'''
Select ?about
WHERE {
dbr:Eiffel_Tower a ?stuff .
SERVICE <https://dbpedia.org/sparql> {
dbr:Eiffel_Tower dbo:abstract ?about .
}
FILTER (LANG(?about) = "de")
}
我得到了我想要的(我得到了德国的9倍。嗯,实际上不完全是,我只想要一次。为什么?)。
所以我的问题是,为什么它不起作用?如何使它起作用?
感谢您的帮助。
您已将哪些DBpedia链接的数据(即描述dbr:Eiffel_Tower
的任何内容)加载到本地GraphDB实例中?我押注“无”。
[我认为,如果您评论(或删除)dbr:Eiffel_Tower a ?o .
行,您将获得结果。
您还应该将FILTER
移到子查询中,因为现在您正在从DBpedia中提取比您需要或想要的更多的数据。
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dbr: <http://dbpedia.org/resource/>
SELECT ?about
WHERE
{
# dbr:Eiffel_Tower a ?o .
SERVICE <https://dbpedia.org/sparql>
{
dbr:Eiffel_Tower dbo:abstract ?about .
FILTER (LANG(?about) = "de")
}
}