[ 
https://issues.apache.org/jira/browse/RYA-30?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15095554#comment-15095554
 ] 

Aaron Mihalik commented on RYA-30:
----------------------------------

Darren: I was able to reproduce your issue.  Unfortunately, this is an issue 
with the OpenRDF Update parser.  The issue appears when you have the parser 
process an update with two literals that have the same values (e.g. '2') but 
the datatypes are different (e.g. "null" and "int").  The datatypes for the 
literals are undefined in this case.

I put together a test 
[here|https://github.com/amihalik/incubator-rya/blob/RYA-30/sail/src/test/java/mvm/rya/RdfLiteralTest.java]
 that demonstrates the issue.  

Strangely, the unit test exhibits the opposite behavior that you noted.  Both 
literals are marked with datatype {{http://www.w3.org/2001/XMLSchema#integer}} 
(not {{null}} as you demonstrated).  But the rya-example-box demonstrated the 
same behavior that you saw.

Here is the issue with the OpenRDF Parser.  Note that the update:

{code}
insert data { <u:a> <u:p1> '2'^^<http://www.w3.org/2001/XMLSchema#integer> . 
<u:b> <u:p2> '2' }
{code}

results in the following OpenRDF {{Update}} object:

{code}
InsertData
   Reduced
      MultiProjection
         ProjectionElemList
            ProjectionElem "-const-u:a" AS "subject"
            ProjectionElem "-const-u:p1" AS "predicate"
            ProjectionElem "-const-2" AS "object"
         ProjectionElemList
            ProjectionElem "-const-u:b" AS "subject"
            ProjectionElem "-const-u:p2" AS "predicate"
            ProjectionElem "-const-2" AS "object"
         Extension
            ExtensionElem (-const-2)
               ValueConstant (value="2")
            ExtensionElem (-const-2)
               ValueConstant 
(value="2"^^<http://www.w3.org/2001/XMLSchema#integer>)
            ExtensionElem (-const-u:p1)
               ValueConstant (value=u:p1)
            ExtensionElem (-const-u:a)
               ValueConstant (value=u:a)
            ExtensionElem (-const-u:p2)
               ValueConstant (value=u:p2)
            ExtensionElem (-const-u:b)
               ValueConstant (value=u:b)
            SingletonSet
{code}

They key here is that the parser is producing two {{-const-2}} elements with 
values {{value="2"}} and 
{{value="2"^^<http://www.w3.org/2001/XMLSchema#integer>)}}.  It appears that 
the last {{-const-2}} element defined is applied (in my unit test's case, that 
is {{value="2"^^<http://www.w3.org/2001/XMLSchema#integer>)}}.  In your case 
(and on rya-example-box), that value is {{value="2"}}.

Thanks for noting the issue, and sorry that we can't resolve it at this time.

--Aaron


> Literal type information lost when inserting a matching literal with a 
> different type
> -------------------------------------------------------------------------------------
>
>                 Key: RYA-30
>                 URL: https://issues.apache.org/jira/browse/RYA-30
>             Project: Rya
>          Issue Type: Bug
>            Reporter: Darren Griffith
>
>   I have 2 different SPARQL statements.  
>  
>   The first inserts a triple where the object is the integer literal "2" and 
> a triple where the object is the string literal "2".  I believe these should 
> be considered 2 different literals.  However, when I query for the triple 
> with the integer literal "2", it returns a triple with the string literal "2" 
> (see EXAMPLE 1).
>  
>   The second inserts only a triple where the object is the integer literal 
> "2", which is the same triple inserted by the first statement.  When I query 
> for this triple, it returns the triple with the integer literal "2" (see 
> EXAMPLE 2).
>  
>   I believe that my queries should return the same result in both cases.  It 
> seems the Rya isn't including the type information in the symbol table and 
> overwriting what should be different literals.
>  
> — EXAMPLE 1 — 
>  
> INSERT DATA {
>   
> <http://modusoperandi.com/Archivist/detection#jakarta_001.tif_jakarta_001_000.png>
>  
> <http://modusoperandi.com/Archivist/detection#confidence>"2"^^<http://www.w3.org/2001/XMLSchema#integer>
>  .
> <http://modusoperandi.com/Archivist/provenance#6327df6d-79b8-48cd-a855-c7b4b77e0942>
>  <http://modusoperandi.com/Archivist/provenance#to> "2". 
> }
>  
>  
> SELECT *
> WHERE {
>  ?s <http://modusoperandi.com/Archivist/detection#confidence> ?o .
> }    
>  
>  
> <sparql xmlns="http://www.w3.org/2005/sparql-results#";>
> <head>
> <variable name="s"/>
> <variable name="o"/>
> </head>
> <results>
> <result>
> <binding name="s">
> <uri>
> http://modusoperandi.com/Archivist/detection#jakarta_001.tif_jakarta_001_000.png
> </uri>
> </binding>
> <binding name="o">
> <literal>2</literal>
> </binding>
> </result>
> </results>
> </sparql>
>  
>  
>  
> — EXAMPLE 2 —
>  
> INSERT DATA {
>   
> <http://modusoperandi.com/Archivist/detection#jakarta_001.tif_jakarta_001_000.png>
>  
> <http://modusoperandi.com/Archivist/detection#confidence>"2"^^<http://www.w3.org/2001/XMLSchema#integer>
>  .
> }
>  
> SELECT *
> WHERE {
>  ?s <http://modusoperandi.com/Archivist/detection#confidence> ?o .
> }    
>  
> <sparql xmlns="http://www.w3.org/2005/sparql-results#";>
> <head>
> <variable name="s"/>
> <variable name="o"/>
> </head>
> <results>
> <result>
> <binding name="s">
> <uri>
> http://modusoperandi.com/Archivist/detection#jakarta_001.tif_jakarta_001_000.png
> </uri>
> </binding>
> <binding name="o">
> <literal datatype="http://www.w3.org/2001/XMLSchema#integer";>2</literal>
> </binding>
> </result>
> </results>
> </sparql>
>  



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to