- 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
[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