RDFising data with SPARQL and SPIN

178 Views Asked by At

I want to RDFising data, I need construct with a SPARQL query (I'm using SPIN) an object (Book) with two properties (Title and Author). All books have "Title" but sometime haven't "Author".

When this happens, it doesn't create this "Book", and I want create it with "Title".

I'm using GraphDB and this is the query:

prefix spif: <http://spinrdf.org/spif#>
prefix pres: <http://example.com/pruebardf/>

CONSTRUCT {
    ?rdfIRI a           pres:Book ;
            pres:Author ?author   .
}
WHERE {
     SERVICE <http://localhost:7200/rdf-bridge/1683716393221> {
         ?bookRow a                <urn:Row> ;
                  <urn:col:Author> ?author   ;
                  <urn:col:Title>  ?title    .
     }
     BIND(IRI(CONCAT("http://example.com/", spif:encodeURL(?title))) AS ?rdfIRI)
}

Is there a solution? I can use other SPARQL syntax.

1

There are 1 best solutions below

0
On BEST ANSWER

Use OPTIONAL in the SERVICE part to make the pattern not fail when <urn:col:Author> is missing.

The CONSTRUCT will then simply not put in the ?rdfIRI pres:Author ?author triple but will include ?rdfIRI a pres:Book.

If you want to set ?author when it is missing in the data, look at using COALESCE.