- From: Jim Amsden <jamsden@us.ibm.com>
- Date: Tue, 12 Apr 2016 09:59:43 -0400
- To: public-data-shapes-wg@w3.org
- Message-Id: <201604121400.u3CE018e018120@d01av03.pok.ibm.com>
Karen, Thanks for the review and comments. Regarding SHOULD/MUST, in the absence of any motivating discussion I just stuck with what was already there. Regarding the notion of abstract in the context of open-world assumptions, SHOULD could be motivated to maximize flexibility, and to allow different constraint spaces on the same vocabulary/graphs to co-exist. That is, if one usage pattern required the abstract constraint to be an error while another didn't, this wouldn't limit the ability to have the triples and generate a warning. But we should follow the same pattern as any other SHACL constraint. If they are all MUST, then this one should be a MUST too. I agree the second sentence is redundant. Jim Amsden, Senior Technical Staff Member OSLC and Linked Lifecycle Data 919-525-6575 From: Karen Coyle <kcoyle@kcoyle.net> To: public-data-shapes-wg@w3.org Date: 04/11/2016 06:12 PM Subject: Re: ISSUE-78: Proposal for Abstract Classes Constraint Jim, I assume that if a data set or graph being validated has an instantiation of an abstract class, then that would be considered an error. In that case, I think that "SHOULD not be instantiated" has to be "MUST not be instantiated" or there is nothing to base error checking on. I'm also confused about this, which appears in both versions: Every instance of > an abstract class /SHOULD/also have an rdf:type triple to a non-abstract > subclass of the abstract class. Again this would need to be MUST, not SHOULD. But it also seems redundant with what has already been said, and I'm not sure it is necessary. kc On 4/11/16 11:02 AM, Jim Amsden wrote: > re: ISSUE-78: Abstract Classes > < https://www.w3.org/2014/data-shapes/wiki/Proposals#ISSUE-78:_Abstract_Classeshttps://www.w3.org/2014/data-shapes/wiki/Proposals >: > There is no use case or requirement for SHACL to support abstract > classes, but _the issue_ > <https://www.w3.org/2014/data-shapes/track/issues/78>provides reasonable > motivation and the votes on the issue are >0. > > The current spec contains the following paragraph in section 2.1.2.1 > Implicit Class Scopes: > > Classes may be declared to be abstract by setting their property > sh:abstract to true. Abstract classes /SHOULD/not be instantiated > directly, i.e. every instance of an abstract class /SHOULD/ also have an > rdf:type triple to a non-abstract subclass of the abstract class. > > where "Classes" references sh:ShapeClass. The concept of abstract class > could instead be expressed as a node constraint. This would allow a > class to be abstract or concrete in different situations based on the > domain needs. > > Proposal: > > Remove the paragraph about abstract classes from section 2.1.2.1. > > Add sh:abstract to the table in section 3 and indicate that it is a > sh:NodeConstraint. > > Add section 3.10 Abstract Class Constraint > > Classes may be constrained to be abstract by creating a node constraint > with class scope, and including the sh:isAbstract property set to true. > Abstract classes /SHOULD/not be instantiated directly. Every instance of > an abstract class /SHOULD/also have an rdf:type triple to a non-abstract > subclass of the abstract class. > > #Example abstract class constraint: > > ex:AnAbstractClassConstraint > a sh:Shape ; > sh:scopeNode ex:AnAbstractClass ; > sh:isAbstract true . > > #Example graph data > > ex:AnAbstractClass > a rdfs:Class ; > dcterms:title "Example of an abstract class constraint." . > > Jim Amsden, Senior Technical Staff Member > OSLC and Linked Lifecycle Data > 919-525-6575 > -- Karen Coyle kcoyle@kcoyle.net http://kcoyle.net m: 1-510-435-8234 skype: kcoylenet/+1-510-984-3600
Received on Tuesday, 12 April 2016 14:00:35 UTC