This is a preview of work in the code base for Jena 4.1.0.
Give it (from development builds) and go and let me know how you get on.
This is a backwards chaining, fixed, RDFS engine that can be applied to
a dataset. The same RDFS schema is applied to each graph in the dataset
(including the union graph).
It supports the data inferences rdfs:subClassOf, rdfs:subPropertyOf,
rdfs:range and rdfs:domain without axioms and without the schema visible
in the data (unless app copies it in, even then conclusions from the
schema are not included).
It is tested against this rules set for the Jena RDFS rules engine:
https://github.com/apache/jena/blob/main/jena-arq/testing/RDFS/rdfs-min.rules
by running those rules and removing
subClassOf/subPropertyOf/range/domain/ triples.
The engine expands "find" calls. It has no data-related in-memory state
and so should scale with the data and changes in the data are
immediately effective. It processes the schema, building internal
datastructures such as the subclass and subproperty hierarchy, but does
not process data at start-up.
Configuration by assembler:
## RDFS
:rdfsDataset rdf:type ja:DatasetRDFS ;
ja:rdfsSchema <file:vocabulary.ttl>;
ja:dataset :baseDataset;
.
## Base data.
:baseDataset rdf:type tdb2:DatasetTDB2 ;
tdb2:location ...
This is not a replacement for the Jena RDFS Reasoner support which
covers full RDFS inference.
Further documentation:
https://jena.apache.org/documentation/rdfs/
RDF-star: this engine works on asserted triples. It won't expand
embedded ("quoted") triples.
Andy