- 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