0

私が現在真実であると信じていること:

  • トリプルストアはすべて「リンクされたデータ」に関するものです。特定のアプリケーションから分離され、新しいデータによって形成される求心性リンクを介して拡張できるデータ。この概念が Web を動かしています。
  • URI を使用すると、リンクされたデータをさまざまな異種環境でホストできます。
  • 2 台のマシンが相互運用するには、両者が合意された標準に従って動作する必要があります。
  • W3C はそのような標準を定義しています。具体的には、RDF (フォーマット用) および SPARQL (クエリ用) です。

質問:

複数の異種 RDF トリプルストアにまたがるクエリを実行することは可能ですか?

例:

  • 異なるトリプルストア ソフトウェアで実行されている 3 つの RDF トリプルストアがあります。
  • トリプルストア A には、トリプルストア B および C 内の他のノードを参照するノードが含まれています。
  • 3 つのストアすべてからノードを渡すクエリを実行します。
4

1 に答える 1

3

はい、これは非常に可能であり、SPARQL 1.1 Federated Query W3C 勧告の内容です。SPARQL クエリでは、SERVICEキーワードを使用して、クエリするさまざまな SPARQL エンドポイントを指定します。リンクされた推奨事項の例は次のとおりです

PREFIX foaf:   <http://xmlns.com/foaf/0.1/>
SELECT ?name
FROM <http://example.org/myfoaf.rdf>
WHERE
{
  <http://example.org/myfoaf/I> foaf:knows ?person .
  SERVICE <http://people.example.org/sparql> { 
    ?person foaf:name ?name . } 
}

そこのserviceキーワードは、トリプル?person foaf:name ?nameを から取得する必要があること を示しています<http://people.example.org/sparql>。あなたの場合、次のような結果になる可能性があります。

PREFIX ex: <http://example.org/>
SELECT ?person ?age ?weight ?resume WHERE {
  values ?person { ex:Bill ex:John }
  SERVICE <http://jobs.example.org/sparql>   { ?person ex:resume ?resume } 
  SERVICE <http://age.example.org/sparql>    { ?person ex:age    ?age    } 
  SERVICE <http://weight.example.org/sparql> { ?person ex:weight ?weight } 
}

ただし、このクエリをどこかで実行する必要があります。ローカルで実行する場合は、3 つのトリプルストアすべてをservices として指定できますが、そのうちの 1 つに対してクエリを直接実行する場合は、残りの 2 つだけをservices として指定できます。もちろん、これはすべて、フェデレーテッド クエリをサポートする SPARQL エンジンに依存します。最近はほとんどの人がそうしていると思いますが、私は Jena (フェデレーテッド クエリをサポートしている) の経験しかありません。

于 2013-10-31T14:28:18.857 に答える