diff --git a/spec/index.html b/spec/index.html index ee97207..fc4fbb9 100644 --- a/spec/index.html +++ b/spec/index.html @@ -6251,6 +6251,130 @@
LANG
+ +

@@LANGDIR@@ Revisions for LANGDIR

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Function"abc"@ar"abc"@ar--rtlnotes
LANG"ar""ar"behaves like old text
LANGDIR"""rtl"New function
DATATYPErdf:langStringrdf:dirLangString
+ +
+
isLANG
+
 xsd:string  isLANG (RDF term term)
+            
+

+ The function isLang returns true if the + argument is a literal with a language + tag. Otherwise, the function returns false. +

+

If the argument is a lteral, the function is + equivalent to testing for the datatype of the + literal being either rdf:langString + or rdf:dirLangString. +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ExpressionResult
isLANG("abc"@en)true
isLANG(1)false
isLANG(<http://example/>)false
isLANG("abc@en--ltrl"true
isLANG("تصميم المواقع"@ar-ltr)true
+
+
+
+
LANGDIR
+
 xsd:string  LANGDIR (literal ltrl)
+            
+

+ If the argument is a literal, + The function LANGDIR returns the + language direction of a literal with datatype + rdf:dirLangString. + Otherwise, the function return the empty + string. +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ExpressionResult
LANGDIR("abc"@en--ltr)"ltr"
LANGDIR("abc"@en)""
LANGDIR("abc")""
LANGDIR(1)""
LANGDIR(<http://example/>)error
+
DATATYPE
@@ -6448,6 +6572,11 @@
Argument Compatibility Rules
  • The arguments are literals with datatype xsd:string
  • The arguments are literals with identical language tags
  • The first argument is a literal with a language tag and the second argument is a literal with datatype xsd:string
  • +
  • @@LANGDIR@@ The arguments have datatype rdf:dirLangString + with identical language and text direction. +
  • +
  • @@LANGDIR@@ The first argument has datatype rdf:dirLangString, + and the second argument has datatype xsd:string.
  • @@ -11196,7 +11325,7 @@

    Grammar

    - + @@ -11252,7 +11381,7 @@

    Grammar

    - + @@ -11332,237 +11461,244 @@

    Grammar

    + + + + + + + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +
    [127]   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 ')'
    | 'isLANG' '(' 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 ')'
    [135]   RDFLiteral   ::=  String ( LANGTAG | ( '^^' iri ) )?String ( LANG_DIR | ( '^^' iri ) )?
    [146]  S  ::=  
    [147]   PNAME_NS   ::=   PN_PREFIX? ':'
    [147]  [148]   PNAME_LN   ::=   PNAME_NS PN_LOCAL
    [148]  [149]   BLANK_NODE_LABEL   ::=   '_:' ( PN_CHARS_U | [0-9] ) ((PN_CHARS|'.')* PN_CHARS)?
    [149]  [150]   VAR1   ::=   '?' VARNAME
    [150]  [151]   VAR2   ::=   '$' VARNAME
    [151]  LANGTAG[152]  LANG_DIR   ::=  '@' [a-zA-Z]+ ('-' [a-zA-Z0-9]+)*'@' [a-zA-Z]+ ('-' [a-zA-Z0-9]+)* ('--' [a-zA-Z]+)?
    [152]  [153]   INTEGER   ::=   [0-9]+
    [153]  [154]   DECIMAL   ::=   [0-9]* '.' [0-9]+
    [154]  [155]   DOUBLE   ::=   [0-9]+ '.' [0-9]* EXPONENT | '.' ([0-9])+ EXPONENT | ([0-9])+ EXPONENT
    [155]  [156]   INTEGER_POSITIVE   ::=   '+' INTEGER
    [156]  [157]   DECIMAL_POSITIVE   ::=   '+' DECIMAL
    [157]  [158]   DOUBLE_POSITIVE   ::=   '+' DOUBLE
    [158]  [159]   INTEGER_NEGATIVE   ::=   '-' INTEGER
    [159]  [160]   DECIMAL_NEGATIVE   ::=   '-' DECIMAL
    [160]  [161]   DOUBLE_NEGATIVE   ::=   '-' DOUBLE
    [161]  [162]   EXPONENT   ::=   [eE] [+-]? [0-9]+
    [162]  [163]   STRING_LITERAL1   ::=   "'" ( ([^#x27#x5C#xA#xD]) | ECHAR )* "'"
    [163]  [164]   STRING_LITERAL2   ::=   '"' ( ([^#x22#x5C#xA#xD]) | ECHAR )* '"'
    [164]  [165]   STRING_LITERAL_LONG1   ::=   "'''" ( ( "'" | "''" )? ( [^'\] | ECHAR ) )* "'''"
    [165]  [166]   STRING_LITERAL_LONG2   ::=   '"""' ( ( '"' | '""' )? ( [^"\] | ECHAR ) )* '"""'
    [166]  [167]   ECHAR   ::=   '\' [tbnrf\"']
    [167]  [168]   NIL   ::=   '(' WS* ')'
    [168]  [169]   WS   ::=   #x20 | #x9 | #xD | #xA
    [169]  [170]   ANON   ::=   '[' WS* ']'
    [170]  [171]   PN_CHARS_BASE   ::=   [A-Z] | [a-z] | [#x00C0-#x00D6] | [#x00D8-#x00F6] | [#x00F8-#x02FF] | [#x0370-#x037D] | [#x037F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]
    [171]  [172]   PN_CHARS_U   ::=   PN_CHARS_BASE | '_'
    [172]  [173]   VARNAME   ::=   ( PN_CHARS_U | [0-9] ) ( PN_CHARS_U | [0-9] | #x00B7 | [#x0300-#x036F] | [#x203F-#x2040] )*
    [173]  [174]   PN_CHARS   ::=   PN_CHARS_U | '-' | [0-9] | #x00B7 | [#x0300-#x036F] | [#x203F-#x2040]
    [174]  [175]   PN_PREFIX   ::=   PN_CHARS_BASE ((PN_CHARS|'.')* PN_CHARS)?
    [175]  [176]   PN_LOCAL   ::=   (PN_CHARS_U | ':' | [0-9] | PLX ) ((PN_CHARS | '.' | ':' | PLX)* (PN_CHARS | ':' | PLX) )?
    [176]  [177]   PLX   ::=   PERCENT | PN_LOCAL_ESC
    [177]  [178]   PERCENT   ::=   '%' HEX HEX
    [178]  [179]   HEX   ::=   [0-9] | [A-F] | [a-f]
    [179]  [180]   PN_LOCAL_ESC   ::=   '\' ( '_' | '~' | '.' | '-' | '!' | '$' | '&' | "'" | '(' | ')' | '*' | '+' | ',' | ';' | '=' | '/' | '?' | '#' | '@' | '%' )