From Semantic Web Standards
Jump to: navigation, search

ShEx Validation is defined in terms of a Shape Map, a mapping of nodes to shapes. This page describes different techniques for associating nodes with shapes.

SHACL target*

The SHACL Specification section 2 defines a set of properties for associating nodes with shapes. These are defined as RDF properties, implying an execution model where the node/shape associations are supplied in RDF. Below, these are listed, along with terse labels for them for use in other execution environments such as HTML forms:

propertyshort namedescription
sh:targetNodetargetNodeselects the specified RDF node.
sh:targetClasstargetClassselects RDF nodes with a type arc to the specified node.
sh:targetSubjectsOftargetSubjectsOfselects all subjects of arcs with the specified predicate.
sh:targetObjectsOftargetObjectsOfselects all objects of arcs with the specified predicate.

These are functions which return a list of nodes. The nodes are paired with a shape name to construct a ShapeMap. For example, a ShapeMap could be a list like (using JSON's [] notation for lists):

   [[ targetClass(foaf:Person), my:PersonShape ],
    [ targetSubjectsOf(foaf:knows, my:PersonShape ],
    [ targetObjectsOf(foaf:knows, my:PersonShape ]]

to test any node which has `rdf:type` `foaf:Person` or is the subject or object of a `foaf:knows` arc. The data:

   <Alice> a foaf:Person ; foaf:knows <Bob>, <Claire> .
   <Don> foaf:knows <Evan> .

produces a ShapeMap:

   [[ <Alice>, my:PersonShape ], # targetClass(foaf:Person), targetSubjectsOf(foaf:knows)
    [ <Bob>, my:Personshape ], # targetObjectsOf(foaf:knows)
    [ <Clair>, my:Personshape ], # targetObjectsOf(foaf:knows)
    [ <Don>, my:Personshape ], # targetSubjectsOf(foaf:knows)
    [ <Evan>, my:Personshape ], # targetObjectsOf(foaf:knows) ]]

Note that there are three reasons for `[ <Alice>, my:PersonShape ]` to appear but ShapeMaps are a set of node/shape pairs.

SPARQL query

A Sparql query links nodes to a shape.

select ?node ?shape

OWL inference

Each instance within the database to be validated need to be typed or its type needs to be inferred with the OWL open world inference engines/modes. Each class is associated to a shape or vise versa.