2016-05-03 5 views
2

Я ищу простой запрос SPARQL с использованием путей свойств переменной. Что-то вродеsem: sparql binding property path

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

Этот запрос работает нормально. Но теперь, когда я хочу заставить оператор работать с переменными, я не могу правильно его проверить.

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

... приводит к неожиданному синтаксису синтаксиса. Кроме того, я пробовал

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

Это также не работает. Спасибо за любой совет.

ответ

4

Пути свойств SPARQL явно не допускают переменных. См. SPARQL 1.1 Property Paths.

Вы можете отслеживать пути с переменными следующими свойствами объекта. Например:

SELECT ?o 
WHERE { 
    ?s ?p ?o1 . 
    ?o1 ?p1 ?o . 
} 
Смежные вопросы