У меня есть вопрос об обновлении данных 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);
и я получил ошибку !!
что не так или что мне делать?
Проблема в том, что вы путаете / смешиваете 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\".
}";
Я решил проблему, так как пытался использовать команду удаления без какой-либо переменной (? S), а вместо этого использовать фактическую тему, такую как:
$query= "DELETE DATA{ds:S1 foaf:firstName \"Lina\".}";
Я думаю, это потому, что вы не можете удалить то, что не знаете.
и я использовал следующее, чтобы выполнить его:
$result = $sparql->update($query);