- From: Peter F. Patel-Schneider <pfpschneider@gmail.com>
- Date: Wed, 20 Jun 2018 09:34:16 -0700
- To: Irene Polikoff <irene@topquadrant.com>
- Cc: public-shacl@w3.org
I would say that the main feature of a compact syntax is that it is compact. If the desire is for a syntax with maximum user friendliness then call it a "user friendly syntax" and don't worry whether it is compact or not. If compactness is not the ultimate goal then the ShExC syntax is a worthy candidate. It would have to be slightly modified but it does have most of the required constructs. The syntax I was referring to is the syntax on page 9 of the tech report version of the paper. peter On 06/20/2018 08:25 AM, Irene Polikoff wrote: > Thanks Peter. > > I see the “user friendliness” of the compact syntax as its main feature. > Would you agree? > > I looked at the paper and compact syntax that may be proposed in it was not > clear to me. Can you provide some examples? > > One issue that I see is that SHACL is very rich and expressive. There is > typically a conflict between rich/expressive/comprehensive and simple/easy > to use. > > It may be that the compact syntax optimized for ease of learning and use > would not support full expressivity. In principle, multiple compact syntaxes > could be supported - just like RDF has multiple serializations. However, if > it was possible to define a syntax that is very user friendly, compact and > has full expressivity, this would be great. > > Here is what I mean by the user friendly syntax. > > Below is a pure, not extended GraphQL schema example: > > # A user account > type User { > name: String! > age: Int > gender: Gender > purchases: [Purchase] > } > > type Purchase { > # The internal ID > productId: String! > } > > enum Gender { > FEMALE > MALE > } > The expressivity is less than SHACL - basically, one can describe datatypes > and some aspects of cardinality constraints. > > However, GraphQL has a “directives” extension point. Using it, we can > define, for example,: > > # A user account > type User { > name: String! > age: Int @shape(minInclusive: 18) > gender: Gender > purchases: [Purchase] > } > > type Purchase { > # The internal ID > productId: String! @shape(minLength: 8, pattern: "[0-9]+") > } > > enum Gender { > FEMALE > MALE > } > This would still be valid GraphQL syntax. The extension elements do not > break standard GraphQL parsers and tools. > > The definition above would then be equivalent to the following SHACL shapes > in Turtle: > ex:User > a sh:NodeShape ; > rdfs:comment "A user account" ; > sh:property [ > sh:path ex:name ; > sh:datatype xsd:string ; > sh:maxCount 1 ; > sh:minCount 1 ; > sh:order 0 ; > ] ; > sh:property [ > sh:path ex:age ; > sh:datatype xsd:integer ; > sh:maxCount 1 ; > sh:minInclusive 18 ; > sh:order 1 ; > ] ; > sh:property [ > sh:path ex:gender ; > sh:maxCount 1 ; > sh:node ex:Gender ; > sh:order 2 ; > ] ; > sh:property [ > sh:path ex:purchases ; > sh:node ex:Purchase ; > sh:order 3 ; > ] . > > ex:Purchase > a sh:NodeShape ; > sh:property [ > sh:path ex:productId ; > sh:datatype xsd:string ; > sh:description "The internal ID" ; > sh:maxCount 1 ; > sh:minCount 1 ; > sh:minLength 8 ; > sh:pattern "[0-9]+" ; > sh:order 0 ; > ] . > > ex:Gender > a sh:NodeShape ; > sh:in ( "FEMALE" "MALE" ) . > We have this working already and in use with extensive models that contain > thousands of shapes. > > Regards, > > Irene > >> On Jun 19, 2018, at 2:45 PM, Peter F. Patel-Schneider >> <pfpschneider@gmail.com <mailto:pfpschneider@gmail.com>> wrote: >> >> The paper "Semantics and Validation of Recursive SHACL" >> by Julien Corman, Juan L. Reutter, and Ognjen Savković has the beginnings >> of a compact >> syntax for SHACL. It looks quite good to me. >> >> An extended version of the paper is available at >> https://www.inf.unibz.it/krdb/KRDB%20files/tech-reports/KRDB18-01.pdf >> >> peter >> >> >> >> On 06/19/2018 07:36 AM, Irene Polikoff wrote: >>> One of the capabilities for SHACL that is not yet standardized is a compact >>> syntax. As part of the WG effort, a draft of the proposed compact syntax was >>> developed, but, due to the time constraints, finalizing this work was deemed >>> out of scope and to be addressed in the community group. >>> >>> In the last 6 months or so we, at TopQuadrant, have been experimenting with >>> the use of GraphQL and GraphQL schemas. GraphQL is already widely used and >>> interest in it is rapidly growing. We see its design and capabilities as >>> well aligned with SHACL, making it possible (among other things) to use >>> GraphQL as a compact syntax for SHACL. >>> >>> Results of our work will be presented in upcoming >>> webinars: https://www.topquadrant.com/graphql-webinar/ this Thursday June >>> 21st (9 am EDT) and also next week, Friday, June 29th (4pm EDT) - 2 >>> timeslots are available to better accommodate different time zones. However, >>> both webinars will cover the same content. >>> >>> If you are interested in this topic, please join the webinars and provide >>> feedback. >>> >>> Regards, >>> >>> Irene Polikoff >> >
Received on Wednesday, 20 June 2018 16:34:44 UTC