Thanks all. To acknowledge some points: 1. Yes, OWL rules per se aren’t meant as constraints. Nonetheless, constraints against a graph can be useful, and enforcement at assertion-time for some (sub)set of those can also be useful.
2. Notwithstanding the fact that it’s valid (and even useful, to effectively assert equivalence) under OWL to assert a non-DAG over :subClassOf edges (the shorthand I’ll use to discuss triples with :subClassOf as the predicate), it can certainly be useful to disallow that for some graphs. Martynas, thank you - https://github.com/spinrdf/spinrdf looks promising! I’m reading the docs now. Can you comment on whether it can be set up to automatically run a rule at the time of SPARQL UPDATE, and reject the update if the rule would be violated by it? Thanks! —Jeff [image: email_sig_logo_vert.png] Jeff Lerman AI Scientist Mobile: 510-495-4621 www.invitae.com [image: email_sig_social_linkedin.png] <https://www.linkedin.com/in/jefflerman/> On Tue, Aug 13, 2019 at 8:08 AM Martynas Jusevičius <[email protected]> wrote: > You could also SPARQL as SPIN constraints: > https://www.w3.org/Submission/spin-modeling/#spin-constraints > > Can be implemented using SPIN API: https://github.com/spinrdf/spinrdf > > On Tue, Aug 13, 2019 at 4:07 PM Andy Seaborne <[email protected]> wrote: > > > > > > > > On 13/08/2019 06:31, Lorenz Buehmann wrote: > > > The rules in Jena are not meant to be constraints. there are constraint > > > language for RDF like SHACL, SHEX - there is(was?) as SHACL API from > > > TopQuadrant [1] but even better, Andy has implemented something in that > > > direction quite recently [2]. I'm sure he can tell you more about the > > > current status and whether it is appropriate for your use case. > > > > Yes, that's a goal. But not in the first release and the use case here > > of "not a DAG" is interestingly special. > > > > Initial, the functionality is: > > > > 1/ Command line - "shacl validate" and "shacl parse" > > 2/ Fuseki validation service - send shapes, get back report on a > > specific graph > > 3/ API - for a single graph, execute constraints on a transaction and > > abort on shape violation. > > > > There are no substantive extensions to SHACL core and SPARQL. We can > > build up a library of extensions if there are constraints that are > > better in java, close to the data, then if they form common needs, we > > can add those (contributions welcome!) > > > > And there ought to be a documented a way to load custom ones - you can > > do it with the Jena initialization jar loading but there's no > documentation. > > > > For your example: > > > > A/ You want a dataset as target - thoughts on that in [2] (it isn't > > implemented). Feature 3 is only one graph at this stage. > > > > B/ The validator will need to be a SPARQL one, its not in the SHACL core > > set of operations. > > > > Andy > > > > > [1] https://github.com/TopQuadrant/shacl > > > > > > [2] https://afs.github.io/shacl-datasets.html > > > > > > On 13.08.19 05:09, Jeff Lerman wrote: > > >> Is there any way, with Jena (either the distributed version or via any > > >> additional software anyone is aware of) to implement enforcement of > > >> constraints on assertions, at the time of assertion? > > >> > > >> In particular, it’d be very helpful to be able to protect the > graph(s) from > > >> any assertion that breaks the assumption (in RDFS and OWL reasoners) > that > > >> rtfs:subClassOf “edges” form a directed acyclic graph. Ideally, an > UPDATE > > >> (or other operation adding content to the store) would fail if that > rule > > >> (and maybe a small collection of similarly “basic” rules) would be > violated > > >> by storing the updated data. For example, this would fail with an > error: > > >> > > >> prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> > > >> prefix owl: <http://www.w3.org/2002/07/owl#> > > >> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> > > >> PREFIX local: <http://localhost:8080/fuseki/jcl_test/data/> > > >> > > >> INSERT DATA { > > >> GRAPH local:notadag { > > >> <c> rdfs:subClassOf <d> . > > >> <d> rdfs:subClassOf <c> . > > >> } > > >> } > > >> > > >> > > >> Thanks, > > >> —Jeff > > >> > > >> > > >> > > >> [image: email_sig_logo_vert.png] > > >> > > >> Jeff Lerman > > >> > > >> AI Scientist > > >> > > >> Mobile: 510-495-4621 > > >> > > >> www.invitae.com > > >> > > >> [image: email_sig_social_linkedin.png] > > >> <https://www.linkedin.com/in/jefflerman/> > > >> > > > >
