Wikidata Query Service/Blank Node Skolemization

For information about skolemization in the RDF context please read RDF 1.1 Concepts - 3.5 Replacing Blank Nodes with IRIs.

= Why skolemizing the blank nodes? = As part of the work to improve the performance of the Wikidata Query Service update process we decided to go with a patch approach. In the same vein as what was proposed in rdf-patch or TurtlePatch the idea is to mutate the graph with a set of trivial INSERT DATA and DELETE DATA operations. This is where blank nodes can't be used within these operations because they are by nature unidentifiable. By skolemizing the blank nodes we give an identity to the blank nodes and allow to apply such mutations on any triple store.

= How does this affect my SPARQL query? =

Queries using isBlank
Queries using isBlank(?o) will stop functioning and have to be rewritten using the  function.

Must be rewritten with:

Queries using isIRI
The skolem form being an IRI the use of  might conflate SomeValue nodes. To eliminate possible ambiguities  can be used:

can be rewritten as:

Form of the skolem IRI in results
The form of the IRI will be compliant with the RDF recommendations for example:

These IRIs will now replace the t9283749 in the result sets.

instead of returning:

will return: