SPARQL-запрос на вставку

В черепахе у меня есть что-то вроде этого:

@prefix b: <http://www.fake.org/vl/> .

b:ID_13 b:OwnBy b:Katrin ;
    b:Rank   "5" .

b:FID_13 b:OwnBy b:emily ;
    b:Rank "9" ;
    b:Comment "comment \"George goes to school!" ;
    b:Time_Comment "at 10:18 21/01/2015" .

когда я использую

SELECT * WHERE{

    ?ID  b:OwnBy  ?Name;
         b:Rank     ?Rank;
}

я получаю в результате

ID       Name     Rank
ID_13   Katrin    "5"
ID_13   emily     "9"

Как мне ВСТАВИТЬ другой ранг для ID_13 Катрин (Только для Катрин)????

я пробовал это

INSERT {b:ID_13 b:Rank  "pppppppppppppp"}

WHERE{b:ID_13 b:OwnBy b:Cathy}

Но когда я использую select, чтобы увидеть, что я вставил, этот запрос вставляет новый ранг как в Katring, так и в emily, и тогда я получаю следующий результат:

ID       Name     Rank
ID_13   Katrin    "5"
ID_13   Katrin    "pppppppp"
ID_13   emily     "9"
ID_13   emily     "pppppppp"

person user3358377    schedule 12.04.2014    source источник
comment
В ваших данных у вас есть идентификаторы b:ID_13 и b:FID_13, но приведенный вами пример результатов запроса предполагает, что вы используете b:ID_13 для обоих. Результат вашего запроса также либо неполный, либо не соответствует показанному запросу и/или данным.   -  person Jeen Broekstra    schedule 14.04.2014
comment
Спасибо за ответ. На самом деле я хочу сосредоточиться не на запросе выбора, а на вставке. Это пример моего кода в черепахе. Я изменил запрос выбора для конкретного образца. Поскольку я записал только 2 регистра с конкретным идентификатором, обычно со звездой можно получить эти результаты. Про вставку. Знаете ли вы, как я могу вставить новую тройку в ID_13, принадлежащую только катрину ??? например, если я вставлю комментарий, он появится только тогда, когда я выберу комментарии, где имя - catrin.   -  person user3358377    schedule 14.04.2014
comment
Я хотел сказать, что вам не следует редактировать свой пример таким образом, так как это создает проблемы. Ваш пример как есть неверен и не воспроизводит поведение, которое вы описываете. Это делает неясным, в чем именно заключается проблема, поскольку мы, читатели, не знаем, есть ли ошибка в ваших исходных данных или в вашем отредактированном примере. Тем не менее, я попытался дать ответ, сделав несколько обоснованных предположений о том, чего вы, вероятно, пытаетесь достичь.   -  person Jeen Broekstra    schedule 14.04.2014


Ответы (1)


Данные вашего примера содержат две тройки со свойством b:OwnBy:

  b:ID_13 b:OwnBy b:Katrin .
  b:ID_13 b:OwnBy b:emily .

(Я предполагаю, что b:FID_13 в вашем вопросе - опечатка)

Обратите внимание, что обе тройки имеют одну и ту же тему. Следовательно, ресурс, обозначенный b:ID_13, принадлежит как Катрин, так и Эмили.

Ваша операция INSERT пытается добавить тройку b:ID_13 b:Rank "pppppppppppppp". Предложение WHERE не имеет смысла, так как в этом шаблоне нет переменных для заполнения - это не то чтобы неправильно, но и не делает ничего полезного. Кроме того, то, что вы хотите сделать, просто логическая невозможность. Поскольку b:ID_13 является общей темой для обоих владельцев Katrin и emily, вы не можете вставить ранг для b:ID_13, который не применяется автоматически к обоим Katrin и emily.

Виной тому не ваша INSERT операция, а ваши входные данные. Вы должны убедиться, что ресурсы, принадлежащие Katrin и emily, не имеют одного и того же идентификатора субъекта.

person Jeen Broekstra    schedule 14.04.2014