1

この SPARQL 更新を実行すると、次のようになります。

INSERT {
  GRAPH <n4> {
    ?s foaf:firstName ?o
  }
}
WHERE {
  GRAPH <n1> {
    ?s foaf:familyName ?o .
    ?o foaf:familyName ?x
  }
}

構文的には問題ありませんが、結果が得られません。INSERT句から同時に?sバインドできないからですか? ?s?o

4

2 に答える 2

3

あなたのクエリは SPARQL に対して構文的には問題ありませんが、おそらく一致するパターンは、ほとんどの場合、正当な RDF ではありません。特に、次のパターンはありそうにありません。

?s foaf:familyName ?o .
?o foaf:familyName ?x

あなたのデータと一致します。の値?oは、RDF リテラルである文字列である可能性が非常に高く、リテラルは RDF のトリプルの主語になることはできないため、?o foaf:familyName ?x一致する可能性はほとんどありません。これは、クエリの WHERE 部分に一致するトリプルがないことを意味するため、挿入するものはありません。最初に実行することをお勧めします

SELECT ?s ?o WHERE {
  GRAPH <n1> {
    ?s foaf:familyName ?o .
    ?o foaf:familyName ?x
  }
}

INSERT で使用できる と の?s値を確認します。?o結果が表示されないことが予想されるため、 にトリプルを挿入していませんn4

あなたが尋ねた特定の質問に関しては、

INSERT句から同時に?sバインドできないからですか??s?o

同時バインディングについては問題ありません。クエリの WHERE 部分は、(場合によっては空の) 結果のセットを生成し、それぞれが?s?o、およびをバインドし?xます。次に、解ごとに、 と の値を?s使用?oしてトリプルを構築しvalue-of-s foaf:firstName value-of-o、これらのトリプルのすべてを に挿入しn4ます。n4結果のセットが空であるため (上記の理由により)、何も挿入されていません。

于 2013-09-04T13:03:43.877 に答える
1

Jena Fuseki の 0.2.7 版を使用しました。問題は、グラフを明示的に作成し、その後 INSERT Update を実行する必要があったことだと思います。これは 1 つのグラフで機能しますが、groupgraphpattern をより大きなデータセット (n1、n2、n3 など) に評価する場合、結果は得られません。

于 2013-09-06T11:26:37.503 に答える