2012-02-14 15 views
6

¿Es posible crear un sujeto en un SPARQL triple que se crea combinando una variable y un literal?SPARQL: combinando variables con literales

Mi caso es el siguiente:

OPTIONAL 
{ 
    $object dc:identifier $identifier . 
    <info:fedora/abc:123/MODS> fedora-view:disseminationType $mods . 
    <info:fedora/abc:123/TN> fedora-view:disseminationType $tn 
} 

$ objeto se parece a esto: <info:fedora/abc:123> $ identificador es el siguiente: abc:123 y lo que necesito es la siguiente: <info:fedora/abc:123/MODS>

no puedo usar <info:fedora/$identifier/MODS> pero, ¿hay alguna otra manera de 'pegar' variables y literales juntos?

Respuesta

6

Con SPARQL 1.1, debería poder usar una combinación de BIND(), STR(), IRI() y CONCAT() para hacer lo que desee. Algo como:

SELECT * WHERE { 
    $object dc:identifier $identifier . 
    BIND(IRI(CONCAT(STR($object), "/MODS")) AS $new) 
    $new fedora-view:disseminationType $mods . 
    $new fedora-view:disseminationType $tn . 
} 
+0

Gracias! Esa es probablemente la solución. Estoy usando SPARQL con Mulgara y parece que no todas las funcionalidades SPARQL como CONCAT son compatibles (o estoy usando una versión anterior). Lo miraré. –

+0

funcionó para mí. No necesitaba IRI, así que esto fue suficiente: BIND (CONCAT (STR (? Var1), STR (? Var2)) AS $ concatenado) – Justas