在芝麻服务器上使用 php 更新 RDF 数据
Updating RDF data using php on sesame server
我有一个关于在芝麻服务器上使用 PHP 代码更新 RDF 数据的问题。
我尝试使用 sesame 端点的 SPARQL 更新并成功。但是,使用 PHP 它没有给出任何错误,但是当我检查 RDF 数据时没有任何变化!!
在连接中,我使用这个link来进行更新:
http://localhost:8080/Sesame/repositories/MyData/statements
和下面的代码实现更新:
$query= "
DELETE DATA{
?s foaf:firstName \"Lina\".
}
WHERE {
?s foaf:firstName \"Lina\".
}";
$result = $sparql->query($query);
我想我现在必须更改查询功能,因为现在不是查询而是更新。另外,我试过
$result = $sparql->update($query);
我收到一个错误!!
出了什么问题或我应该怎么办?
我已经解决了这个问题,因为我尝试使用不带任何变量 (?s) 的删除命令,而是使用实际主题,例如:
$query= "DELETE DATA{ds:S1 foaf:firstName \"Lina\".}";
我想那是因为你不能删除你不知道的东西。
我使用以下命令来执行它:
$result = $sparql->update($query);
问题是您是 confusing/mixing 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\".
}";
我有一个关于在芝麻服务器上使用 PHP 代码更新 RDF 数据的问题。 我尝试使用 sesame 端点的 SPARQL 更新并成功。但是,使用 PHP 它没有给出任何错误,但是当我检查 RDF 数据时没有任何变化!!
在连接中,我使用这个link来进行更新: http://localhost:8080/Sesame/repositories/MyData/statements
和下面的代码实现更新:
$query= "
DELETE DATA{
?s foaf:firstName \"Lina\".
}
WHERE {
?s foaf:firstName \"Lina\".
}";
$result = $sparql->query($query);
我想我现在必须更改查询功能,因为现在不是查询而是更新。另外,我试过
$result = $sparql->update($query);
我收到一个错误!!
出了什么问题或我应该怎么办?
我已经解决了这个问题,因为我尝试使用不带任何变量 (?s) 的删除命令,而是使用实际主题,例如:
$query= "DELETE DATA{ds:S1 foaf:firstName \"Lina\".}";
我想那是因为你不能删除你不知道的东西。 我使用以下命令来执行它:
$result = $sparql->update($query);
问题是您是 confusing/mixing 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\".
}";