Thanks for the clarification Andy. I was not aware of the fact that the default graph is just a read-only view.

Stefano

On 12/19/2017 02:56 PM, Andy Seaborne wrote:
Stefano,

 > Is there any way I can specify a union graph IRI for update?

The triples really are in the named graph - the default graph for query is a view of all the named graphs. To delete, delete from the named graph and they will disappear from the default graph (if there are not in another graph as well).

DELETE DATA {
    GRAPH <urn:g:1> {
           <urn:s:1> <urn:p:1> <urn:o:1>
    }
}

In an update the default graph changes go to the real (storage) default graph.

     Andy


On 19/12/17 17:53, Stefano Cossu wrote:
Hello,

I have inserted this data set on a TDB-backed database, with the `tdb:unionDefaultGraph` option set to true:

INSERT DATA {
   GRAPH <urn:g:1> {
     <urn:s:1> <urn:p:1> <urn:o:1> .
     <urn:s:1> <urn:p:1> <urn:o:2> .
   }
}


If I query the default graph I can see the triples:

SELECT * {
   ?s ?p ?o .
}

However, if I try to delete triples from the default graph without naming the named graph, the triples won't go away:

DELETE {
   <urn:s:1> <urn:p:1> <urn:o:1> .
} WHERE {
   <urn:s:1> <urn:p:1> <urn:o:1> .
}

If I specify the named graph, or use a variable for it, the triple is deleted. However, I am using Python's RDFLib to manage the interaction with Fuseki and I don't have an easy way to perform an update query on a graph indicated by a variable.

The default Jena graph name `<urn:x-arq:UnionGraph>` won't work either.

My configuration is pretty standard:

@prefix :      <http://base/#> .

@prefix tdb:   <http://jena.hpl.hp.com/2008/tdb#> .
@prefix rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix ja:    <http://jena.hpl.hp.com/2005/11/Assembler#> .
@prefix rdfs:  <http://www.w3.org/2000/01/rdf-schema#> .
@prefix fuseki: <http://jena.apache.org/fuseki#> .


:service_tdb_all  a                   fuseki:Service ;
         rdfs:label                    "TDB dev" ;
         fuseki:dataset                :tdb_dataset_readwrite ;
         fuseki:name                   "dev" ;
         fuseki:serviceQuery           "query" , "sparql" ;
         fuseki:serviceReadGraphStore  "get" ;
         fuseki:serviceReadWriteGraphStore
                 "data" ;
         fuseki:serviceUpdate          "update" ;
         fuseki:serviceUpload          "upload" .


:tdb_dataset_readwrite
         a             tdb:DatasetTDB ;
         tdb:unionDefaultGraph true ;
         tdb:location  "/opt/fuseki/current/run/databases/dev" .


Is there any way I can specify a union graph IRI for update?

Thanks,
Stefano

Reply via email to