From 12923add722c70a311fadfaebff847e96dfb9ba0 Mon Sep 17 00:00:00 2001 From: Andy Seaborne Date: Thu, 12 Sep 2024 08:54:03 +0100 Subject: [PATCH] SPARQL Grammar: initial text direction; nested reified triples --- spec/index.html | 107 +++++++++++++++++++++++++----------------------- 1 file changed, 55 insertions(+), 52 deletions(-) diff --git a/spec/index.html b/spec/index.html index a383602..27b3d97 100644 --- a/spec/index.html +++ b/spec/index.html @@ -10469,6 +10469,7 @@

Grammar

and not for other path expressions. +
@@ -11289,263 +11290,256 @@

Grammar

- + - - - - - - - - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -11557,54 +11551,61 @@

Grammar

[117]   ReifiedTriple   ::=  '<<' VarOrTerm Verb VarOrTerm Reifier? '>>''<<' ( VarOrTerm | ReifiedTriple ) Verb ( VarOrTerm | ReifiedTriple ) Reifier? '>>'
[118]  ReifiedTripleData  ::=  '<<' DataValueTerm ( iri | 'a' ) DataValueTerm ReifierData? '>>'
[119]   TripleTerm   ::=   '<<(' VarOrTerm Verb VarOrTerm ')>>'
[120]  [119]   TripleTermData   ::=   '<<(' DataValueTerm ( iri | 'a' ) DataValueTerm ')>>'
[121]  [120]   DataValueTerm   ::=   iri | RDFLiteral | NumericLiteral | BooleanLiteral | TripleTermData
[122]  [121]   VarOrIri   ::=   Var | iri
[123]  [122]   Var   ::=   VAR1 | VAR2
[124]  [123]   Expression   ::=   ConditionalOrExpression
[125]  [124]   ConditionalOrExpression   ::=   ConditionalAndExpression ( '||' ConditionalAndExpression )*
[126]  [125]   ConditionalAndExpression   ::=   ValueLogical ( '&&' ValueLogical )*
[127]  [126]   ValueLogical   ::=   RelationalExpression
[128]  [127]   RelationalExpression   ::=   NumericExpression ( '=' NumericExpression | '!=' NumericExpression | '<' NumericExpression | '>' NumericExpression | '<=' NumericExpression | '>=' NumericExpression | 'IN' ExpressionList | 'NOT' 'IN' ExpressionList )?
[129]  [128]   NumericExpression   ::=   AdditiveExpression
[130]  [129]   AdditiveExpression   ::=   MultiplicativeExpression ( '+' MultiplicativeExpression | '-' MultiplicativeExpression | ( NumericLiteralPositive | NumericLiteralNegative ) ( ( '*' UnaryExpression ) | ( '/' UnaryExpression ) )* )*
[131]  [130]   MultiplicativeExpression   ::=   UnaryExpression ( '*' UnaryExpression | '/' UnaryExpression )*
[132]  [131]   UnaryExpression   ::=     '!' PrimaryExpression
| '+' PrimaryExpression
| '-' PrimaryExpression
| PrimaryExpression
[133]  [132]   PrimaryExpression   ::=   BrackettedExpression | BuiltInCall | iriOrFunction | RDFLiteral | NumericLiteral | BooleanLiteral | Var | ExprTripleTerm
[134]  [133]   ExprVarOrTerm   ::=   iri | RDFLiteral | NumericLiteral | BooleanLiteral | Var | ExprTripleTerm
[135]  [134]   ExprTripleTerm   ::=   '<<(' ExprVarOrTerm Verb ExprVarOrTerm ')>>'
[136]  [135]   BrackettedExpression   ::=   '(' Expression ')'
[137]  [136]   BuiltInCall   ::=    Aggregate
| 'STR' '(' Expression ')'
| 'LANG' '(' Expression ')'
| 'LANGMATCHES' '(' Expression ',' Expression ')'
| 'DATATYPE' '(' Expression ')'
| 'BOUND' '(' Var ')'
| 'IRI' '(' Expression ')'
| 'URI' '(' Expression ')'
| 'BNODE' ( '(' Expression ')' | NIL )
| 'RAND' NIL
| 'ABS' '(' Expression ')'
| 'CEIL' '(' Expression ')'
| 'FLOOR' '(' Expression ')'
| 'ROUND' '(' Expression ')'
| 'CONCAT' ExpressionList
| SubstringExpression
| 'STRLEN' '(' Expression ')'
| StrReplaceExpression
| 'UCASE' '(' Expression ')'
| 'LCASE' '(' Expression ')'
| 'ENCODE_FOR_URI' '(' Expression ')'
| 'CONTAINS' '(' Expression ',' Expression ')'
| 'STRSTARTS' '(' Expression ',' Expression ')'
| 'STRENDS' '(' Expression ',' Expression ')'
| 'STRBEFORE' '(' Expression ',' Expression ')'
| 'STRAFTER' '(' Expression ',' Expression ')'
| 'YEAR' '(' Expression ')'
| 'MONTH' '(' Expression ')'
| 'DAY' '(' Expression ')'
| 'HOURS' '(' Expression ')'
| 'MINUTES' '(' Expression ')'
| 'SECONDS' '(' Expression ')'
| 'TIMEZONE' '(' Expression ')'
| 'TZ' '(' Expression ')'
| 'NOW' NIL
| 'UUID' NIL
| 'STRUUID' NIL
| 'MD5' '(' Expression ')'
| 'SHA1' '(' Expression ')'
| 'SHA256' '(' Expression ')'
| 'SHA384' '(' Expression ')'
| 'SHA512' '(' Expression ')'
| 'COALESCE' ExpressionList
| 'IF' '(' Expression ',' Expression ',' Expression ')'
| 'STRLANG' '(' Expression ',' Expression ')'
| 'STRDT' '(' Expression ',' Expression ')'
| 'sameTerm' '(' Expression ',' Expression ')'
| 'isIRI' '(' Expression ')'
| 'isURI' '(' Expression ')'
| 'isBLANK' '(' Expression ')'
| 'isLITERAL' '(' Expression ')'
| 'isNUMERIC' '(' Expression ')'
| RegexExpression
| ExistsFunc
| NotExistsFunc
| 'isTRIPLE' '(' Expression ')'
| 'TRIPLE' '(' Expression ',' Expression ',' Expression ')'
| 'SUBJECT' '(' Expression ')'
| 'PREDICATE' '(' Expression ')'
| 'OBJECT' '(' Expression ')'
  Aggregate
