a view of SPIN constraints

Here is my reconstruction of how SPIN constraints work, based on my reading
of various SPIN documents and various presentations about SPIN constraints.
Please let me know if anything is wrong.

Conceptually a SPIN constraint system takes in two inputs:
1/ an RDF graph
2/ a set of SPIN constraints

Each SPIN constraint is attached to a class and provides a constraint in the
form of a SPARQL query fragment plus an optional SPARQL construct clause.
The surface syntax may not always look like query fragments and construct
clauses, but the only things that determine the meaning of a SPIN
constraint are the query fragment and construct clause that can be generated
from the surface syntax.

A constraint with SPARQL query fragment F on class C is satisfied if the
SPARQL query
    ASK {
      ?this rdf:type/rdfs:subClassOf* C .
      F }
returns no bindings for the graph G

If there is a construct clause X then the result of the constraint is the
result of the SPARQL query
    CONSTRUCT { X }
    WHERE {
 ?this rdf:type/rdfs:subClassOf* C .
 F }
evaluated against the graph G.


peter

Received on Friday, 31 October 2014 18:05:59 UTC