When I read the docs for Jena2 Inference Support I found the following. It
says "one set of data (typically some schema definitions) to be efficiently
applied" (see below). Does this mean that if your data and ontology were in
one file, with the ontology at the end, that you would still end up with the
same inferences as in the case where they were mixed in one file with the
ontology defined at the beginning? But that it would be a performance hit? If
so, why?
Applying a reasoner to data
Once you have an instance of a reasoner it can then be attached to a set of RDF
data to create an inference model. This can either be done by putting all the
RDF data into one Model or by separating into two components - schema and
instance data. For some external reasoners a hard separation may be required.
For all of the built in reasoners the separation is arbitrary. The prime value
of this separation is to allow some deductions from one set of data (typically
some schema definitions) to be efficiently applied to several subsidiary sets
of data (typically sets of instance data).
If you want to specialize the reasoner this way, by partially-applying it to a
set schema data, use the Reasoner.bindSchema method which returns a new,
specialized, reasoner.
To bind the reasoner to the final data set to create an inference model see the
ModelFactory methods, particularly ModelFactory.createInfModel.