| 'STR' '(' Expression ')'
| 'LANG' '(' Expression ')'
| 'LANGMATCHES' '(' Expression ',' Expression ')'
| 'LANGDIR' '(' Expression ')'
| 'DATATYPE' '(' Expression ')'
| 'BOUND' '(' Var ')'
| 'IRI' '(' Expression ')'
| 'URI' '(' Expression ')'
| 'BNODE' ( '(' Expression ')' | NIL )
| 'RAND' NIL
| 'ABS' '(' Expression ')'
| 'CEIL' '(' Expression ')'
| 'FLOOR' '(' Expression ')'
| 'ROUND' '(' Expression ')'
| 'CONCAT' ExpressionList
| SubstringExpression
| 'STRLEN' '(' Expression ')'
| StrReplaceExpression
| 'UCASE' '(' Expression ')'
| 'LCASE' '(' Expression ')'
| 'ENCODE_FOR_URI' '(' Expression ')'
| 'CONTAINS' '(' Expression ',' Expression ')'
| 'STRSTARTS' '(' Expression ',' Expression ')'
| 'STRENDS' '(' Expression ',' Expression ')'
| 'STRBEFORE' '(' Expression ',' Expression ')'
| 'STRAFTER' '(' Expression ',' Expression ')'
| 'YEAR' '(' Expression ')'
| 'MONTH' '(' Expression ')'
| 'DAY' '(' Expression ')'
| 'HOURS' '(' Expression ')'
| 'MINUTES' '(' Expression ')'
| 'SECONDS' '(' Expression ')'
| 'TIMEZONE' '(' Expression ')'
| 'TZ' '(' Expression ')'
| 'NOW' NIL
| 'UUID' NIL
| 'STRUUID' NIL
| 'MD5' '(' Expression ')'
| 'SHA1' '(' Expression ')'
| 'SHA256' '(' Expression ')'
| 'SHA384' '(' Expression ')'
| 'SHA512' '(' Expression ')'
| 'COALESCE' ExpressionList
| 'IF' '(' Expression ',' Expression ',' Expression ')'
| 'STRLANG' '(' Expression ',' Expression ')'
| 'STRLANGDIR' '(' Expression ',' Expression ',' Expression ')'
| 'STRDT' '(' Expression ',' Expression ')'
| 'sameTerm' '(' Expression ',' Expression ')'
| 'isIRI' '(' Expression ')'
| 'isURI' '(' Expression ')'
| 'isBLANK' '(' Expression ')'
| 'isLITERAL' '(' Expression ')'
| 'isNUMERIC' '(' Expression ')'
| IS_LANG '(' Expression ')'
| IS_LANGDIR '(' Expression ')'
| RegexExpression
| ExistsFunc
| NotExistsFunc
| 'isTRIPLE' '(' Expression ')'
| 'TRIPLE' '(' Expression ',' Expression ',' Expression ')'
| 'SUBJECT' '(' Expression ')'
| 'PREDICATE' '(' Expression ')'
| 'OBJECT' '(' Expression ')'
[138]  [137]   RegexExpression   ::=   'REGEX' '(' Expression ',' Expression ( ',' Expression )? ')'
[139]  [138]   SubstringExpression   ::=   'SUBSTR' '(' Expression ',' Expression ( ',' Expression )? ')'
[140]  [139]   StrReplaceExpression   ::=   'REPLACE' '(' Expression ',' Expression ',' Expression ( ',' Expression )? ')'
[141]  [140]   ExistsFunc   ::=   'EXISTS' GroupGraphPattern
[142]  [141]   NotExistsFunc   ::=   'NOT' 'EXISTS' GroupGraphPattern
[143]  [142]   Aggregate   ::=     'COUNT' '(' 'DISTINCT'? ( '*' | Expression ) ')'
| 'SUM' '(' 'DISTINCT'? Expression ')'
| 'MIN' '(' 'DISTINCT'? Expression ')'
| 'MAX' '(' 'DISTINCT'? Expression ')'
| 'AVG' '(' 'DISTINCT'? Expression ')'
| 'SAMPLE' '(' 'DISTINCT'? Expression ')'
| 'GROUP_CONCAT' '(' 'DISTINCT'? Expression ( ';' 'SEPARATOR' '=' String )? ')'
[144]  [143]   iriOrFunction   ::=   iri ArgList?
[145]  [144]   RDFLiteral   ::=  String ( LANGTAG | ( '^^' iri ) )?String ( LANG_DIR | ( '^^' iri ) )?
[146]  [145]   NumericLiteral   ::=   NumericLiteralUnsigned | NumericLiteralPositive | NumericLiteralNegative
[147]  [146]   NumericLiteralUnsigned   ::=   INTEGER | DECIMAL | DOUBLE
[148]  [147]   NumericLiteralPositive   ::=   INTEGER_POSITIVE | DECIMAL_POSITIVE | DOUBLE_POSITIVE
[149]  [148]   NumericLiteralNegative   ::=   INTEGER_NEGATIVE | DECIMAL_NEGATIVE | DOUBLE_NEGATIVE
[150]  [149]   BooleanLiteral   ::=   'true' | 'false'
[151]  [150]   String   ::=   STRING_LITERAL1 | STRING_LITERAL2 | STRING_LITERAL_LONG1 | STRING_LITERAL_LONG2
[152]  [151]   iri   ::=   IRIREF | PrefixedName
[153]  [152]   PrefixedName   ::=   PNAME_LN | PNAME_NS
[154]  [153]   BlankNode   ::=   BLANK_NODE_LABEL | ANON
- + - + - + - + - + - + - + + + + + + + + @@ -11803,6 +11804,7 @@

