2

2つのSPARQLアップデートがあります。最初の1つ:

INSERT 
{ GRAPH <[http://example/bookStore2]> { ?book ?p ?v } }
WHERE
{ GRAPH  <[http://example/bookStore]>
   { ?book dc:date ?date .
     FILTER ( ?date > "1970-01-01T00:00:00-02:00"^^xsd:dateTime )
     ?book ?p ?v
} }

2番:

INSERT 
{ GRAPH <[http://example/bookStore2]> { ?book ?p ?v } }
WHERE
{ GRAPH  <[http://example/bookStore3]>
   { ?book dc:date ?date .
     FILTER ( ?date > "1980-01-01T00:00:00-02:00"^^xsd:dateTime )
     ?book ?p ?v
} }

それらをUNIONオペレーターと組み合わせることができますか?はいの場合、それは同等の結果ですか?「選択」などのSPARQLアップデートでUNIONを使用することは可能ですか?

4

2 に答える 2

2

AndySの答えは正しいです。それらを組み合わせることができます。UNIONの説明は、SPARQL仕様のセクション7マッチングの選択肢にあります。結合されたクエリは次のようになります。

INSERT { 
  GRAPH <[http://example/bookStore2]> { ?book ?p ?v }
}
WHERE{ 
  {
    GRAPH  <[http://example/bookStore]> {
      ?book dc:date ?date .
      FILTER ( ?date > "1970-01-01T00:00:00-02:00"^^xsd:dateTime )
      ?book ?p ?v
    }
  }
  UNION
  {
    GRAPH <[http://example/bookStore3]> {
      ?book dc:date ?date .
      FILTER ( ?date > "1980-01-01T00:00:00-02:00"^^xsd:dateTime )
      ?book ?p ?v
    }
  }
}

パターンが非常に似ているこの特定のケースでは、VALUESを使用して異なる部分を抽象化することもできます。

INSERT { 
  GRAPH <[http://example/bookStore2]> { ?book ?p ?v }
}
WHERE{ 
  values (?graph ?startDate) { 
    (<[http://example/bookStore]> "1970-01-01T00:00:00-02:00"^^xsd:dateTime)
    (<[http://example/bookStore3]> "1980-01-01T00:00:00-02:00"^^xsd:dateTime)
  }
  GRAPH ?graph {
    ?book dc:date ?date .
    FILTER ( ?date > ?startDate )
    ?book ?p ?v
  }
}
于 2013-08-26T18:52:36.673 に答える
1

WHERE句はSPARQLクエリと同じです-UNIONを使用できます。

于 2013-03-13T11:57:02.203 に答える