4

rdf複数のエントリを含むグラフがあります。ここで、関連するすべてのトリプルを特定の ID に取得したいと考えています。これは私の sparql クエリです:

select ?s ?p ?o from <http://localhost:8890/DAV/ranking> where {
 {<http://seekda.com/providers/cdyne.com/PhoneNotify> so:hasEndpoint ?s.
 ?s ?p ?o} union
 {<http://seekda.com/providers/cdyne.com/PhoneNotify> ?p ?o}
}

この場合の ID は です<seekda.com/providers/cdyne.com/PhoneNotify>

しかし、グラフ クエリ (constructまたはdescribe) が必要です。だから私はそれらを一緒にパックしなければならないと思うunion. それ、どうやったら出来るの?

4

1 に答える 1

3

簡単に言えば、違いはありません。

より長い答えは次のとおりです。SPARQLクエリは2つの部分からなると考えてください。

  1. 変数バインディングのリストを生成するクエリ(WHERE)部分(ただし、一部の変数はバインドされていない場合があります)。

  2. 結果をまとめる部分。SELECT、、、、または。ASK_CONSTRUCTDESCRIBE

SELECT *事実上、クエリが返すものです。SELECT ?v1 ?v2結果を取得し、他の変数を削除した別の結果セットを生成します。ASK結果があるかどうかを確認するだけです。

CONSTRUCTテンプレートを使用して、結果からRDFを作成します。結果行ごとに、変数をバインドし、ステートメントを結果モデルに追加します。テンプレートトリプルにバインドされていない変数が含まれている場合、それはスキップされます。

DESCRIBEこれは、各結果ノードを取得し、それに関連付けられたトリプルを見つけて、それらを結果モデルに追加するため、最も珍しいものです。他とは異なり、クエリが一致するよりも多くの情報を含めることができます。

したがってUNIONOPTIONALクエリに、、、を含めることは、すべてのフォームで許可されます。バインドされていない変数が原因で、トリプルが欠落する可能性があります。

あなたの質問はあまり意味がありません。と違いはありません{?s ?p ?o}。あなたは何をしようとしているのですか?わかりました、今はもっと理にかなっています。

以下の説明を考えると、次のことが必要なようです。

construct { <http://seekda.com/providers/cdyne.com/PhoneNotify> ?p ?o }
from <http://localhost:8890/DAV/ranking> 
where {
  { <http://seekda.com/providers/cdyne.com/PhoneNotify> so:hasEndpoint ?s.
    ?s ?p ?o }
  union
  { <http://seekda.com/providers/cdyne.com/PhoneNotify> ?p ?o }
}
于 2010-04-29T10:16:54.217 に答える