Grammar

[155]  [154]   IRIREF   ::=   '<' ([^<>"{}|^`\]-[#x00-#x20])* '>'
[156]  [155]   PNAME_NS   ::=   PN_PREFIX? ':'
[157]  [156]   PNAME_LN   ::=   PNAME_NS PN_LOCAL
[158]  [157]   BLANK_NODE_LABEL   ::=   '_:' ( PN_CHARS_U | [0-9] ) ((PN_CHARS|'.')* PN_CHARS)?
[159]  [158]   VAR1   ::=   '?' VARNAME
[160]  [159]   VAR2   ::=   '$' VARNAME
[161]  [160]   LANGTAG   ::=   '@' [a-zA-Z]+ ('-' [a-zA-Z0-9]+)*
[161]  LANG_DIR  ::=  '@' [a-zA-Z]+ ('-' [a-zA-Z0-9]+)* ('--' [a-zA-Z]+)?
[162]   INTEGER
+ @@ -11889,6 +11891,7 @@

Changes between SPARQL 1.1 Query Language and SPARQL 1.2 Query Language

  • Remove concepts of plain and simple literals, in favor of explicit mentions of xsd:string
  • Update grammar for triple terms, reifiers, reified triples, annotation syntax, and triple term functions in
  • +
  • Update grammar for initial text direction syntax and functions in
  • Migrate XML Schema references to 1.1
  • Update references to XPath from 2.0 to 3.1
  • Add functions on triple terms to