2012-02-14 9 views
6

Czy jest możliwe aby utworzyć obiekt w SPARQL potrójny, który jest tworzony poprzez połączenie zmiennej i dosłowna?SPARQL: łączenie zmiennych z literałów

Moja sprawa jest taka:

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

$ obiekt wygląda tak: <info:fedora/abc:123> $ identyfikator wygląda tak: abc:123 i czego potrzebuję to: <info:fedora/abc:123/MODS>

Nie mogę korzystać <info:fedora/$identifier/MODS> ale czy istnieje inny sposób na "sklejanie" zmiennych i literałów?

Odpowiedz

6

Z SPARQL 1.1, powinieneś być w stanie użyć kombinacji BIND(), STR(), IRI() i CONCAT(), aby zrobić to, co chcesz. Coś takiego:

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

Dzięki! To prawdopodobnie rozwiązanie. Używam SPARQL z Mulgara i wydaje się, że nie wszystkie funkcje SPARQL jak CONCAT są już obsługiwane (lub używam starej wersji). Przyjrzę się temu. –

+0

Pracowałem dla mnie. Nie trzeba IRI, więc to było wystarczająco dobre: ​​ BIND (? CONCAT (STR (zm1), STR (var2)) AS $ łączone) – Justas