- From: Holger Knublauch <holger@topquadrant.com>
- Date: Wed, 10 Jun 2015 12:34:31 +1000
- To: "public-data-shapes-wg@w3.org" <public-data-shapes-wg@w3.org>
Arthur, on the second part of your proposal (scope), I believe there is
also a fairly clean solution based on the new sh:scope scoping mechanism
(assuming it gets approved). One could say
ex:MyShape
sh:scope [
a sh:DirectTypeScope .
sh:type ex:Person .
] ;
sh:constraint ...
which is equivalent to
ex:MyShape
sh:scope [
sh:sparql "?this rdf:type ex:Person"
] ;
sh:constraint ...
I could live better with such a generic, soft-coded solution than a new
keyword that needs to be hard-coded into all engines.
If that's acceptable to you, this would leave the question of
sh:valueType vs. sh:valueClass. I'd be happy to be convinced there - I
just haven't seen such cases in practice. I would again be OK with a
soft-coded solution, e.g. based on sh:valueShape / sh:hasValue instead
of requiring a new keyword.
Holger
On 6/10/2015 10:40, Holger Knublauch wrote:
> Thanks for responding.
>
> On 6/10/2015 10:23, Arthur Ryman wrote:
>> Holger,
>>
>> Sorry for the delay. I've been away. Peter and I discussed this issue
>> last month in this thread: [1]. Your summary aligns well with that
>> discussion, except for one omitted point which I'll summarize here.
>>
>> I feel that it is important to give the user control over when
>> rdfs:subClassOf* is used.
>
> I am unconvinced that the distinction that you point out is important
> enough to warrant new core language keywords (with the corresponding
> overhead for implementers, documentation and users). I believe it
> violates the assumptions of most users if we do not by default apply
> subclass inferencing here. Furthermore, once graph-level inferencing
> is activated, the system can no longer distinguish those cases anyway,
> and your new properties would behave exactly like the other pair.
> Also, the work-around to avoid class inheritance in scopes is to use
> sh:nodeShape instead of relying on rdf:type, so I believe sh:scopeType
> is unnecessary.
>
> I would like to understand why you believe this distinction is so
> important. Do you have cases where only a direct instance is allowed
> but none of the subclasses? How common are those cases that they
> require a core language construct?
>
> Thanks
> Holger
>
>
>> We could do this by providing matched pairs
>> of properties. I proposed the following:
>>
>> 1. No inferencing - match rdf:type directly
>> sh:valueType
>> sh:scopeType
>
>>
>> 2. Follow rdfs:subClassOf triples (match the SPARQL property path
>> rdf:type/rdfs:subClassOf*)
>> sh:valueClass
>> sh:scopeClass
>>
>> This proposal has the advantage of using the suffixes "Type" and
>> "Class" consistently. We use "Type" to mean exactly matching rdf:type.
>> We use "Class" to mean matching rdf:type/rdfs:subClassOf*.
>>
>> People who want subclass inferencing will use the pair sh:valueClass
>> and sh:scopeClass. People who want exact rdf:type matching will use
>> the pair sh:valueType and sh:valueClass.
>>
>> [1]
>> https://lists.w3.org/Archives/Public/public-data-shapes-wg/2015May/0109.html
>>
>> -- Arthur
>>
>> On Thu, Jun 4, 2015 at 8:37 PM, Holger Knublauch
>> <holger@topquadrant.com> wrote:
>>> Arthur and I had this action, which somehow fell through the cracks
>>> although
>>> I had included my proposal below already into the draft:
>>>
>>> My proposal (not coordinated with Arthur yet) would be:
>>>
>>> 1) SHACL cannot consistently rely on any graph-level inferencing to be
>>> available for the given graphs (for various technical reasons).
>>>
>>> 2) SHACL should rely on engine-level inferencing that walks the
>>> rdfs:subClassOf triples where needed, e.g. by generating appropriate
>>> SPARQL
>>> queries:
>>> a) sh:valueType must also accept subclasses of the given class (e.g.
>>> via
>>> rdfs:subClassOf*) [1]
>>> b) sh:scopeClass also applies to subclasses (i.e. constraints
>>> defined for a
>>> superclass also apply to instances of the subclass) [2]
>>>
>>> 3) SPARQL queries can be annotated with sh:sparqlEntailment to
>>> assert the
>>> presence of a given SPARQL entailment regime [3]
>>>
>>> Given that my task here was just to write down a proposal, I
>>> consider the
>>> ACTION-26 done unless Arthur disagrees.
>>>
>>> Thanks,
>>> Holger
>>>
>>> [1]
>>> http://w3c.github.io/data-shapes/shacl/#sparql-AbstractValueTypePropertyConstraint
>>>
>>> [2] http://w3c.github.io/data-shapes/shacl/#operation-validateNode
>>> [3] http://w3c.github.io/data-shapes/shacl/#sparql-entailment
>>>
>>>
>>> On 5/21/2015 4:12, RDF Data Shapes Working Group Issue Tracker wrote:
>>>> shapes-ACTION-26: Draft a proposal for issue-1 (with holger)
>>>>
>>>> http://www.w3.org/2014/data-shapes/track/actions/26
>>>>
>>>> Assigned to: Arthur Ryman
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>
>
Received on Wednesday, 10 June 2015 02:36:46 UTC