2012-05-05 2 views
1

Я пытаюсь вставить значения, используя INSERT WHERE. Я использую 4Store как семантический репозиторий.Проблема с INSERT WHERE SPARQL + 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 не вставлена ​​в магазине (я попытался извлечением троек, используя запрос на выборку, но он не возвращает результатов) , Я проверил все тройки в предложении 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> 

Но тот же ВСТАВИТЬ 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' . 
    } 

Что-то не так в 1 ВСТАВКА ГДЕ?

+0

Это, вероятно, не проблема, так как вы говорите, что работает второй 'INSERT', но' 'не является допустимым IRI, потому что он содержит пробелы. – cygri

ответ

2

Трудно сказать, правильный ли запрос, не видя данных.

Попробуйте запустить часть WHERE с помощью SELECT *. Это скажет вам, есть ли для этого какие-либо соответствия.

Кроме того, вы не скажете, какую версию 4store вы используете. Ранние были только частичной поддержкой INSERT.

+0

Я попробовал SELECT * только с частью WHERE. Я приложил результаты выше с моим вопросом. Я использую следующие версии: Raptor версия 2.0.4 версия Rasqal 0.9.26 4Store v1.1.4-168-g98398ef – Nikhil