- From: Holger Knublauch <holger@topquadrant.com>
- Date: Sat, 24 Jan 2015 19:04:05 +1000
- To: RDF Data Shapes Working Group <public-data-shapes-wg@w3.org>
On 1/24/15, 3:53 PM, Jose Emilio Labra Gayo wrote: > 2.- I noticed that you support "orConstraint" which is a step towards > ShEx. I wonder if you support cardinalities over different groups and > combinations of "orConstraints". The prototypical example is the > Person shape which can have: either a foaf:name or a combination of > several foaf:givenNames and one foaf:lastName. (All untested): ex:Person a rdfs:Class ; rdfs:subClassOf rdfs:Resource ; ldom:constraint [ a ldom:OrConstraint ; ldom:shape1 [ ldom:property [ ldom:predicate foaf:name ; ldom:minCount 1 ; ldom:maxCount 1 ; ] ] ; ldom:shape2 [ ldom:property [ ldom:predicate foaf:givenName ; ldom:minCount 1 ; # ? ] ; ldom:property [ ldom:predicate foaf:lastName ; ldom:minCount 1 ; ldom:maxCount 1 ; ] ] ] . (If you need XOr, create a new template similar to ldom:OrConstraint). Or in SPARQL: ex:Person rdfs:subClassOf rdfs:Resource ; ldom:constraint [ ldom:message """A person must either have a name or a combination of given and last names""" ; ldom:sparql """ ASK { FILTER !(ldom:valueCount(?this, foaf:name) = 1 || (ldom:valueCount(?this, foaf:givenName) > 0 && ldom:valueCount(?this, foaf:lastName) = 1)) } """ ] . Does this cover your scenario? Holger
Received on Saturday, 24 January 2015 09:04:37 UTC