1

INSERT WHERE を使用して値を挿入しようとしています。セマンティック リポジトリとして 4Store を使用しています。

クエリは次のとおりです。

INSERT { 
    <http://some.com#test2> rdf:type <http://dbpedia.org/ontology/Floor> . 
    ?URI1257846444363706 <http://dbpedia.org/ontology/TestFloor> <http:// some.com #test2> . 
    <http:// some.com #test2> <http://dbpedia.org/ontology/floorNo> 'B11' . 
       } 
WHERE { 
    ?URI1257846444278864 rdf:type <http://dbpedia.org/ontology/Campus> . 
    ?URI1257846444278864 <http://dbpedia.org/ontology/hasCampusCode> 'ABC' . 
    ?URI1257846444363706 rdf:type <http://dbpedia.org/ontology/Building> . 
    ?URI1257846444278864 <http://dbpedia.org/ontology/Building> ?URI1257846444363706 . 
    ?URI1257846444363706 <http://dbpedia.org/ontology/hasBuildingCode> 'XYZ' . 
    }

上記のクエリを実行すると、INSERT のトリプルがストアに挿入されません (SELECT クエリを使用してトリプルを取得しようとしましたが、結果が返されません)。WHERE 句のすべてのトリプルをチェックしましたが、それらはすべてストアに存在します。

PREFIX rdf:  <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
SELECT * { 
    ?URI1257846444278864 rdf:type <http://dbpedia.org/ontology/Campus> .
    ?URI1257846444278864 <http://dbpedia.org/ontology/hasCampusCode> 'ABC' .
    ?URI1257846444363706 rdf:type <http://dbpedia.org/ontology/Building> .
    ?URI1257846444278864 <http://dbpedia.org/ontology/Building> ?URI1257846444363706 .
    ?URI1257846444363706 <http://dbpedia.org/ontology/hasBuildingCode> 'XYZ' . 

    }

結果:

<head>
    <variable name="URI1257846444278864"/>
    <variable name="URI1257846444363706"/>
  </head>
  <results>
    <result>
      <binding name="URI1257846444278864"><uri>http://some.com/Ontology/2012.owl#ranfa1087b9-6cee-4433-a4d3-816e9b1af208</uri></binding>
      <binding name="URI1257846444363706"><uri>http://some.com/Ontology/2012.owl#ran1224548700931885</uri></binding>
    </result>
  </results>

ただし、変数が 1 つだけの同じ INSERT WHERE は正常に機能します。

INSERT { 
    <http://some.com#test2> rdf:type <http://dbpedia.org/ontology/Floor> . 
    ?URI1257846444363706 <http://dbpedia.org/ontology/TestFloor> <http:// some.com #test2> . 
    <http:// some.com #test2> <http://dbpedia.org/ontology/floorNo> 'B11' . 
    } 
WHERE { 
    ?URI1257846444363706 rdf:type <http://dbpedia.org/ontology/Building> . 
    ?URI1257846444363706 <http://dbpedia.org/ontology/hasBuildingCode> 'XYZ' . 
    }

最初の INSERT WHERE に何か問題がありますか?

4

1 に答える 1

2

データを見ずにクエリが正しいかどうかを判断するのは困難です。

SELECT*を使用してWHERE部分だけを実行してみてください。一致するものがあるかどうかがわかります。

また、実行している4storeのバージョンはわかりません。初期のものは部分的なINSERTサポートしかありませんでした。

于 2012-05-06T06:46:09.900 に答える