You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@jena.apache.org by Martynas Jusevičius <ma...@atomgraph.com> on 2020/09/21 09:02:08 UTC
How does one materialize an InfModel?
Hi,
I want to load an ontology with imports into an inference model, but
then materialize the triples as no further changes will be made to the
model and we would like to avoid the reasoner overhead for read-only
access.
How does one do the materialization? Simple add() doesn't seem to cut it:
@Test
public void testMaterialize()
{
OntModel infModel =
OntDocumentManager.getInstance().getOntology("https://www.w3.org/ns/ldt#",
OntModelSpec.OWL_MEM_RDFS_INF);
OntModel nonInfModel =
ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM);
nonInfModel.add(infModel);
assertEquals(infModel.size(), nonInfModel.size());
}
expected:<1350> but was:<2264>
Martynas
Re: How does one materialize an InfModel?
Posted by Martynas Jusevičius <ma...@atomgraph.com>.
Thanks Rob. You were right, these tests pass:
assertEquals(infModel.listStatements().toList().size(),
nonInfModel.listStatements().toList().size());
assertEquals(infModel.listStatements().toList().size(),
union.listStatements().toList().size());
On Mon, Sep 21, 2020 at 11:35 AM Rob Vesse <rv...@dotnetrdf.org> wrote:
>
> I think your test assertions are faulty, from https://jena.apache.org/documentation/javadoc/jena/org/apache/jena/rdf/model/Model.html#size--
>
> size will return the number of statements in a concrete model, for a virtualized model such as one created by an inference engine, it will return an estimated lower bound for the numberof statements in the model but it is possible for a subsequent listStatements on such a model to discover more statements than size() indicated.
>
> So size() is not guaranteed to include the count of inferred statements. If you want to count the size of an inference model you will need to iterate over the statements and count those directly as the Javadoc implies
>
> Rob
>
> On 21/09/2020, 10:27, "Martynas Jusevičius" <ma...@atomgraph.com> wrote:
>
> Alternatively, how do I create a read-only union which has all the
> statements of an InfModel? ModelFactory.createUnion() does not:
>
> Model union =
> ModelFactory.createUnion(ModelFactory.createDefaultModel(), infModel);
> assertEquals(infModel.size(), union.size());
>
> expected:<1350> but was:<2264>
>
> On Mon, Sep 21, 2020 at 11:02 AM Martynas Jusevičius
> <ma...@atomgraph.com> wrote:
> >
> > Hi,
> >
> > I want to load an ontology with imports into an inference model, but
> > then materialize the triples as no further changes will be made to the
> > model and we would like to avoid the reasoner overhead for read-only
> > access.
> >
> > How does one do the materialization? Simple add() doesn't seem to cut it:
> >
> > @Test
> > public void testMaterialize()
> > {
> > OntModel infModel =
> > OntDocumentManager.getInstance().getOntology("https://www.w3.org/ns/ldt#",
> > OntModelSpec.OWL_MEM_RDFS_INF);
> > OntModel nonInfModel =
> > ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM);
> > nonInfModel.add(infModel);
> > assertEquals(infModel.size(), nonInfModel.size());
> > }
> >
> > expected:<1350> but was:<2264>
> >
> >
> > Martynas
>
>
>
>
Re: How does one materialize an InfModel?
Posted by Rob Vesse <rv...@dotnetrdf.org>.
I think your test assertions are faulty, from https://jena.apache.org/documentation/javadoc/jena/org/apache/jena/rdf/model/Model.html#size--
size will return the number of statements in a concrete model, for a virtualized model such as one created by an inference engine, it will return an estimated lower bound for the numberof statements in the model but it is possible for a subsequent listStatements on such a model to discover more statements than size() indicated.
So size() is not guaranteed to include the count of inferred statements. If you want to count the size of an inference model you will need to iterate over the statements and count those directly as the Javadoc implies
Rob
On 21/09/2020, 10:27, "Martynas Jusevičius" <ma...@atomgraph.com> wrote:
Alternatively, how do I create a read-only union which has all the
statements of an InfModel? ModelFactory.createUnion() does not:
Model union =
ModelFactory.createUnion(ModelFactory.createDefaultModel(), infModel);
assertEquals(infModel.size(), union.size());
expected:<1350> but was:<2264>
On Mon, Sep 21, 2020 at 11:02 AM Martynas Jusevičius
<ma...@atomgraph.com> wrote:
>
> Hi,
>
> I want to load an ontology with imports into an inference model, but
> then materialize the triples as no further changes will be made to the
> model and we would like to avoid the reasoner overhead for read-only
> access.
>
> How does one do the materialization? Simple add() doesn't seem to cut it:
>
> @Test
> public void testMaterialize()
> {
> OntModel infModel =
> OntDocumentManager.getInstance().getOntology("https://www.w3.org/ns/ldt#",
> OntModelSpec.OWL_MEM_RDFS_INF);
> OntModel nonInfModel =
> ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM);
> nonInfModel.add(infModel);
> assertEquals(infModel.size(), nonInfModel.size());
> }
>
> expected:<1350> but was:<2264>
>
>
> Martynas
Re: How does one materialize an InfModel?
Posted by Martynas Jusevičius <ma...@atomgraph.com>.
Alternatively, how do I create a read-only union which has all the
statements of an InfModel? ModelFactory.createUnion() does not:
Model union =
ModelFactory.createUnion(ModelFactory.createDefaultModel(), infModel);
assertEquals(infModel.size(), union.size());
expected:<1350> but was:<2264>
On Mon, Sep 21, 2020 at 11:02 AM Martynas Jusevičius
<ma...@atomgraph.com> wrote:
>
> Hi,
>
> I want to load an ontology with imports into an inference model, but
> then materialize the triples as no further changes will be made to the
> model and we would like to avoid the reasoner overhead for read-only
> access.
>
> How does one do the materialization? Simple add() doesn't seem to cut it:
>
> @Test
> public void testMaterialize()
> {
> OntModel infModel =
> OntDocumentManager.getInstance().getOntology("https://www.w3.org/ns/ldt#",
> OntModelSpec.OWL_MEM_RDFS_INF);
> OntModel nonInfModel =
> ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM);
> nonInfModel.add(infModel);
> assertEquals(infModel.size(), nonInfModel.size());
> }
>
> expected:<1350> but was:<2264>
>
>
> Martynas