On 18/09/2020 07:23, Jeffrey Kenneth Tyzzer wrote:
Hello, Group.
I have two questions re: the Fuseki reasoner (we’re using v.3.14.0 but the
questions are, I think, version-agnostic):
1. Five or so years ago, Andy
wrote<https://users.jena.apache.narkive.com/rqCd9MTM/rdfs-inference-in-fuseki-w-tdb> re:
persisting entailments for performance gains that "[i]n the current codebase the only two
options are using [the] in-memory reasoner or forward-chaining the data when it is loaded."
Is it still the case that the reasoner can only be in-memory?
Yes.
You can, in principle, copy the inference closure to another graph,
persist that in TDB and then at runtime query the union of the base and
closure graph without inference but (a) that requires code and (b)
that's only useful for static data.
1. Via tdb2.tdbquery –explain, I was hoping to be able to be able to get some
insights into how the reasoner might affect the query plan of a query against
TDB2-based data, but according to
this<https://users.jena.apache.narkive.com/Gq5M7ZCT/inference-on-tdbquery>,
“inference results are purely in memory and not part of the TDB data.”
Does this mean there’s no way to see/report the effect of the inferencer’s
entailments on a given query (outside of writing Java ModelFactory code)?
Correct. TDB and thus tdbquery know nothing about inference. If some
inference closure has been performed before loading then to TDB it is
just dealing with more triples. If you have a base model in TDB and
configure inference over the top then the inference results are computed
in memory by the InfGraph and the TDB base model doesn't see any of that.
Dave