- From: Holger Knublauch <holger@topquadrant.com>
- Date: Wed, 19 Nov 2014 16:35:54 +1000
- To: public-data-shapes-wg@w3.org
On 11/19/2014 9:47, Eric Prud'hommeaux wrote: > * Holger Knublauch <holger@topquadrant.com> [2014-11-06 09:38+1000] >> I think it's encouraging to read suggestions on how we could merge >> ideas from the various proposals, e.g. extend SPIN to make the >> scenario below easier to represent. This is always a possibility. Another attempt to resolve the class-vs-shapes discussion, thinking out loud. What if SPIN had a built-in function spin:violatesConstraints(?instance, ?shape) : xsd:boolean that takes an instance and a class definition, and checks whether the given instance fulfills all spin:constraints defined at that class. Then one could have :Submitter a rdfs:Class ; # or: shape:Shape rdfs:subClassOf foaf:Person ; # or: shape:subClassOf spin:constraint [ a shape:RequiredProperty ; shape:property foaf:givanName ] which is very similar to the stand-alone concept of a Shape, only that Shapes are also classes. (They could also be just declared to be shape:Shape which is not really a class but a pattern if that helps). If such a function would exist, it would be easy to define other constraint templates that verify conditions: :Issue spin:constraint [ a shape:RequiredProperty ; shape:property :submittedBy ; shape:requiredShape :Submitter ; ] which validates that the values of :submittedBy fulfill the constraints of :Submitter even if they do not have a matching rdf:type triple. In a sense, this also turns SPIN into a classification engine, in that it can take any instance and check whether it could be a valid instance of a given class. So this sounds like a useful extension anyway. (And thinking further, the function should not just be a property with a boolean but could also return the actual spin:ConstraintViolation triples so that they can be passed on into the surrounding constraint.) Would this bring us closer to common ground? Thanks, Holger
Received on Wednesday, 19 November 2014 06:38:38 UTC