Re: Shapes vs Classes (in LDOM)

On 1/24/15, 3:53 PM, Jose Emilio Labra Gayo wrote:
> 4.- Does it handle/distinguish open/closed shapes? Open Shapes means 
> that you can allow remaining triples, while closed shapes means that 
> you are only allowed to have the properties specified by the shape. 
> For example, with a shape like:
>
> <Course> {
>    rdfs:label xsd:string
>  , :student @<Student>*
>  }
>
> the nodes that have that shape contain one property rdfs:label with 
> value string and zero or more properties with shape <Student>. With 
> open shapes you could allow more properties that those, while with 
> closed shapes you could only allow those properties.

This currently requires SPARQL (although we may be able to create a more 
built-in solution if closed shapes are an important requirement):

ex:Course
     a rdfs:Class ;
     rdfs:subClassOf rdfs:Resource ;
     ldom:property [
         ldom:predicate rdfs:label ;
         ldom:valueType xsd:string ;
         ldom:maxCount 1 ;
     ] ;
     ldom:property [
         ldom:predicate ex:student ;
         ldom:valueType ex:Student ;
     ] ;
     ldom:constraint [
         ldom:message "No other property than label or student allowed" ;
         ldom:sparql """
                 ASK {
                     ?this ?p ?o .
                     FILTER (?p NOT IN (rdfs:label, ex:student))
                 }
             """
     ] .

Holger

Received on Saturday, 24 January 2015 09:12:36 UTC