- From: Irene Polikoff <irene@topquadrant.com>
- Date: Fri, 4 Sep 2015 22:27:55 -0400
- To: "kcoyle@kcoyle.net" <kcoyle@kcoyle.net>
- Cc: "public-data-shapes-wg@w3.org" <public-data-shapes-wg@w3.org>
Personally, I find a sentence "Language for determining if a graph validates against certain shapes" hard to parse and puzzling as a starting point. First, the notion of a shape is not introduced. Then, 'language for determining if something validates' on its own sounds strange to me - certainly, a language by itself doesn't determine if a graph validates. Some software program does and the language enables that. This is why I proposed 'Language for specifying data shapes' as a start. At least it introduces a shape as something that is specified using this language. Whether the rest of the sentence says 'and determining if a graph validates' or 'and determining if a graph conforms' is of lesser importance to me. Irene Sent from my iPhone > On Sep 4, 2015, at 2:18 PM, Karen Coyle <kcoyle@kcoyle.net> wrote: > > Although considerably shorter than the current section 1, I feel that the "Motivation" information would belong elsewhere - not in the specification itself. Perhaps the primer? But in much less detail, IMO. So I'm a +1 for Peter's text. Also, I prefer his "validates against shapes" to the "conforms" language suggested by Irene. Validates is clearer and more specific than "conforms." > > kc > >> On 9/3/15 6:40 PM, Peter F. Patel-Schneider wrote: >> This would replace the entirety of the abstract and Section 1. >> >> peter >> >> >>> On 09/03/2015 06:38 PM, Holger Knublauch wrote: >>> Could you clarify which section this is supposed to replace? It looks similar >>> to 1.2 but covers much less material and fewer details. >>> >>> Thanks >>> Holger >>> >>> >>>> On 9/4/15 10:43 AM, Peter F. Patel-Schneider wrote: >>>> I put together an introduction to the SHACL document that I think is much >>>> better than the current one. It presents a short description of the major >>>> aspects of SHACL and then goes into a non-controversial example,.taken from >>>> the SHACL primer and slightly modified. >>>> >>>> There are other parts of the SHACL document that also have bad introductory >>>> material. This new introduction does not, for example. alleviate the need for >>>> some good introductory material about scopes and filters or about the >>>> relationship between SHACL and SPARQL. >>>> >>>> peter >>>> >>>> >>>> >>>> >>>> >>>> >>>> SHACL (Shapes Constraint Language) is a language for determining whether an >>>> RDF graph (possibly in an RDF dataset) validates against certain shapes. >>>> For example, SHACL can be used to check whether all the nodes in an RDF >>>> graph that have a type link to foaf:Person have a single value for foaf:mbox >>>> and that that value is an IRI. SHACL can also be used to check whether a >>>> particular node in an RDF graph, say the node ex:bug1, has at least one >>>> value for ex:reportedBy and all such values have an rdf:type link to >>>> foaf:Person. In doing this checking, SHACL only looks at the triples that >>>> are in the graph. >>>> >>>> The most general interface to SHACL has two arguments. The first argument >>>> is an RDF graph (in an RDF dataset) that contains the data that is to be >>>> validated, which is called the data graph. The second argument consists of >>>> the shapes and other information that control what validation is to be done. >>>> This control information can be itself encoded as an RDF graph, which is >>>> called the control graph. >>>> >>>> So in SHACL one might want to determine whether RDF graphs contain >>>> information about issues and users, such as each issue is in either an >>>> unasssigned or an assigned state, and each issue has a reporter and each >>>> such reporter has a precisely one string name and one or more IRI mailboxes. >>>> >>>> A control graph that does this validation has two shapes. The first, >>>> my:IssueShape contains the two constraints on issues. The second, >>>> my:UserShape, contains the two constraints on reporters. The first shape >>>> also contains scope information that here says that its constraints are to >>>> be validated against all nodes that have an rdf:type link to ex:Issue. >>>> >>>> my:IssueShape a sh:Shape ; >>>> sh:classScope ex:Issue; >>>> sh:property [ >>>> sh:predicate ex:state ; >>>> sh:allowedValue (ex:unassigned ex:assigned) ; >>>> sh:minCount 1 ; sh:maxCount 1 >>>> ] ; >>>> sh:property [ >>>> sh:predicate ex:reportedBy ; >>>> sh:valueShape my:UserShape ; >>>> sh:minCount 1 ; sh:maxCount 1 >>>> ] . >>>> >>>> my:UserShape a sh:Shape ; >>>> sh:property [ >>>> sh:predicate foaf:name ; >>>> sh:valueType xsd:string ; >>>> sh:minCount 1 ; sh:maxCount 1 >>>> ] ; >>>> sh:property [ >>>> sh:predicate foaf:mbox ; >>>> sh:nodeKind sh:IRI ; >>>> sh:minCount 1 >>>> ] . >>>> >>>> The following data graph might be validated against this control graph >>>> >>>> inst:Issue1 a ex:Issue ; >>>> ex:state ex:unassigned ; >>>> ex:reportedBy inst:User2 . >>>> >>>> inst:User2 a foaf:Person ; >>>> foaf:name "Bob Smith" ; >>>> foaf:mbox <mailto:bob@example.org> ; >>>> foaf:mbox <mailto:rs@example.org> . >>>> >>>> inst:Issue3 a ex:Issue ; >>>> ex:state ex:unsinged ; >>>> ex:reportedBy inst:User4 . >>>> >>>> inst:User4 a foaf:Person ; >>>> foaf:name "Bob Smith", "Robert Smith" ; >>>> foaf:mbox <mailto:bob@example.org> ; >>>> foaf:mbox <mailto:rs@example.org> . >>>> >>>> The SHACL validation would validate my:IssueShape against inst:Issue1 and >>>> inst:Issue3. Validating the first node would determine that inst:Issue1 >>>> satisfies the constraints in my:IssueShape, along the way determining that >>>> inst:User2 satisfies the constraints in my:UserShape. Validating the second >>>> node would determine that inst:Issue3 violates the constraint on values for >>>> ex:state, because ex:unsigned is not in the list of allowed values, and also >>>> violates the constraint on values for ex:reportedBy, because inst:User4 >>>> violates the my:UserShape constraint on the maximum number of values for >>>> foaf:name. > > -- > Karen Coyle > kcoyle@kcoyle.net http://kcoyle.net > m: 1-510-435-8234 > skype: kcoylenet/+1-510-984-3600 >
Received on Saturday, 5 September 2015 02:28:28 UTC