- From: Holger Knublauch <holger@topquadrant.com>
- Date: Fri, 1 Apr 2016 09:34:08 +1000
- To: public-data-shapes-wg@w3.org
+1 to Dimitris comment on using the current syntax (I strongly object to
Peter's list-based syntax).
On 1/04/2016 1:55, Peter F. Patel-Schneider wrote:
> On 03/30/2016 03:03 PM, Eric Prud'hommeaux wrote:
>
>> PROPOSAL: write stems in shacl like:
>>
>> <http://a.example/S1> a sh:Shape;
>> sh:propValues (
>> <http://a.example/p1> [
>> sh:values [
>> a sh:StemRange;
>> shex:stem <http://a.example/v>
>> ]
>> ]
>> ).
>>
>> This matches { <s1> <http://a.example/p1> <http://a.example/v123> }
>> and { <s1> <http://a.example/p1> <http://a.example/v> }
>> but fails { <s1> <http://a.example/p1> <http://a.example/uv> }
> The following syntax might be better:
>
> ex:S1 a sh:Shape;
> sh:propValues (
> <http://a.example/p1>
> [ a sh:Shape ;
> sh:stem <http://a.example/v>
> ] ) .
>
> or, in the current SHACL syntax:
>
> ex:S1 a sh:Shape;
> sh:property
> [ a sh:Shape ;
> sh:predicate <http://a.example/p1> ;
> sh:stem <http://a.example/v>
> ].
>
> I appears to me that this is equivalent to
>
> ex:S1 a sh:Shape;
> sh:property
> [ a sh:Shape ;
> sh:predicate <http://a.example/p1> ;
> sh:nodeKind sh:IRI ;
> sh:pattern "^http://a.example/v"
> ].
>
>
>> PROPOSAL: write exclusions in shacl like:
>>
>> <http://a.example/S1> a sh:Shape;
>> sh:propValues (
>> <http://a.example/p1> [
>> sh:values [
>> a sh:StemRange;
>> shex:stem <http://a.example/v>
>> sh:exclusions: (
>> [ "type": "Stem", "stem": <http://a.example/v1> ],
>> [ "type": "Stem", "stem": <http://a.example/v2> ],
>> [ "type": "Stem", "stem": <http://a.example/v3> ]
>> )
>> ]
>> ]
>> ).
>>
>> This matches { <s1> <http://a.example/p1> <http://a.example/v4> }
>> and { <s1> <http://a.example/p1> <http://a.example/v456> }
>> but fails { <s1> <http://a.example/p1> <http://a.example/v2> }
>> and { <s1> <http://a.example/p1> <http://a.example/v234> }
> It appears to me that this is equivalent to
>
> ex:S1 a sh:Shape;
> sh:propValues ( <http://a.example/p1>
> [ a sh:Shape ;
> sh:nodeKind sh:IRI ;
> sh:pattern "^http://a.example/v" ;
> sh:not [ a sh:Shape ; sh:pattern "^http://a.example/v1" ] ;
> sh:not [ a sh:Shape ; sh:pattern "^http://a.example/v2" ] ;
> sh:not [ a sh:Shape ; sh:pattern "^http://a.example/v3" ]
> ] ) .
>
> (because of the repeated sh:not the current syntax for this would be quite large).
I had raised an issue recently to discuss whether we want to allow
multiple sh:not values, and I am OK with such use cases too.
Holger
>
>
>>> You can find the stem tests in <http://raw.githubusercontent.com/shexSpec/shexTest/master/validation/manifest.ttl> with
>>>
>>> SELECT * { ?s <http://www.w3.org/ns/shacl/test-suite#trait> <http://www.w3.org/ns/shacl/test-suite#Stem> }
>>>
>>> Gotta put my child to bed. will try to write to formalize later.
>>> --
>>> -ericP
Received on Thursday, 31 March 2016 23:34:39 UTC