- From: Eric Prud'hommeaux <eric@w3.org>
- Date: Wed, 30 Mar 2016 18:03:55 -0400
- To: public-data-shapes-wg@w3.org
PROPOSAL: add stem in * Eric Prud'hommeaux <eric@w3.org> [2016-03-09 15:01-0500] > 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> > ] > ] > ] . 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> } > 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"} > ] > } > ] > } > } > } > } > } 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> } > 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 > > office: +1.617.599.3509 > mobile: +33.6.80.80.35.59 > > (eric@w3.org) > Feel free to forward this message to any list for any purpose other than > email address distribution. > > There are subtle nuances encoded in font variation and clever layout > which can only be seen by printing this message on high-clay paper. -- -ericP office: +1.617.599.3509 mobile: +33.6.80.80.35.59 (eric@w3.org) Feel free to forward this message to any list for any purpose other than email address distribution. There are subtle nuances encoded in font variation and clever layout which can only be seen by printing this message on high-clay paper.
Received on Wednesday, 30 March 2016 22:03:59 UTC