OK the documentation is not exhaustive... The 1-argument createTypedLiteral() attempts to infer the RDF datatype from Java type, where 'objectDataValue' is a String I'm guessing? Which becomes xsd:string. If you want to override this with an explicit datatype URI, you need the 2-argument version: https://jena.apache.org/documentation/javadoc/jena/org.apache.jena.core/org/apache/jena/rdf/model/Model.html#createTypedLiteral(java.lang.String,org.apache.jena.datatypes.RDFDatatype)
On Thu, Oct 26, 2023 at 12:55 PM Steve Vestal <steve.ves...@galois.com> wrote: > > Literal dataLiteral = resultGraph.createTypedLiteral(objectDataValue); > System.err.println("objectLiteral: " + objectDataValue + " " + > dataLiteral.getDatatypeURI()); > > always says type is http://www.w3.org/2001/XMLSchema#string > > > On 10/26/2023 5:26 AM, Martynas Jusevičius wrote: > > You need Model::createTypedLiteral > > https://jena.apache.org/documentation/notes/typed-literals.html#basic-api-operations > > > > On Thu, 26 Oct 2023 at 12.24, Steve Vestal <steve.ves...@galois.com> wrote: > > > >> If I reconstruct using > >> > >> Literal dataLiteral = resultGraph.createLiteral(objectDataValue); > >> > >> it always says the type is string > >> > >> 1^^xsd:string > >> stringB^^ xsd:string > >> 123.456^^xsd:string > >> 2023-10-06T12:05:10Z^^xsd:string > >> > >> On 10/26/2023 4:17 AM, Steve Vestal wrote: > >>> What is the best way to reconstruct a typed Literal from a SPARQL > >>> SELECT result? > >>> > >>> I have a SPARQL SELECT query issued against an OntModel in this way: > >>> > >>> QueryExecution structureRowsExec = > >>> QueryExecutionFactory.create(structureRowsQuery, owlOntModel); > >>> > >>> Here are some example triples in the query: > >>> > >>> ?a2 > >>> < > >> http://www.galois.com/indigo/test/structure_datatypes_test#floatProperty> > >>> ?dataVar1. > >>> ?a2 > >>> < > >> http://www.galois.com/indigo/test/structure_datatypes_test#dateTimeProperty> > >> > >>> ?dataVar2. > >>> > >>> The OntModel being queried was created using typed literals, e.g., > >>> > >>> > >>> DataPropertyAssertion( struct:floatProperty struct:indivA2 > >>> "123.456"^^xsd:float ) > >>> DataPropertyAssertion( struct:dateTimeProperty struct:indivA2 > >>> "2023-10-06T12:05:10Z"^^xsd:dateTime ) > >>> > >>> When I look at the ?dataVar1 and ?dataVar2 results in a row, I get > >>> things like: > >>> > >>> 1 > >>> stringB > >>> 123.456 > >>> 2023-10-06T12:05:10Z > >>> > >>> What is a good way to reconstruct a typed Literal from the query > >>> results? Is there a SPARQL option to show full typed literal strings? > >>> Something that can be added to the query? A utility method that can > >>> identify the XSD schema simple data type when given a result value > >>> string? > >>> > >>>