(Технические характеристики: https://www.w3.org/TR/sparql11-query/#rIRIREF)W3C: Невозможно прочитать спецификацию SPARQL IRIREF от EBNF?
Согласно спецификации, IRIREF может быть разобран, как это:
[139] IRIREF ::= '<' ([^<>"{}|^`\]-[#x00-#x20])* '>'
Что беспокоит меня эта часть выражения:
\]-[
Если Я считаю, что \
является экранирующим символом в классе символов в квадратных скобках (что будет иметь место в регулярном выражении Perl), то это означает, что только \
нет t проблема в IRIREF, и это действительно: <http://hello\world>
Тогда есть эта большая проблема с диапазоном: ]-[
. Символ ]
имеет порядковое значение 93 и [
из 91. Это означает, что мы имеем недопустимый диапазон: от 93 до 92. Это недопустимо в большинстве тестируемых множителей.
Что это значит?
- Должен ли я рассматривать
-
как обычный символ в квадратных скобках класса символов, то это является недействительным IRIREF:<http://new-example.org>
. Это не имеет никакого смысла. - Если я считаю диапазон
]-[
утратившим это IRIREF справедливо:<http://hello[world]>
- То, что я думаю, более вероятно, что диапазон инвертируется и не является проблемой для w3c спецификации, что означает, что символы
[
,\
и]
являются недопустимыми символами. Это имеет смысл.
Я думаю, что нотация A-B может иметь смысл, но, как вы сказали, зачем это делать, если они могут включать '[0x00-0x20]' непосредственно в первый класс символов в квадратных скобках. Что также заставляет меня сомневаться в том, что обозначение «A-B» хорошо разнесено, но здесь это целый блок. Обычно они содержат все разные обозначения, например: '' '' (([^ # x27 # x5C# xA # xD]) | ECHAR) * "'" '. И последнее, но не менее важное: '' '' '' '' '' '' 'символы, которые мы обычно выходим в URL с'% 5B' и '% 5D'. – Cecile
Я не думаю, что может быть какое-либо сомнение в значении выражения: спецификация SPARQL документирует его нотацию (указывая на XML 1.1), и выражение синтаксически законно и недвусмысленно в задокументированной нотации. Может быть непонятно, почему РГ выбрала именно тот способ выражения ограничения или почему они выбрали это конкретное ограничение, но совсем неясно, какое ограничение находится в спецификации. –
Сегодня я обнаружил, что rdflib для Python не соответствует нотации «-». Вместо этого они помещают ']', \ и '[' непосредственно в класс символов в скобках: IRIREF = r '<([^<> "{} | ^' \] \\\ [\ x00- \ x20]) *>', и они говорят "[это] Из грамматики SPARQL" – Cecile