It is in fact the case of type-casting, ?snew is bound after type-casting of ?olds is carried properly.
Thanks ever so much for you help. Best regards Mahmood -----Original Message----- From: Martynas Jusevičius [mailto:[email protected]] Sent: 03 November 2016 16:59 To: [email protected] Subject: Re: Adding UUIDs to SPARQL query results Well, it means your BIND() expression is wrong. Try to deconstruct the string operations step by step. Type casting seems to be missing: use STR(?olds) to turn string into URI, and in the end use URI(CONCAT(...)) to turn string into URI. On Thu, Nov 3, 2016 at 5:54 PM, Mahmood Ahmad <[email protected]> wrote: > Thanks. The snew column is empty as a result of the SELECT statement, so > ?snew is not bound. > > Any remedy for this? > > -----Original Message----- > From: Martynas Jusevičius [mailto:[email protected]] > Sent: 03 November 2016 16:45 > To: [email protected] > Subject: Re: Adding UUIDs to SPARQL query results > > Try a SELECT first and see what values you get: > > SELECT * > WHERE > { > ?olds a owl:NamedIndividual, skos:Concept ; > ?p ?o . > BIND(CONCAT(CONCAT(STRBEFORE(?olds, "#"), "#"), STRUUID()) AS ?snew) . > } > > If ?snew is not bound to any values, it will not generate any triples in > CONSTRUCT. > > On Thu, Nov 3, 2016 at 5:42 PM, Mahmood Ahmad <[email protected]> > wrote: >> Thanks, but this wouldn't generate any results either: >> >> CONSTRUCT { >> ?snew a owl:NamedIndividual, skos:Concept ; >> ?p ?o . >> } >> WHERE >> { >> ?olds a owl:NamedIndividual, skos:Concept ; >> ?p ?o . >> BIND(CONCAT(CONCAT(STRBEFORE(?olds, "#"), "#"), STRUUID()) AS ?snew) . >> } >> >> -----Original Message----- >> From: Martynas Jusevičius [mailto:[email protected]] >> Sent: 03 November 2016 16:32 >> To: [email protected] >> Subject: Re: Adding UUIDs to SPARQL query results >> >> You have to use ?snew variable instead of ?olds in the CONSTRUCT template, >> otherwise it will have no effect: >> >> CONSTRUCT { >> ?snew a owl:NamedIndividual, skos:Concept ; >> ?p ?o . >> } >> >> On Thu, Nov 3, 2016 at 5:28 PM, Mahmood Ahmad >> <[email protected]> wrote: >>> Many thanks. I have been trying this but seem to miss some trick: >>> >>> From my CONSTRUCT query: >>> >>> PREFIX owl: <http://www.w3.org/2002/07/owl#> PREFIX xsd: >>> <http://www.w3.org/2001/XMLSchema#> >>> PREFIX skos: <http://www.w3.org/2004/02/skos/core#> >>> prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> >>> prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> >>> PREFIX www: <http://xyz.com#> >>> >>> CONSTRUCT { >>> ?s a owl:NamedIndividual, skos:Concept ; >>> ?p ?o . >>> } >>> WHERE >>> { >>> ?s a owl:NamedIndividual, skos:Concept ; >>> ?p ?o . >>> } >>> >>> I get results of the following type (summarised because of file size). >>> www:Some_Identifier >>> a skos:Concept , owl:NamedIndividual ; >>> ?p ?o . >>> >>> I need to replace 'Some_Identifier' with a UUID generated by the STRUUID() >>> function. For this purpose I append the bind statement in a new CONSTRUCT >>> query as follow: >>> >>> CONSTRUCT { >>> ?olds a owl:NamedIndividual, skos:Concept ; >>> ?p ?o . >>> } >>> WHERE >>> { >>> ?olds a owl:NamedIndividual, skos:Concept ; >>> ?p ?o . >>> BIND(CONCAT(CONCAT(STRBEFORE(?olds, "#"), "#"), STRUUID()) AS ?snew) . >>> } >>> >>> >>> But this does not change anything. It looks as if I expect the variable >>> ?olds as a string whereas it is not. How can then I use the BIND() function >>> correctly to obtain this? >>> >>> One way may be to use STR(www:) and concatenate it with STRUUID(), but how >>> to place this in the sub-graph? >>> >>> Any idea, I'll appreciate. >>> >>> Regards >>> Mahmood >>> >>> -----Original Message----- >>> From: Martynas Jusevičius [mailto:[email protected]] >>> Sent: 03 November 2016 12:36 >>> To: [email protected] >>> Subject: Re: Adding UUIDs to SPARQL query results >>> >>> Use BIND() with UUID() or STRUUID(). >>> >>> https://www.w3.org/TR/2012/WD-sparql11-query-20120724/#func-uuid >>> https://www.w3.org/TR/2012/WD-sparql11-query-20120724/#func-struuid >>> >>> On Thu, Nov 3, 2016 at 1:34 PM, Mahmood Ahmad >>> <[email protected]> wrote: >>>> Hi, >>>> >>>> [Advanced apologies if this question is out of scope of this list, >>>> and advise me the correct forum.] >>>> >>>> I am currently using Apache Jena Fuseki 2.4.0 (Windows 10) to upload my >>>> project RDF triples into a big soup. >>>> >>>> Using the SPARQL CONSTRUCT queries, I am able to query sub-graphs from the >>>> big soup and the result is in Turtle format. However, I am looking to add >>>> a UUID to every result of my query. >>>> >>>> Is it possible to get this done within my CONSTRUCT query, and how? If >>>> not, please can you suggest some alternative approaches? >>>> >>>> Thanks and regards >>>> Mahmood >>>> >>>> ==================== >>>> Dr Mahmood Ahmad >>>> KTP Associate >>>> >>>> School of Computer Science >>>> University of Manchester >>>> and >>>> Telematicus >>>> Newport Street >>>> Macclesfield >>>> SK11 6QJ >>>> United Kingdom >>>> >>>> E: >>>> [email protected]<mailto:[email protected]> >>>> E: >>>> [email protected]<mailto:[email protected] >>>> k >>>> > >>>> >>>>
