Martin Ledvinka created JENA-1518:
-------------------------------------
Summary: InfModel does not contain inferred statements when
asserted data is accessed first
Key: JENA-1518
URL: https://issues.apache.org/jira/browse/JENA-1518
Project: Apache Jena
Issue Type: Bug
Components: Core
Affects Versions: Jena 3.6.0
Reporter: Martin Ledvinka
When I create an InfModel (tested on RDFSRuleReasoner, RDFSFBRuleReasoner and
OWLMicroReasoner) and I access an asserted statement first, the model does not
see inferred statements it previously created. If I access the inferred
statements first, everything works fine.
What's interesting is that when I list all the statements in the model
(listStatements().toList()), I can see the relevant statement, but the model
ignores it. Demo:
{{Model model = ModelFactory.createDefaultModel();}}
{{Resource subject = createResource(SUBJECT);}}
{{Resource typeOne = createResource(TYPE_ONE);}}
{{Resource typeTwo = createResource(TYPE_TWO);}}
{{model.add(typeOne, RDFS.subClassOf, typeTwo);}}
{{model.add(subject, RDF.type, typeOne);}}
{{InfModel infModel =
ModelFactory.createInfModel(RDFSRuleReasonerFactory.theInstance().create(null),
model);}}
{{assertTrue(infModel.contains(createResource(SUBJECT), RDF.type, typeOne));}}
{{assertTrue(infModel.contains(createResource(SUBJECT), RDF.type, typeTwo));
// This assertion FAILS. But if I switch this line for the one above, it works
fine}}
Also, if I use unbound subject in the contains call on the last line, it
returns true, so it seems that it incorrectly matches the 'subject' Resource.
The same problem can be reproduces on the listStatements method, when first
accessing just the asserted statements (using 'typeOne' as object) and then
accessing inferred statements (using 'typeTwo' as object).
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)