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
>>>> >
>>>>
>>>>

Reply via email to