расширение файла sparql regex - PullRequest
       7

расширение файла sparql regex

0 голосов
/ 30 августа 2018

Я пытаюсь разработать SPARQL-запрос для захвата расширения файла в объекте RDF.

SELECT DISTINCT
*
WHERE { 
    ?s <http://URI/identifier> ?o .
    BIND(REPLACE(?o,".*\.(\w+)", "$1") AS ?filetype)
} LIMIT 10

Мое регулярное выражение (.*\.(\w+) получает сообщение об ошибке.

MALFORMED QUERY: Lexical error at line 5, column 25.  Encountered: "." (46), after : "\".*\\"

Однако мое выражение работает в моем регулярном выражении 101

Каких персонажей мне нужно бежать и как?

1 Ответ

0 голосов
/ 30 августа 2018

Из сообщения об ошибке я предполагаю, что вы используете консоль RDF4J или Workbench. Существует открытая проблема с экранированием специальных символов для регулярных выражений SPARQL в этих инструментах. См. https://github.com/eclipse/rdf4j-tools/issues/72.

Существует обходной путь, который заключается не просто в удвоении обратной косой черты, как предложил Тим в своем ответе, но в использовании 4 обратной косой черты для каждого специального символа. Вам также понадобится добавить третий аргумент к вашему REPLACE, чтобы сделать его легальным (предположительно, вы хотите оставить только расширение):

SELECT DISTINCT
*
WHERE { 
    ?s <http://URI/identifier> ?o .
    BIND(REPLACE(?o,".*\\\\.(\\\\w+)", "$1") AS ?filetype)
} LIMIT 10

Правда, некрасиво. Исправление работает над.

...