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.
[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/> >
