Hi Han,

Yes, it appears to be a bug. I can recreate it although I had to increase the loop count to 5000 to see anything going wrong.

It looks like once the test is wrong, it is wrong for 10+ iterations afterwards, becomes OK again, and maybe goes wrong again. Quite strange, and no concurrency in sight.

If the test is changed to use a plain model with the materialised inference model copied into it, it does not go wrong.

Recorded: JENA-2184

    Andy

https://issues.apache.org/jira/browse/JENA-2184

On 11/10/2021 11:04, Kruiger, J.F. (Han) wrote:
Hi there,

We are running into an issue that seems like a bug in Jena 4.2.0.

A (reasonably) minimal example is in this test case:
https://github.com/barrynl/jena-example/blob/cf2da8e5c7cd9a0f415282486ec8472e53d0a9c4/src/main/java/nl/tno/ict/ds/cb/jena/JenaRepeatedQueryOnInfModelTest.java

What happens there is:

  * An `InfModel` is created from a reasoner that is bound to some RDF
    data.
  * The triples from the `InfModel` are written to a file `before.ttl`,
    for debugging.
  * A SELECT query is fired on the model repeatedly.
  * After this, the triples from the same model are written to
    `after.ttl`, for debugging.

The expected behaviour is:

  * Since nothing changes in the model, the results of the subsequent
    SELECT queries should be identical.
  * `before.ttl` and `after.ttl` should be identical.

However, both of those things do not happen in the actual behaviour.

What we see (tested on my Linux machine, and my colleague's Windows
machine) is the following:

  * For the first ~100 query results, there are not matches found and
    the empty binding set is returned. (This is correct!)
  * After that, something mysterious happens and the query suddenly
    gives a binding as a result. (This is incorrect!)
  * In `before.ttl`, both instances in the triple data are (correctly)
    classified as `ic:InformPurpose` and `ic:Purpose`, but in
    `after.ttl`, one of the resources is not classified as `ic:Purpose`
    anymore (even though the model hasn't changed; only SELECT queries
    were fired).

Note that this behaviour does not occur when we use Jena 4.1.0.

Are we missing something, or is this indeed a bug?

Best,
Han Kruiger
This message may contain information that is not intended for you. If you are 
not the addressee or if this message was sent to you by mistake, you are 
requested to inform the sender and delete the message. TNO accepts no liability 
for the content of this e-mail, for the manner in which you use it and for 
damage of any kind resulting from the risks inherent to the electronic 
transmission of messages.

Reply via email to