How can I use INSERT via CONSTRUCT Statements?

What?

Use of SPARUL to add triples to a Named Graph.

Why?

Imagine a situation where you seek to create mappings between datasets across Linked Data Spaces. For example, we have two datasets across the schema.org and schema.rdfs.org data spaces and we seek to mint owl:equivalentClass and owl:equivalentProperty relations across the aforementioned data spaces in a third dataspace hosted by a Virtuoso instance.

How?

You can write an ordinary CONSTRUCT statement, ensure that it generates the triples intended to be added, and then replace the leading CONSTRUCT keyword with the INSERT INTO phrase.

The example below shows how CONSTRUCT is used to manufacture the triples required by the Virtuoso hosted dataset.

Example

  1. Assume the following CONSTRUCT statement:

    CONSTRUCT { ?s <http://www.w3.org/2002/07/owl#equivalentClass> `iri (bif:replace(?o,'http://schema.rdfs.org/', 'http://schema.org/'))` } FROM <http://www.openlinksw.com/schemas/rdfs> WHERE { ?s <http://www.w3.org/2002/07/owl#equivalentClass> ?o };

  2. Execute the CONSTRUCT query from the htp://cname/sparql SPARQL endpoint.
  3. View the generated triples to ensure they are correct.
  4. Replace CONSTRUCT with INSERT INTO:

    SPARQL INSERT INTO <http://www.openlinksw.com/schemas/rdfs> { ?s <http://www.w3.org/2002/07/owl#equivalentClass> `iri (bif:replace(?o,'http://schema.rdfs.org/', 'http://schema.org/'))` } FROM <http://www.openlinksw.com/schemas/rdfs> WHERE { ?s <http://www.w3.org/2002/07/owl#equivalentClass> ?o } ;

Related