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

Re: ACTION: ericP to send proposal for sh:Stem in response to ISSUE-80

From: Peter F. Patel-Schneider <pfpschneider@gmail.com>
Date: Thu, 10 Mar 2016 14:15:51 -0800
To: Eric Prud'hommeaux <eric@w3.org>
Cc: public-data-shapes-wg@w3.org
Message-ID: <56E1F217.6040806@gmail.com>
[With syntax fixes.]

On 03/10/2016 12:35 PM, Eric Prud'hommeaux wrote:
> * Peter F. Patel-Schneider <pfpschneider@gmail.com> [2016-03-10 11:35-0800]
>> I think that stem1 - stem2
>> is
>> [ sh:pattern "stem1*" ;
>>   sh:not [ sh:pattern "stem2*" ] ]
> 
> Yeah, I buy that. Here's a more exhaustive example:
>   ~<stem1> - ~<stem2> - ~<stem2> - <uri3> # read as ((5-2)-1), not (5-(2-1))
> or
> [ sh:pattern "stem1*" ;
>   sh:and [ sh:not [ sh:pattern "stem2*" ] ]
>          [ sh:not [ sh:pattern "stem3*" ] ]
>          [ sh:not [ sh:hasValue <iri3> ] ] ]
> 
> Can you correct that?
> 
> 
>> peter

This looks OK, assuming that the ~<> are syntactic markers.  If the <> are
part of the IRI then add them to the patterns.

peter

>>
>>
>> On 03/09/2016 12:01 PM, Eric Prud'hommeaux wrote:
>>> Oops, forgot about this action.
>>>
>>> In general, stems look like this in ShExC:
>>>
>>> <http://a.example/S1> {
>>>    <http://a.example/p1> [<http://a.example/v>~]
>>> }
>>>
>>> this in ShExJ:
>>>
>>> {
>>>   "type": "Schema",
>>>   "prefixes": {},
>>>   "shapes":{
>>>     "http://a.example/S1": {
>>>       "type": "Shape",
>>>       "expression": {
>>>         "type": "TripleConstraint",
>>>         "predicate": "http://a.example/p1",
>>>         "valueExpr": {
>>>           "type": "ValueClass", "values": [
>>>             { "type": "StemRange",
>>>               "stem": "http://a.example/v"
>>>             }
>>>           ]
>>>         }
>>>       }
>>>     }
>>>   }
>>> }
>>>
>>> and this in RDF:
>>>
>>> [ a shex:Schema ;
>>>   shex:shape <http://a.example/S1> ] .
>>>
>>> <http://a.example/S1>
>>>   a shex:Shape ;
>>>   shex:expression [
>>>     a shex:TripleConstraint ;
>>>     shex:predicate <http://a.example/p1> ;
>>>     shex:valueExpr [
>>>       a shex:ValueClass ;
>>>       shex:values [
>>>         a shex:StemRange ;
>>>         shex:stem <http://a.example/v>
>>>       ]
>>>     ]
>>>   ] .
>>>     
>>> We also have stem (- stem)* a la
>>>
>>> <http://a.example/S1> {
>>>    <http://a.example/p1> [<http://a.example/v>~
>>>                           - <http://a.example/v1>~
>>>                           - <http://a.example/v2>~
>>>                           - <http://a.example/v3>~]
>>> }
>>>
>>> and
>>>
>>> {
>>>   "type": "Schema",
>>>   "prefixes": {},
>>>   "shapes":{
>>>     "http://a.example/S1": {
>>>       "type": "Shape",
>>>       "expression": {
>>>         "type": "TripleConstraint",
>>>         "predicate": "http://a.example/p1",
>>>         "valueExpr": {
>>>           "type": "ValueClass", "values": [
>>>             { "type": "StemRange",
>>>               "stem": "http://a.example/v",
>>>               "exclusions": [
>>>                 { "type": "Stem", "stem": "http://a.example/v1"},
>>>                 { "type": "Stem", "stem": "http://a.example/v2"},
>>>                 { "type": "Stem", "stem": "http://a.example/v3"}
>>>               ]
>>>             }
>>>           ]
>>>         }
>>>       }
>>>     }
>>>   }
>>> }
>>>
>>> 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.
>>>
> 
Received on Thursday, 10 March 2016 22:16:22 UTC

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