SPARQL 1.1: как использовать функцию замены?

Как можно использовать функцию замены в SPARQL 1.1, особенно в обновить команды?

Например, если у меня есть несколько троек ?s ?p ?o, где ?o — строка, и для всех троек, где ?o содержит строку «gotit», я хочу вставить дополнительную тройку, где «gotit» заменено на «иметь», как я мог это сделать? Я пытаюсь добиться этого, это Sesame 2.6.0.

Я попробовал этот наивный подход:

INSERT { ?s ?p replace(?o,"gotit","haveit","i") . }
WHERE { ?s ?p ?o . FILTER(regex(?o,"gotit","i")) }

но это вызвало синтаксическую ошибку.

Мне также не удалось использовать замену в списке результатов запроса следующим образом:

SELECT ?s ?p (replace(?o,"gotit","haveit","i") as ?r) WHERE { .... }

Документ SPARQL, к сожалению, не содержит примера использования этой функции.

Возможно ли вообще использовать функции для создания новых значений, а не только для проверки существующих значений, и если да, то как?

12
задан Johsm 23 May 2012 в 20:04
поделиться