benlammel opened a new issue, #2270:
URL: https://github.com/apache/jena/issues/2270

   ### Version
   
   4.10.0
   
   ### What happened?
   
   I just came across the following unexpected behavior.
   
   There seems to be a difference of adding a literal of data type UUID (1) 
using .toString() or (2) blank.
   
   (1) `NodeFactory.createLiteralByValue(id.toString(), XSDDatatype.XSDstring)`
   
   (2) `NodeFactory.createLiteralByValue(id, XSDDatatype.XSDstring)`
   
   The model output after update does not show any visible difference but when 
querying using the id won't return results.
   
   Demonstrating example below. Any explanation or comments appreciated.
   
   `public class JenaUUID {
        
        private Model model;
        private final String UUIDPrefix = "urn:uuid:";
        private Property idProperty;
   
        
        public JenaUUID() {
                model = ModelFactory.createDefaultModel();
                idProperty = model.createProperty("data:hasUUID");
                
                System.out.println("case 1: id as string");
                
                UUID idC1 = UUID.randomUUID();
                UpdateBuilder ubC1 = new UpdateBuilder();
                ubC1.addInsert(NodeFactory.createURI(UUIDPrefix + idC1), 
RDF.type, RDFS.Class);
                ubC1.addInsert(NodeFactory.createURI(UUIDPrefix + idC1), 
idProperty, NodeFactory.createLiteralByValue(idC1.toString(), 
XSDDatatype.XSDstring));
                
                addAndQuery(idC1, ubC1);
                
                
                System.out.println("case 2: id as UUID");
                
                UUID idC2 = UUID.randomUUID();
                UpdateBuilder ubC2 = new UpdateBuilder();
                ubC2.addInsert(NodeFactory.createURI(UUIDPrefix + idC2), 
RDF.type, RDFS.Class);
                ubC2.addInsert(NodeFactory.createURI(UUIDPrefix + idC2), 
idProperty, NodeFactory.createLiteralByValue(idC2, XSDDatatype.XSDstring));
                
                addAndQuery(idC2, ubC2);
   
        }
        
        private void addAndQuery(UUID id, UpdateBuilder ub) {
                
                
                ub.addInsert(NodeFactory.createURI(UUIDPrefix + id), RDF.type, 
RDFS.Class);
                ub.addInsert(NodeFactory.createURI(UUIDPrefix + id), 
idProperty, NodeFactory.createLiteralByValue(id.toString(), 
XSDDatatype.XSDstring));
                
                UpdateAction.execute(ub.buildRequest(), model);
           System.out.println("after update");
                RDFDataMgr.write(System.out, model, RDFFormat.TURTLE);
                
                
                SelectBuilder sb = new SelectBuilder();
                sb.addVar("iri");
                sb.addVar("id");
                sb.addBind("\"" + id + "\"", "id");
                sb.addWhere(NodeFactory.createVariable("iri"), RDF.type, 
NodeFactory.createVariable("type"));
                sb.addWhere(NodeFactory.createVariable("iri"), idProperty, 
NodeFactory.createVariable("id"));
                
                System.out.println("query: " +sb.build());
   
                QueryExecution queryExecution = 
QueryExecutionFactory.create(sb.build(), this.model);
                ResultSet queryResults = queryExecution.execSelect();
                
                ResultSetFormatter.out(System.out, queryResults, sb.build());
                
                System.out.println(" --------  END --------");
                
        }
   
   
   
   
        public static void main(String[] args) {
                new JenaUUID();
        }
   
   }
   `
   Runtime
   java --version
   openjdk 21.0.2 2024-01-16 LTS
   OpenJDK Runtime Environment Temurin-21.0.2+13 (build 21.0.2+13-LTS)
   OpenJDK 64-Bit Server VM Temurin-21.0.2+13 (build 21.0.2+13-LTS, mixed mode)
   
   ### Relevant output and stacktrace
   
   ```shell
   case 1: id as string
   after update
   <urn:uuid:13e680a2-b118-436b-b84d-27b73b42dd37>
           a               <http://www.w3.org/2000/01/rdf-schema#Class>;
           <data:hasUUID>  "13e680a2-b118-436b-b84d-27b73b42dd37" .
   query: SELECT  ?iri ?id
   WHERE
     { BIND("13e680a2-b118-436b-b84d-27b73b42dd37" AS ?id)
       ?iri  a               ?type ;
             <data:hasUUID>  ?id
     }
   
   
--------------------------------------------------------------------------------------------
   | iri                                             | id                       
              |
   
============================================================================================
   | <urn:uuid:13e680a2-b118-436b-b84d-27b73b42dd37> | 
"13e680a2-b118-436b-b84d-27b73b42dd37" |
   
--------------------------------------------------------------------------------------------
    --------  END --------
   case 2: id as UUID
   after update
   <urn:uuid:e5343c35-e527-4bca-93c1-4a3d08812cbd>
           a               <http://www.w3.org/2000/01/rdf-schema#Class>;
           <data:hasUUID>  "e5343c35-e527-4bca-93c1-4a3d08812cbd" .
   
   <urn:uuid:13e680a2-b118-436b-b84d-27b73b42dd37>
           a               <http://www.w3.org/2000/01/rdf-schema#Class>;
           <data:hasUUID>  "13e680a2-b118-436b-b84d-27b73b42dd37" .
   query: SELECT  ?iri ?id
   WHERE
     { BIND("e5343c35-e527-4bca-93c1-4a3d08812cbd" AS ?id)
       ?iri  a               ?type ;
             <data:hasUUID>  ?id
     }
   
   ------------
   | iri | id |
   ============
   ------------
    --------  END --------
   ```
   
   
   ### Are you interested in making a pull request?
   
   Maybe


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to