Robin
Robin

Reputation: 247

How to concatenate two variables ogether and output a string in SPARQL

I have three variables ?leaf and ?superclass, and ?supersuperclass containing uri's. Now I would like to end up with a table with 2 columns, one column being the ?leaf label and the other being a concatenation of ?superclass and ?supersuperclass with a - in between them.

For instance, a fictional example: | leaf?| ?superclass-supersuperclass| |:----: | :-----:| | bed | bedroom-house | |fridge| kitchen-house| |diningroom|house-street|

I have tried concatenating superclass and supersuperclass in the select portion of my query, but this didn't work. I'm not sure where else I could place it. Do I need to create a new variable that somehow assigns the string values of each variabe to that new variable, concatenated? I do know how to access the labels of each uri, which is the string I end up wanting to concatenate.

tldr: how to concatenate the string values within 2 variables?

Edit: My query up to now: I hope it's readable, removing the comments may help, i mostly wrote those for myself.

 PREFIX owl: <http://www.w3.org/2002/07/owl#>
    PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
    PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
    PREFIX : <*databaselocation*>

    SELECT DISTINCT ?leaf  #?subclasslabel ?subclasslabel #?superclasslabel ? 
    supersuperclasslabel 
    WHERE {GRAPH <*insertyourgraphhere*>

    #a leaf is the lowest level class: A class that does not have a subclass
    {{
            #I want anything which is a class
            ?leaf rdf:type owl:Class.
            #i also want the subclass of any superclass if that exists
            optional {?leaf rdfs:subClassOf ?superclass .}
            
            #give me the label of that subclass
            #optional {?leaf skos:prefLabel ?subclasslabel.}

        
            #?superclass rdfs:subClassOf ?supersuperclass.
            #give me the label of the superclass
            #?superclass skos:prefLabel ?superclasslabel.

            
            #if it exists, give me also the superclass of the superclass 
            creating a supersuperclass
            # {?superclass rdfs:subClassOf ?supersuperclass.
            #give me the label of the supersuperclass
            # {?supersuperclass skos:prefLabel ?supersuperclasslabel.}
                
            
            #keep the leafs that are NOT The values whereby the subclass is 
     not empty. (double negative for remove the leafs where the subclass has a 
    subclass below it)
    FILTER NOT EXISTS
    {?subclass rdfs:subClassOf ?leaf 
                FILTER (?sublass != ?leaf && ?subclass != owl:Nothing ) }}}}    

Upvotes: 1

Views: 2110

Answers (1)

Hussain
Hussain

Reputation: 138

 BIND(concat(?lastName," ",firstName) AS ?fullName)

Upvotes: 2

Related Questions