- From: Holger Knublauch <holger@topquadrant.com>
- Date: Fri, 8 Apr 2016 10:53:26 +1000
- To: public-data-shapes-wg@w3.org
On 8/04/2016 0:08, Peter F. Patel-Schneider wrote: > Here is my understanding of the intent of the current situation. I don't > believe that all of these are supported by explicit wording in the current > document. > > 1/ OK. The constraint has an explicit rdf:type link to > sh:PropertyConstraint providing the valid type. > > @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . > @prefix sh: <http://www.w3.org/ns/shacl#> . > @prefix ex: <http://ex.com/> . > > ex:s1 a sh:Shape ; > sh:property [ rdf:type sh:PropertyConstraint ; > sh:predicate ex:p ; > sh:nodeKind sh:IRI ] . > > 2/ OK. There is no rdf:type link for the constraint so default value type > processing comes into play which provides the valid type. > > @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . > @prefix sh: <http://www.w3.org/ns/shacl#> . > @prefix ex: <http://ex.com/> . > > ex:s1 a sh:Shape ; > sh:property [ > sh:predicate ex:p ; > sh:nodeKind sh:IRI ] . > > 3/ Not OK. The explicit rdf:type link prevents default value type > processing from having an effect so there is no valid type. > > @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . > @prefix sh: <http://www.w3.org/ns/shacl#> . > @prefix ex: <http://ex.com/> . > > ex:s1 a sh:Shape ; > sh:property [ rdf:type ex:PropertyConstraint ; > sh:predicate ex:p ; > sh:nodeKind sh:IRI ] . > > 4/ Not OK. Even though the class here is the universal class the explicit > rdf:type link prevents default value type processing from having an effect > so there is no valid type. > > @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . > @prefix sh: <http://www.w3.org/ns/shacl#> . > @prefix ex: <http://ex.com/> . > > ex:s1 a sh:Shape ; > sh:property [ rdf:type rdfs:Resource ; > sh:predicate ex:p ; > sh:nodeKind sh:IRI ] . > > 5/ Not OK. There is no valid type even though the constraint is a SHACL > instance of sh:PropertyConstraint. > > @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . > @prefix sh: <http://www.w3.org/ns/shacl#> . > @prefix ex: <http://ex.com/> . > > ex:PropertyConstraint rdfs:subClassOf sh:PropertyConstraint . > > ex:s1 a sh:Shape ; > sh:property [ rdf:type ex:PropertyConstraint ; > sh:predicate ex:p ; > sh:nodeKind sh:IRI ] . > > 6/ OK. There is an explicit rdf:type link to sh:PropertyConstraint so the > constraint has a valid type > > @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . > @prefix sh: <http://www.w3.org/ns/shacl#> . > @prefix ex: <http://ex.com/> . > > ex:s1 a sh:Shape ; > sh:Property [ rdf:type sh:PropertyConstraint ; > rdf:type ex:InversePropertyConstraint ; > sh:predicate ex:p ; > sh:nodeKind sh:IRI ] . So far so good. (except sh:property is not uppercase). > > 7/ Unknown. There is an explicit rdf:type link to sh:PropertyConstraint so > the constraint has a valid type. However, the constraint is a SHACL > instance of both sh:PropertyConstraint and sh:InversePropertyConstraint. > > @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . > @prefix sh: <http://www.w3.org/ns/shacl#> . > @prefix ex: <http://ex.com/> . > > ex:InversePropertyConstraint rdfs:subClassOf sh:InversePropertyConstraint . > > ex:s1 a sh:Shape ; > sh:Property [ rdf:type sh:PropertyConstraint ; > rdf:type ex:InversePropertyConstraint ; > sh:predicate ex:p ; > sh:nodeKind sh:IRI ] . This is a valid example. The current spec states that - the classes only count as disjoint if they have rdf:type triples (i.e. subtype inference is not applied) - one of the values of rdf:type is sh:PropertyConstraint, so that will be used. > > 8/ Unknown. There is an explicit rdf:type link to sh:PropertyConstraint so > the constraint has a valid type. However, the constraint is an > instance of both sh:PropertyConstraint and sh:InversePropertyConstraint. > > @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . > @prefix sh: <http://www.w3.org/ns/shacl#> . > @prefix ex: <http://ex.com/> . > > ex:subClassOf rdfs:subPropertyOf rdfs:subClassOf . > ex:InversePropertyConstraint ex:subClassOf sh:InversePropertyConstraint . > > ex:s1 a sh:Shape ; > sh:Property [ rdf:type sh:PropertyConstraint ; > rdf:type ex:InversePropertyConstraint ; > sh:predicate ex:p ; > sh:nodeKind sh:IRI ] . This is valid as 7 is, and rdfs:subPropertyOf rdfs:subClassOf is ignored (because we don't claim RDFS inferencing will be used). > > > The situation with sh:constraint is even more murky, as its name seems to > indicate that its natural range should be sh:Constraint but instead it is > sh:NodeConstraint. sh:constraint will also be the place for extensions, e.g. sh:SPARQLConstraint. Furthermore, it should be legal to use it for sh:PropertyConstraints - the meaning being similar to sh:property but with a different intent: sh:property declares a "relevant" property for that shape, while sh:constraint would merely add a constraint in case that property happens to be used (but it's not a relevant or recommended property). Overall, if you have specific suggestions on what is missing, please send instructions on what needs to be edited. Holger
Received on Friday, 8 April 2016 00:54:00 UTC