2012-02-14 11 views
6

È possibile creare un soggetto in una tripla SPARQL che viene creata combinando una variabile e una letterale?SPARQL: combinazione di variabili con letterali

Il mio caso è questo:

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

$ oggetto simile a questa: <info:fedora/abc:123> $ identificativo simile a questo: abc:123 e quello che mi serve è questo: <info:fedora/abc:123/MODS>

non posso usare <info:fedora/$identifier/MODS> ma c'è un altro modo per "incollare" variabili e letterali insieme?

risposta

6

Con SPARQL 1.1, dovresti essere in grado di utilizzare una combinazione di BIND(), STR(), IRI() e CONCAT() per fare ciò che desideri. Qualcosa di simile:

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

Grazie! Questa è probabilmente la soluzione. Sto usando SPARQL con Mulgara e sembra che non tutte le funzionalità SPARQL come CONCAT siano ancora supportate (o sto usando una vecchia versione). Lo esaminerò. –

+0

ha funzionato per me. Non avevo bisogno dell'IRI, quindi questo era abbastanza buono: BIND (CONCAT (STR (? Var1), STR (? Var2)) $ concatenati) – Justas