W3C home > Mailing lists > Public > public-data-shapes-wg@w3.org > January 2016

Re: Constraints metamodel draft

From: Holger Knublauch <holger@topquadrant.com>
Date: Sat, 30 Jan 2016 16:22:49 +1000
To: "public-data-shapes-wg@w3.org" <public-data-shapes-wg@w3.org>
Message-ID: <56AC56B9.3030600@topquadrant.com>
(Sorry to revive this old thread)

On 16/12/2015 1:34 AM, Arthur Ryman wrote:
> Holger,
>
> Your proposal seems to invert the intuitive class hierarchy. "Image 3
> shows two examples of such sh:ConstraintTypes (sh:MinCountConstraint
> and sh:PatternConstraint). They serve as superclasses of
> sh:PropertyConstraint etc so that their properties can be accumulated
> in a single node. As you can see, the structure of constraint types
> such as sh:MinCountConstraint can be reused in multiple places."
>
> It is more natural that specific constraints are subclasses of more
> general constraints.  You seem to pick this inverted design as a way
> to inject parameters. However, I think that is not the natural use of
> subclassing in RDFS.

I see nothing unusual in that design, it's just multiple-inheritance to 
me. Also, many class structures use intermediate classes to group 
together things that logically belong together.

Holger


>
> -- Arthur
>
> On Sat, Nov 21, 2015 at 6:31 AM, Holger Knublauch
> <holger@topquadrant.com> wrote:
>> This is in continuation of my email [1] in which I have outlined a simpler
>> constraints metamodel that can serve as a "schema" for SHACL that is
>> friendly both to RDFS/OWL and SHACL tools.
>>
>> The attached file is a quick draft for an RDFS model of SHACL shapes and
>> constraints. I have also attached a few diagrams to explain how this would
>> work.
>>
>> Image 1 illustrates the classes sh:Shape and sh:Constraint, with its 3
>> subclasses for property, inverseProperty and general node constraints).
>>
>> Image 2 introduces the class sh:ConstraintType (similar to Arthur's
>> Assertion class, aka templates), which groups together the arguments of a
>> constraint type (such as sh:minCount for sh:MinCountConstraint).
>> Furthermore, ConstraintTypes link to Validators, which provide the
>> executable semantics. SPARQL is one kind of validators,
>> NodeValidationFunction is another:
>>
>> - General SPARQL validators can contain an arbitrary SELECT query, returning
>> one row for each violation. That is needed for complex cases like
>> sh:minCount, QCRs, and sh:hasValue
>> - NodeValidationFunctions are simplified ASK queries that take a single node
>> as parameter and check whether that node matches a condition, e.g. a given
>> regular expression sh:pattern.
>>
>> Image 3 shows two examples of such sh:ConstraintTypes (sh:MinCountConstraint
>> and sh:PatternConstraint). They serve as superclasses of
>> sh:PropertyConstraint etc so that their properties can be accumulated in a
>> single node. As you can see, the structure of constraint types such as
>> sh:MinCountConstraint can be reused in multiple places.
>>
>> Regards,
>> Holger
>>
>> [1[
>> https://lists.w3.org/Archives/Public/public-data-shapes-wg/2015Nov/0163.html
>>
Received on Saturday, 30 January 2016 06:23:27 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 19:30:29 UTC