sparql — обновление данных RDF с использованием php на сервере sesame

У меня есть вопрос об обновлении данных RDF с использованием кода PHP на сервере сезама.
Я попытался использовать обновление SPARQL с конечной точки сезама и успешно. Тем не менее, с помощью PHP это не дало никакой ошибки, но когда я проверяю данные RDF, ничего не меняется !!

в соединении я использовал эту ссылку для продолжения обновления:
Http: // Localhost: 8080 / кунжут / Хранилище / MyData / заявление

и следующий код для достижения обновления:

$query= "DELETE DATA{
?s foaf:firstName \"Lina\".
}
WHERE {
?s foaf:firstName \"Lina\".
}";


$result = $sparql->query($query);

Я думал, что теперь мне нужно изменить функцию запроса, это не запрос, а обновление. Кроме того, я попробовал

$result = $sparql->update($query);

и я получил ошибку !!

что не так или что мне делать?

1

Решение

Проблема в том, что вы путаете / смешиваете DELETE DATA а также DELETE WHERE — которые представляют собой различные типы операций обновления в SPARQL. Просто удалите DATA ключевое слово из вашего запроса, вот так:

$query= "DELETE {
?s foaf:firstName \"Lina\".
}
WHERE {
?s foaf:firstName \"Lina\".
}";

Это удалит все операторы с предикатом foaf:firstName и объект "Lina",

И так как вы хотите удалить точные тройки, которые вы сопоставляете, вам не нужно повторять шаблон графика в DELETE предложение, поэтому ваш запрос может стать короче:

$query= "DELETE
WHERE {
?s foaf:firstName \"Lina\".
}";
1

Другие решения

Я решил проблему, так как пытался использовать команду удаления без какой-либо переменной (? S), а вместо этого использовать фактическую тему, такую ​​как:

$query= "DELETE DATA{ds:S1 foaf:firstName \"Lina\".}";

Я думаю, это потому, что вы не можете удалить то, что не знаете.
и я использовал следующее, чтобы выполнить его:

$result = $sparql->update($query);
1

По вопросам рекламы [email protected]