You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@jena.apache.org by Steve Vestal <st...@adventiumlabs.com> on 2022/07/12 20:25:01 UTC
Questions about OntModel compound document structure
I have a few questions about how to assemble a compound document
structure. I will use as a notional example
OntModel ontModel =
ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM_MICRO_RULE_INF);
The reasoner package javadoc shows
ReasonerFactory rf = RDFSReasonerFactory.theInstance();
Reasoner reasoner = rf.create(null);
InfGraph graph = reasoner.bind(data);
Model model = new ModelMem(graph);
When creating the above ontModel, is that final model what will be
created using the reasoner's provided InfGraph, e.g., the final line
above would be something like new OntModelImpl(spec, baseModel) where
the baseModel is created using the provided InfGraph as its source of
data? (In a test, the graph provided by the baseModel (a ModelComp
object) is the graph provided by the ontModel object.)
When I read a simple test case into ontModel that has two imports and
then look at the results of
ExtendedIterator<OntModel> subModels = ontModel.listSubModels();
and
ExtendedIterator<String> ontModels =
ontModel.getImportModelMaker().listModels();
while (ontModels.hasNext()) {
String m = ontModels.next();
OntModel imp = ontModel.getImportedModel(m);}
I get different OntModelImpl subModel objects versus importedModel
objects. What is the difference between subModels and importedModels?
My impression is that the argument to Reasoner#bind is often a
MultiUnion graph. Which of these (submodels or imports) are children of
(providers to) the reasoner's MultiUnion graph? What is the parent
(consuming) model for the other? Which models provide the
OntModelImpl#getSubGraph graphs?
What does OntModel#getDeductionsModel return? This is the model where a
reasoner puts its entailments, correct? It doesn't seem to be any of
the above model objects.
Re: Questions about OntModel compound document structure
Posted by Steve Vestal <st...@adventiumlabs.com>.
I think I found the reason subModel objects are not the importedModel
objects. listSubModels does say "Each model returned by this method
will have been wrapped as an ontology model using the same OntModelSpec
as this model," meaning (from the code) the graph of the given model is
used to create a new Model that is used as the base model in a newly
created OntModelImpl. That implies each returned subModel comes fully
equipped with its own reasoner. The OntModelImpl addSubModel method
only saves the graph of the provided model (in the MultiUnion that feeds
the reasoner), it doesn't save the model, but getSubGraph will return
that original graph. It appears getImportModel will also sometimes
create a new OntModel object/wrapper. I'm starting to get the feeling
wrapping models and graphs is not uncommon inside compound document
structures.
On 7/12/2022 3:25 PM, Steve Vestal wrote:
> I have a few questions about how to assemble a compound document
> structure. I will use as a notional example
>
> OntModel ontModel =
> ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM_MICRO_RULE_INF);
>
> The reasoner package javadoc shows
>
> ReasonerFactory rf = RDFSReasonerFactory.theInstance();
> Reasoner reasoner = rf.create(null);
> InfGraph graph = reasoner.bind(data);
> Model model = new ModelMem(graph);
>
> When creating the above ontModel, is that final model what will be
> created using the reasoner's provided InfGraph, e.g., the final line
> above would be something like new OntModelImpl(spec, baseModel) where
> the baseModel is created using the provided InfGraph as its source of
> data? (In a test, the graph provided by the baseModel (a ModelComp
> object) is the graph provided by the ontModel object.)
>
> When I read a simple test case into ontModel that has two imports and
> then look at the results of
>
> ExtendedIterator<OntModel> subModels = ontModel.listSubModels();
>
> and
>
> ExtendedIterator<String> ontModels =
> ontModel.getImportModelMaker().listModels();
> while (ontModels.hasNext()) {
> String m = ontModels.next();
> OntModel imp = ontModel.getImportedModel(m);}
>
> I get different OntModelImpl subModel objects versus importedModel
> objects. What is the difference between subModels and
> importedModels? My impression is that the argument to Reasoner#bind
> is often a MultiUnion graph. Which of these (submodels or imports) are
> children of (providers to) the reasoner's MultiUnion graph? What is
> the parent (consuming) model for the other? Which models provide the
> OntModelImpl#getSubGraph graphs?
>
> What does OntModel#getDeductionsModel return? This is the model where
> a reasoner puts its entailments, correct? It doesn't seem to be any
> of the above model objects.
>
>