- From: Holger Knublauch <holger@topquadrant.com>
- Date: Thu, 7 Nov 2019 13:17:53 +1000
- To: hans.teijgeler@quicknet.nl, "'Cox, Simon (L&W, Clayton)'" <Simon.Cox@csiro.au>, 'Simon Steyskal' <simon.steyskal@gmail.com>, 'Semantic Web' <semantic-web@w3.org>
- Message-ID: <bb225ef7-ab8e-d177-04fb-743437f68912@topquadrant.com>
Done: http://datashapes.org/templates.html Implemented (among others) on current SHACL API snapshot. This is a first simple version, so any feedback on how to evolve it further is appreciated. Holger On 6/11/2019 20:34, hans.teijgeler@quicknet.nl wrote: > > Hi Holger, > > Yes, there definitely is interest in that mechanism, so please add it > to the SHACL API. > > Regards. > > Hans > > 15926.org <http://15926.org/> > > ____________________________________________ > > *From:*Holger Knublauch <holger@topquadrant.com> > *Sent:* woensdag 6 november 2019 07:05 > *To:* Cox, Simon (L&W, Clayton) <Simon.Cox@csiro.au>; Simon Steyskal > <simon.steyskal@gmail.com>; Semantic Web <semantic-web@w3.org> > *Subject:* Re: [ANN] OTTR: RDF/OWL modelling framework release, ISWC > tutorial > > On 6/11/2019 15:06, Cox, Simon (L&W, Clayton) wrote: > > Thanks Simon – yeah, I had seen that and had a go at getting it > running in TBCME, but failed ☹ > > The doco didn’t help me get over that hump (a couple of years ago > now tho.) > > Just as a quick pointer: open > TopBraid/Examples/schemashacl-violations.ttl and press the Run > Inferences button. An example SPARQL rule is defined using sh:rule at > schema:Person. > > On the more general topic: given that SPARQL is a well-established > mechanism to construct triples, it makes sense to build RDF > vocabularies to share (reusable) SPARQL queries. SPIN contains a > concept of "templates" that are able to encapsulate parameterized > SPARQL queries, including CONSTRUCT queries. So it could indeed be > used to cover some of the requirements discussed in this thread here. > > However, SHACL rules would not currently be a suitable template > language. The charter of the original W3C data shapes WG was to define > a validation language, and adding rules as an extra deliverable was > already quite an effort. Having said this, most pieces of the puzzle > for using SHACL to describe CONSTRUCT templates are already in the > vocabulary, and it would be a straight-forward exercise to wrap them > into a template language. The main thing to introduce would be a class > such as > > dash:SPARQLConstructTemplate > rdf:type rdfs:Class ; > rdfs:comment "Encapsulates one or more SPARQL CONSTRUCT queries that > can be parameterized. Parameters will become pre-bound variables in > the queries." ; > rdfs:label "SPARQL CONSTRUCT template" ; > rdfs:subClassOf sh:Parameterizable ; > rdfs:subClassOf sh:SPARQLConstructExecutable ; > . > > which can then be instantiated as > > templatetest:CreateRootClassTemplate > rdf:type dash:SPARQLConstructTemplate ; > rdfs:comment "Creates a new OWL class as a subclass of Thing, with a > provided label." ; > rdfs:label "Create root class template" ; > sh:construct """ > CONSTRUCT { > ?class a owl:Class . > ?class rdfs:subClassOf owl:Thing . > ?class rdfs:label $label . > } > WHERE { > BIND (IRI(CONCAT(\"http://example.org/\" > <http://example.org/>, ENCODE_FOR_URI($label))) AS ?class) . > } > """ ; > sh:parameter [ > rdf:type sh:Parameter ; > sh:path templatetest:label ; > sh:datatype xsd:string ; > sh:description "The label of the new class." ; > sh:name "label" ; > ] ; > sh:prefixes <http://example.org/templatetest> > <http://example.org/templatetest> . > > You can see the vocabulary to declare parameters (sh:parameter, > sh:datatype etc) is already there in SHACL, as are the terms for > representing SPARQL queries (sh:construct, sh:prefixes etc), and the > pre-binding mechanism to use parameter values in the executing > queries. Such templates above could have multiple sh:construct values, > and we could add a simple mechanism to compose templates from other > templates, allowing to assemble templates like lego building blocks. > > If there is interest in such a mechanism, I could write it up some > more and add it to the SHACL API for execution. It would also become > one of the last missing pieces for users to transition from SPIN to SHACL. > > Regards, > Holger > > *From:* Simon Steyskal <simon.steyskal@gmail.com> > <mailto:simon.steyskal@gmail.com> > *Sent:* Wednesday, 6 November, 2019 15:54 > *To:* Martin G. Skjæveland <martige@ifi.uio.no> > <mailto:martige@ifi.uio.no>; Cox, Simon (L&W, Clayton) > <Simon.Cox@csiro.au> <mailto:Simon.Cox@csiro.au> > *Cc:* Chris Mungall <cjmungall@lbl.gov> > <mailto:cjmungall@lbl.gov>; Dan Brickley <danbri@danbri.org> > <mailto:danbri@danbri.org>; Martynas Jusevičius > <martynas@atomgraph.com> <mailto:martynas@atomgraph.com>; Semantic > Web <semantic-web@w3.org> <mailto:semantic-web@w3.org>; > holger@topquadrant.com <mailto:holger@topquadrant.com> > *Subject:* Re: [ANN] OTTR: RDF/OWL modelling framework release, > ISWC tutorial > > @Simon Cox <mailto:simon.cox@csiro.au> > > > SPIN had the advantage that it supported SPARQL CONSTRUCT. > > This is still hinted at in SHCAL but I haven’t found it > implemented. > > @Martin G. Skjæveland <mailto:martige@ifi.uio.no> > > > As already pointed out in this thread, SHACL and ShEX, as constraint > > languages, do not support /generating/ patterns, "only" describing > > them. SPIN on the other hand is a more generic language that as > a rule > > language also supports generating patterns. > > SHACL Rules (similar to SPIN Rules): > > Defined here -> https://www.w3.org/TR/shacl-af/#rules (not part of > the core SHACL Rec., but published as W3C Note) > > Implemented e.g., by TopBraid's SHACL API -> > https://github.com/TopQuadrant/shacl > > (pinging @Holger Knublauch <mailto:holger@topquadrant.com> for > that matter) > > - simon > > Am Di., 5. Nov. 2019 um 20:31 Uhr schrieb Martin G. Skjæveland > <martige@ifi.uio.no <mailto:martige@ifi.uio.no>>: > > As already pointed out in this thread, SHACL and ShEX, as > constraint > languages, do not support /generating/ patterns, "only" describing > them. SPIN on the other hand is a more generic language that > as a rule > language also supports generating patterns. > > OTTR has a more narrow focus than SPIN, aiming to be language for > representing reusable modelling patterns for RDF and OWL. These > templates are intended to be made available in libraries of > interconnected templates. OTTR templates are compositional in > design, > meaning a template is defined based on other templates -- "it's > templates all the way down". A template instance is > "transformed" to > RDF by recursively expanding the instance to instances of the > /base > template/ ottr:Triple, which represents an RDF triple. The > relative > simple structure of OTTR templates permits automatic analysis of > template libraries to discover possibly unwanted redundancies like > overlap or containment between templates. Other possibly > distinguishing features of OTTR are a custom-built type system > that is > used to type check template definitions and instances and can for > instance be used to disallow punning, and list arguments to > support > variable length arguments. > > This is an example of an OTTR template representing a pattern > implicitly used in the Pizza ontology: > > ex:NamedPizza [ owl:Class ?pizza, > ? owl:NamedIndividual ?country, > NEList<ottr:IRI> ?toppings] :: { > ax:SubClassOf(?pizza, ex:NamedPizza), > ax:SubObjectHasValue(?pizza, ex:hasCountryOfOrigin, ?country), > ax:SubObjectAllValuesFrom(?pizza, ex:hasTopping, > _:toppingsUnion), > rstr:ObjectUnionOf(_:toppingsUnion, ?toppings), > cross | ax:SubObjectSomeValuesFrom(?pizza, ex:hasTopping, > ++?toppings) > } . > > and these are two instances of the template: > > ex:NamedPizza(ex:Margherita, ex:Italy, (ex:Mozzarella, > ex:Tomato)) . > ex:NamedPizza(ex:Hawaii, none, (ex:Cheese, ex:Ham, > ex:Pineapple)) . > > These are found in the interactive examples on > http://ottr.xyz. Click > "Run" to see their expansion. > > OTTR at its core does not support manipulating terms, e.g., > concatenating two strings to form a URI. While this is of course a > necessary feature, we believe it should not be part of the > *modelling > pattern* as this makes the pattern description in many cases too > specific to the input data. Data cleansing and preparation we > believe > should be placed outside the template. (To support data > ingestion, we > have introduced a simple mapping language that translates query > answers to OTTR template instances --- allowing for data > preparation > in the query over the sources, see > http://spec.ottr.xyz/pOTTR/0.1/04-etl-bottr.html.) > > We believe that the design of OTTR makes these templates easy > to use > and maintain, but we have yet to evaluate this. Our belief is that > OTTR templates are well suited especially for large scale/long > term > ontology development as the availability of a well managed > library of > reusable and instantiable modelling patterns will pay off in > the long > run. An initial library of basic patterns are available, and > maintenance procedures for template libraries are in development. > > Martin > > On 05/11/2019 06:47, Cox, Simon (L&W, Clayton) wrote: > > SPIN had the advantage that it supported SPARQL CONSTRUCT. > > > > This is still hinted at in SHCAL but I haven’t found it > implemented. > > > > *From:* Chris Mungall <cjmungall@lbl.gov > <mailto:cjmungall@lbl.gov>> > > *Sent:* Tuesday, 5 November, 2019 12:25 > > *To:* Dan Brickley <danbri@danbri.org > <mailto:danbri@danbri.org>> > > *Cc:* Simon Steyskal <simon.steyskal@gmail.com > <mailto:simon.steyskal@gmail.com>>; Martin G. Skjæveland > > <martige@ifi.uio.no <mailto:martige@ifi.uio.no>>; Martynas > Jusevičius <martynas@atomgraph.com > <mailto:martynas@atomgraph.com>>; > > Semantic Web <semantic-web@w3.org <mailto:semantic-web@w3.org>> > > *Subject:* Re: [ANN] OTTR: RDF/OWL modelling framework > release, ISWC > > tutorial > > > > AFAIK shape languages can't be used in a generative > capacity. OTTR seems > > more in the family of templating languages such as OPPL[1], > ROBOT > > templates[2], or Dead Simple OWL Design Paterns[3] > > > > [1] https://github.com/owlcs/OPPL2 > > > > [2] http://robot.obolibrary.org/template R.C. Jackson, J.P. > Balhoff, E. > > Douglass, N.L. Harris, C.J. Mungall, and J.A. Overton. > ROBOT: A tool for > > automating ontology workflows. BMC Bioinformatics, vol. 20, > July 2019. > > https://link.springer.com/epdf/10.1186/s12859-019-3002-3 > > > > [3] Dead Simple OWL Design Patterns David Osumi-Sutherland, > Melanie > > Courtot, James P. Balhoff and Christopher Mungall Journal of > Biomedical > > Semantics 2017 8:18 DOI:10.1186/s13326-017-0126-0 > > > https://jbiomedsem.biomedcentral.com/articles/10.1186/s13326-017-0126-0 > > > > On Fri, Nov 1, 2019 at 1:45 AM Dan Brickley > <danbri@danbri.org <mailto:danbri@danbri.org> > > <mailto:danbri@danbri.org <mailto:danbri@danbri.org>>> wrote: > > > > Or, for that matter, ShEx? > > > > https://shex.io/ > > > > A good comparison could help clarify the entire design > space. > > > > (academics looking for good semweb topics for students, > please take > > note!) > > > > On Fri, 1 Nov 2019 at 05:59, Simon Steyskal > > <simon.steyskal@gmail.com > <mailto:simon.steyskal@gmail.com> > <mailto:simon.steyskal@gmail.com > <mailto:simon.steyskal@gmail.com>>> wrote: > > > > or SHACL? > > > > https://www.w3.org/TR/shacl/#sparql-constraint-components > > > > https://www.w3.org/TR/shacl-af/ > > > > - simon > > > > On Fri, 25 Oct 2019, 09:09 Martynas Jusevičius, > > <martynas@atomgraph.com > <mailto:martynas@atomgraph.com> <mailto:martynas@atomgraph.com > <mailto:martynas@atomgraph.com>>> wrote: > > > > Hi Martin, > > > > how does OTTR compare to SPIN templates? > > https://spinrdf.org/spin.html#spin-templates > > > > > > Martynas > > > > On Fri, Oct 25, 2019 at 5:02 AM Martin G. Skjæveland > > <martige@ifi.uio.no <mailto:martige@ifi.uio.no> > <mailto:martige@ifi.uio.no <mailto:martige@ifi.uio.no>>> wrote: > > > > > > Hi all, > > > > > > Lutra, the open source reference > implementation of OTTR > > templates, is > > > now available in release version 0.6. > > > > > > OTTR (Reasonable Ontology Templates) allows > RDF/OWL > > modelling patterns > > > to be precisely defined and instantiated and > support > > desirable modelling > > > principles such as > > > > > > - layered abstractions > > > - encapsulating complexity > > > - uniform modelling > > > - DRY don't repeat yourself > > > - separation of design and content > > > > > > Lutra and OTTR supports many convenient > language constructs: > > > - nested template definitions > > > - typing system adapted to RDF and OWL > > > - optional arguments > > > - list arguments > > > and support bulk loading data from > spreadsheets and > > databases. > > > > > > To see and learn what this means, visit the > project page: > > > http://ottr.xyz and the primer > > http://spec.ottr.xyz/pOTTR/0.1/ > > > containing many interactive examples. > > > > > > If you are attending ISWC 2019, please come > to our > > tutorial "Scalable > > > construction of sustainable knowledge bases" > tomorrow, > > Saturday October > > > 26: http://ottr.xyz/event/2019-10-267-iswc/ > > > > > > On behalf of the OTTR team, > > > Martin > > > > > > > > <http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient> > Virusvrij. www.avg.com > <http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient> > > > <#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
Received on Thursday, 7 November 2019 03:18:04 UTC