Martin Ledvinka commented on JENA-1518:

Yeah, I was also surprised when I didn't find any existing info on this. I 
guess people usually ask for inferred data...

Thanks for the workaround!

> 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
>            Priority: Major
> 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

Reply via email to