Hi Serge,
> We're migrating from Fuseki 4 to Fuseki 5.5.
In RDF-star, terms that's a big jump.
The RDF Working Group has gone a different way and while the syntax {|
|} is preserved, the meaning ,i.e. the exspanion, is different.
:s :p :o {| :y :z |} .
is now
:s :p :o .
_:b0 rdf:reifies <<( :s :p :o )>> .
_:b0 :y :z .
that _:b0 is called the reifier and needs to be captured.
DELETE WHERE { <.... > ?a ?b ~?r {| ?c ?d |} }
The ~ is the reifier part
Andy
On 14/08/2025 15:36, [email protected] wrote:
Dear all,
I'm facing the problem with deleting RDF* triples.
We're migrating from Fuseki 4 to Fuseki 5.5. In short, in Fuseki 4 we
were able to delete RDF* triples with the queries like:
DELETE WHERE { <http://datavera.kz/demo/SampleObject> ?a ?b {| ?c ?d |} }
In Fuseki 5.5.0, this query returns an error:
Line -1, column -1: Blank nodes not allowed in DELETE templates
Here is the full sequence of actions to reproduce the problem:
1. Insert RDF* triple:
INSERT DATA { <http://datavera.kz/demo/SampleObject> rdfs:comment
"some" {| <http://datavera.kz/demo/addedBy> "Serge" |} }
2. Try to delete it:
DELETE WHERE { <http://datavera.kz/demo/SampleObject> ?a ?b {| ?c ?d |} }
or
DELETE WHERE { << <http://datavera.kz/demo/SampleObject> ?a ?b >> ?c ?d }
Anyway, we get an error. The same error happens even if we do not use
template and delete data directly:
DELETE DATA { <http://datavera.kz/demo/SampleObject> rdfs:comment
"some" {| <http://datavera.kz/demo/addedBy> "Serge" |} }
3. We can delete the triple without annotation:
DELETE WHERE { <http://datavera.kz/demo/SampleObject> ?a ?b }
This query succeeds, but if then we insert the new triple without
annotation:
INSERT DATA { <http://datavera.kz/demo/SampleObject> rdfs:comment "some" }
and then query for it:
SELECT WHERE { <http://datavera.kz/demo/SampleObject> ?a ?b {| ?c ?d |} }
The annotation is still here, which means it was not deleted by the
DELETE query.
p.s. Another problem is that the Fuseki web panel cannot render RDF*
SELECT query results. This is not critical for us as we use it via API,
but this makes debugging more difficult.
Best regards,
Serge Gorshkov
https://datavera.org