[英]Combining identical subjects in DBpedia SPARQL query
我从PHP使用以下SPARQL查询,其中所有五个查询三元组的$title
都相同:
SELECT * WHERE {
{ <http://dbpedia.org/resource/$title> rdfs:label ?pageTitle . }
UNION
{ <http://dbpedia.org/resource/$title> owl:sameAs ?sameAs . }
UNION
{ <http://dbpedia.org/resource/$title> dbpedia-owl:abstract ?abstract . }
UNION
{ <http://dbpedia.org/resource/$title> dbpedia-owl:thumbnail ?thumbnail . }
UNION
{ <http://dbpedia.org/resource/$title> dbpedia-owl:wikiPageID ?wikiID . }
}
有没有一种方法可以简化此过程,以便在查询中只指定一次$title
? 我认为某个地方可能涉及一个匿名节点? 也许? :-)
SELECT * WHERE {
<http://dbpedia.org/resource/$title> ?p ?o .
FILTER (?p IN (rdfs:label, owl:sameAs, dbpedia-owl:abstract, dbpedia-owl:thumbnail, dbpedia-owl:wikiPageID))
代替FILTER (?x IN ())
您还可以使用VALUES (?x) {<...>, <...> }
如另一个答复中所述
尝试如下重写查询:
SELECT * WHERE {
{ ?id rdfs:label ?pageTitle . }
UNION
{ ?id owl:sameAs ?sameAs . }
UNION
{ ?id dbpedia-owl:abstract ?abstract . }
UNION
{ ?id dbpedia-owl:thumbnail ?thumbnail . }
UNION
{ ?id dbpedia-owl:wikiPageID ?wikiID . }
} values (?id) { (<http://dbpedia.org/resource/$title>) }
这是一个非常好的SPARQL 1.1功能。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.