0

私はPHPから次のSPARQLクエリを使用しています$title.5つのクエリトリプルすべてで同じです:

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して、クエリで一度だけ指定する方法はありますか? どこかで匿名ノードが関与している可能性があると思いますか? 多分?:-)

4

2 に答える 2

1

クエリを次のように書き直してみてください。

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 の機能です。

于 2014-09-26T10:38:02.297 に答える