Martin Ledvinka created JENA-1518:

             Summary: InfModel does not contain inferred statements when 
asserted data is accessed first
                 Key: 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 = 
{{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 

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

Reply via email to