2016-05-03 14 views
2

Ich bin auf der Suche nach einer einfachen SPARQL-Abfrage mit variablen Eigenschaftspfade. Etwas wiesem: sparql Bindungseigenschaft Pfad

sem:sparql("SELECT ?o WHERE { </person/10025613.xml> <hasManager>+ ?o . }") 

Diese Abfrage funktioniert gut. Aber jetzt, wenn ich die Anweisung mit Variablen arbeiten lassen will, kann ich sie nicht richtig zur Syntaxprüfung bringen.

sem:sparql(" 
    SELECT ?o WHERE { ?s ?p+ ?o . } 
", $params) 

... führt zu einer unerwarteten Tokensyntax. Auch versuchte ich

let $params := map:new(
    (
    map:entry("s", sem:iri("/person/10025613.xml")), 
    map:entry("p", concat(sem:iri("hasManager"), "+")) 
) 
) 

Welche nicht funktioniert auch nicht. Danke für jeden Hinweis.

Antwort

4

SPARQL-Eigenschaftspfade erlauben explizit keine Variablen. Siehe SPARQL 1.1 Property Paths.

Sie können Pfade mit Variablen verfolgen, indem Sie den Objekteigenschaften folgen. Zum Beispiel:

SELECT ?o 
WHERE { 
    ?s ?p ?o1 . 
    ?o1 ?p1 ?o . 
}