如何检索http://dbpedia.org/resource/Milano的所有属性?我尝试使用此查询,但有一些结果,但我不明白原因:
select ?prop ?c
where {<http://dbpedia.org/resource/Milano> ?prop ?c.}
如何检索http://dbpedia.org/resource/Milano的所有属性?我尝试使用此查询,但有一些结果,但我不明白原因:
select ?prop ?c
where {<http://dbpedia.org/resource/Milano> ?prop ?c.}
这个问题并不完全清楚,但希望你问的问题是为什么你得到三倍的dbpedia:Milano
,但不是dbpedia:Milan
。如您在结果中所见,此查询仅返回十行:
select ?prop ?c
where {
<http://dbpedia.org/resource/Milano> ?prop ?c.
}
然而,其中一行是
prop c
http://dbpedia.org/ontology/wikiPageRedirects http://dbpedia.org/resource/Milan
所以,简单的答案是“查询米兰”,查询如下:
select ?prop ?c
where {
<http://dbpedia.org/resource/Milan> ?prop ?c. # you can use dbpedia:Milan, too
}
一个更复杂的答案将返回它重定向到的任何东西的三元组dbpedia:Milano
和任何三元组(以及,我想,任何这些重定向到的任何东西,等等,尽管我认为维基百科将重定向限制为一层深度)。您可以使用 SPARQL 中的属性路径查询来执行此操作:
select ?prop ?c
where {
dbpedia:Milano dbpedia-owl:wikiPageRedirects* ?subject .
?subject ?prop ?c.
}
在该查询中,?subject
将与长度为零或更多的路径相关的任何内容(因此,鉴于我们已经看到的数据,?subject
将至少绑定到dbpedia:Milano
和dbpedia:Milan
。如果您想保留有关您的各种三元组的主题的信息' 正在使用,您可能希望添加?subject
到该select
行,以便拥有select ?subject ?prop ?c
.
如果您不关心 的特定值?subject
,那么您实际上根本不需要绑定?subject
,并且可以在查询中使用空白节点:
select ?prop ?c
where {
dbpedia:Milano dbpedia-owl:wikiPageRedirects* [ ?prop ?c ] .
}
不幸的是,尽管最后一个查询是合法的 SPARQL,但 Virtuoso 说这是一个错误。幸运的是,最后的改进是完全可选的;这对解决方案并不重要。如果您正在查询不同的端点,您将能够使用它。Virtuoso 给出的错误是:
Virtuoso 37000 Error SP031: SPARQL compiler: Object of transitive triple pattern should be variable or QName or literal, not blank node
SPARQL query:
define sql:big-data-const 0
#output-format:text/html
define sql:signal-void-variables 1 define input:default-graph-uri <http://dbpedia.org> select ?prop ?c
where {
dbpedia:Milano dbpedia-owl:wikiPageRedirects* [ ?prop ?c ] .
}
我联系了 Virtuoso 邮件列表,他们确认这是一个 Virtuoso 错误,他们会修复它。不过,我不知道修复程序需要多长时间才能到达 DBpedia 端点。