Hi Alan,

I had to revert the patch because I forgot that I cannot change the way the
hashCode is computed, as it is defined in the Sesame API how this is
supposed to be done.  I therefore instead changed the implementation of
IntArray. I'll also write a test for this issue but I'd be grateful if you
could try again with the most recent snapshot.

Greetings,

Sebastian


2013/12/10 Sebastian Schaffert <[email protected]>

> Hi Al,
>
> thanks for pointing this out, this is clearly a bug. For the sake of
> documentation I have created an issue at
>
> https://issues.apache.org/jira/browse/MARMOTTA-401
>
>
> I have also created a patch in the latest development branch that should
> fix the issue. Can you please check with a new snapshot from GIT if it now
> works for you?
>
> Greetings,
>
> Sebastian
>
>
> 2013/12/10 Alan Melville <[email protected]>
>
>> Hello all,
>>
>> I have encountered a situation where by the same cache key is generated
>> for
>> different triple statements. The current key generation is based on hash
>> codes ( see IntArray.createSPOCKey(s, p, o, c)), which unfortunately is
>> not
>> guaranteed to be unique across different node types.
>>
>> In my particular example I have a KiWiLiteral node with a URI string
>> value.
>> I also have another KiWiUriResource node with the same value for its URI
>> (messy I know :( ).
>>
>> <rdf:Description rdf:about="http://vocabulary.curriculum.edu.au/access/10
>> ">
>>         <rdf:type rdf:resource="
>> http://www.w3.org/2004/02/skos/core#Concept"/>
>>         <skos:prefLabel xml:lang="en">Visual independence</skos:prefLabel>
>>         <skos:topConceptOf
>> rdf:resource="*http://vocabulary.curriculum.edu.au/access
>> <http://vocabulary.curriculum.edu.au/access>*"/>
>>         <skos:topConceptOf>*http://vocabulary.curriculum.edu.au/access
>> <http://vocabulary.curriculum.edu.au/access>*</skos:topConceptOf>
>>
>>
>> KiWiLiteral.hashCode() is solely based on its label/content and
>> KiWiUriResource.hashCode() is solely based on its URI hence to two
>> different nodes generate the same hashCode, which in its self is fine, but
>> the IntArray.createSPOCKey(s, p, o, c) generates the same key and thus the
>> KiWiValueFactory.tripleRegistry may return the wrong KiWiTriple (see
>> KiWiValueFactory.createStatement(s, p, o, c, con)).
>>
>>
>> Proposed solution:
>>
>> 1) Update the hashCode in the KiWiNode types to be more unique?
>> 2) Adjust the IntArray.createSPOCKey implementation?
>> 3) other?
>>
>> Happy to raise a Jira ticket if the dev community feels this needs
>> attention.
>>
>> Kind regards
>> Al
>>
>
>

Reply via email to