|
41 | 41 | "GLOBAL" <ws> "(" <ws> ( "LOCALNOW" | "UTCNOW" | "CLIENTNOW" | "ANONYMOUS" ) <ws> ")" |
42 | 42 |
|
43 | 43 | <ReferenceAttribute> ::= |
44 | | - "REFERENCE" <ws> "(" <ws> <ReferenceLiteral> <ws> ")" |
| 44 | + "REFERENCE(" ( |
| 45 | + ("$aas" <IdentifierInstance> "#" <FieldsAAS> ) | |
| 46 | + ("$sm" <IdentifierInstance> "#" <FieldsSM> ) | |
| 47 | + ("$cd" <IdentifierInstance> "#" <FieldsCD> ) | |
| 48 | + ("$sme" <IdentifierInstance> "." <idShortPath> "#" <FieldsSME> ) |
| 49 | + ) ")" |
45 | 50 |
|
46 | 51 | <AttributeGroup> ::= |
47 | 52 | ( <SingleAttribute> <ws> )* |
|
56 | 61 | <RouteObject> ::= |
57 | 62 | "ROUTE" <ws> <RouteLiteral> <ws> |
58 | 63 |
|
| 64 | +<IdentifierInstance> ::= "(" <StringLiteral> ")" |
| 65 | +<IdentifierInstanceOrAll> ::= <IdentifierInstance> | "(\"*\")" |
| 66 | + |
59 | 67 | <IdentifiableObject> ::= |
60 | | - "IDENTIFIABLE" <ws> <IdentifiableLiteral> <ws> |
| 68 | + "IDENTIFIABLE" <ws> ("$aas" | "$sm" | "$cd") <IdentifierInstanceOrAll> |
61 | 69 |
|
62 | 70 | <ReferableObject> ::= |
63 | | - "REFERABLE" <ws> <ReferableLiteral> <ws> |
| 71 | + "REFERABLE" <ws> "$sme" <IdentifierInstanceOrAll> "." <idShortPath> |
64 | 72 |
|
65 | 73 | <FragmentObject> ::= |
66 | | - "FRAGMENT" <ws> <FragmentLiteral> <ws> |
67 | | - |
| 74 | + "FRAGMENT" <ws> "$sme" <IdentifierInstanceOrAll> "." <idShortPath> ( <ws> <StringLiteral> )+ |
| 75 | + |
68 | 76 | <DescriptorObject> ::= |
69 | | - "DESCRIPTOR" <ws> <DescriptorLiteral> <ws> |
| 77 | + "DESCRIPTOR" <ws> ("$aasdesc" | "$smdesc") <IdentifierInstanceOrAll> |
70 | 78 |
|
71 | 79 | <ObjectGroup> ::= |
72 | 80 | ( <SingleObject> <ws> )* |
|
103 | 111 | <stringComparison> ::= |
104 | 112 | ( ( "$starts-with" | "$ends-with" | "$contains" | "$regex") <ws> "(" <ws> <stringOperand> <ws> "," <ws> <stringOperand> <ws> ")" <ws> ) | |
105 | 113 | ( <stringOperand> <ws> <allComparisons> <ws> <stringOperand> <ws> ) | |
106 | | - ( <stringOperand> <ws> <allComparisons> <ws> <FieldIdentifierString> <ws> ) | |
107 | | - ( <FieldIdentifierString> <ws> <allComparisons> <ws> <stringOperand> <ws> ) |
| 114 | + ( <stringOperand> <ws> <allComparisons> <ws> <FieldIdentifier> <ws> ) | |
| 115 | + ( <FieldIdentifier> <ws> <allComparisons> <ws> <stringOperand> <ws> ) |
108 | 116 |
|
109 | 117 | <numericalComparison> ::= |
110 | 118 | ( <numericalOperand> <ws> <allComparisons> <ws> <numericalOperand> <ws> ) | |
111 | | - ( <numericalOperand> <ws> <allComparisons> <ws> <FieldIdentifierString> <ws> ) | |
112 | | - ( <FieldIdentifierString> <ws> <allComparisons> <ws> <numericalOperand> <ws> ) |
| 119 | + ( <numericalOperand> <ws> <allComparisons> <ws> <FieldIdentifier> <ws> ) | |
| 120 | + ( <FieldIdentifier> <ws> <allComparisons> <ws> <numericalOperand> <ws> ) |
113 | 121 |
|
114 | 122 | <hexComparison> ::= |
115 | 123 | <hexOperand> <ws> <allComparisons> <ws> <hexOperand> <ws> |
|
129 | 137 | <operand> ::= <stringOperand> | <numericalOperand> | <hexOperand> | <boolOperand> | <dateTimeOperand> | <timeOperand> |
130 | 138 |
|
131 | 139 | <stringOperand> ::= |
132 | | - <FieldIdentifierString> | <StringLiteral> | <castToString> | <SingleAttribute> |
| 140 | + <FieldIdentifier> | <StringLiteral> | <castToString> | <SingleAttribute> |
133 | 141 |
|
134 | 142 | <numericalOperand> ::= |
135 | 143 | <NumericalLiteral> | <castToNumerical> | <dateTimeToNum> |
|
164 | 172 | <castToTime> ::= |
165 | 173 | "time" <ws> "(" <ws> ( <stringOperand> | <dateTimeOperand> ) <ws> ")" <ws> |
166 | 174 |
|
167 | | - |
168 | 175 | <DateTimeLiteral> ::= <datetime> <ws> |
169 | 176 | <TimeLiteral> ::= <time> <ws> |
170 | | -<datetime> ::= <date> <ws> ( "T" | " " ) <ws> <time> <ws> ( <timezone> <ws> )? |
171 | | -<date> ::= <year> <ws> "-" <ws> <month> <ws> "-" <ws> <day> <ws> |
172 | | -<year> ::= <digit> <ws> <digit> <ws> <digit> <ws> <digit> <ws> |
173 | | -<month> ::= <digit> <ws> <digit> <ws> |
174 | | -<day> ::= <digit> <ws> <digit> <ws> |
175 | | -<time> ::= <hour> <ws> ":" <ws> <minute> <ws> ( ":" <ws> <second> <ws> )? ( "." <ws> <fraction> <ws> )? |
176 | | -<timezone> ::= ( "Z" | ( "+" | "-" ) <ws> <hour> <ws> ":" <ws> <minute> <ws> ) |
177 | | -<hour> ::= <digit> <ws> <digit> <ws> |
178 | | -<minute> ::= <digit> <ws> <digit> <ws> |
179 | | -<second> ::= <digit> <ws> <digit> <ws> |
180 | | -<fraction> ::= <digit>+ <ws> |
181 | | - |
182 | | -<digit> ::= [0-9] <ws> |
| 177 | +<datetime> ::= <date> ( "T" | "" ) <time> ( <timezone> )? |
| 178 | +<date> ::= <year> "-" <month> "-" <day> |
| 179 | +<year> ::= <digit> <digit> <digit> <digit> |
| 180 | +<month> ::= <digit> <digit> |
| 181 | +<day> ::= <digit> <digit> |
| 182 | +<time> ::= <hour> ":" <minute> ( ":" <second> )? ( "." <fraction> )? |
| 183 | +<timezone> ::= ( "Z" | ( "+" | "-" ) <hour> ":" <minute> ) |
| 184 | +<hour> ::= <digit> <digit> |
| 185 | +<minute> ::= <digit> <digit> |
| 186 | +<second> ::= <digit> <digit> |
| 187 | +<fraction> ::= <digit>+ |
| 188 | + |
| 189 | +<digit> ::= [0-9] |
183 | 190 | <StringLiteral> ::= "\"" ( [A-Z] | [a-z] | [0-9] | "/" | "*" | "[" | "]" | "(" | ")" | " " | "_" | "@" | "#" | "\\" | "+" | "-" | "." | "," | ":" | "$" | "^" )+ "\"" |
184 | 191 | <ClaimLiteral> ::= <StringLiteral> |
185 | | -<ReferenceLiteral> ::= <StringLiteral> |
186 | 192 | <RouteLiteral> ::= <StringLiteral> |
187 | 193 | <IdentifiableLiteral> ::= <StringLiteral> |
188 | 194 | <ReferableLiteral> ::= <StringLiteral> |
|
191 | 197 | <NumericalLiteral> ::= ( "+" | "-" )? ( [0-9]+ ( "." [0-9]* )? | "." [0-9]+ ) ( ( "e" | "E" )? [0-9]+ ) |
192 | 198 | <HexLiteral> ::= "16#" ( [0-9] | [A-F] )+ |
193 | 199 | <BoolLiteral> ::= "true" | "false" |
194 | | -<FieldIdentifier> ::= <FieldIdentifierString> |
195 | | -<FieldIdentifierString> ::= <FieldIdentifierAAS> | <FieldIdentifierSM> | <FieldIdentifierSME> | <FieldIdentifierCD> | <FieldIdentifierAasDescriptor> | <FieldIdentifierSmDescriptor> |
196 | | -<FieldIdentifierAAS> ::= "$aas#" ( "idShort" | "id" | "assetInformation.assetKind" | "assetInformation.assetType" | "assetInformation.globalAssetId" | "assetInformation." <SpecificAssetIdsClause> | "submodels." <ReferenceClause> ) |
197 | | -<FieldIdentifierSM> ::= "$sm#" ( <SemanticIdClause> | "idShort" | "id" ) |
198 | | -<FieldIdentifierSME> ::= "$sme" ( "." <idShortPath> )? "#" ( <SemanticIdClause> | "idShort" | "value" | "valueType" | "language" ) |
199 | | -<FieldIdentifierCD> ::= "$cd#" ( "idShort" | "id" ) <ws> |
| 200 | + |
| 201 | +<FieldIdentifier> ::= <FieldIdentifierAAS> | <FieldIdentifierSM> | <FieldIdentifierSME> | <FieldIdentifierCD> | <FieldIdentifierAasDescriptor> | <FieldIdentifierSmDescriptor> |
| 202 | +<FieldIdentifierAAS> ::= "$aas#" <FieldsAAS> |
| 203 | +<FieldsAAS> ::= "idShort" | "id" | "assetInformation.assetKind" | "assetInformation.assetType" | "assetInformation.globalAssetId" | "assetInformation." <SpecificAssetIdsClause> | "submodels." <ReferenceClause> |
| 204 | +<FieldIdentifierSM> ::= "$sm#" <FieldsSM> |
| 205 | +<FieldsSM> ::= <SemanticIdClause> | "idShort" | "id" |
| 206 | +<FieldIdentifierCD> ::= "$cd#" <FieldsCD> |
| 207 | +<FieldsCD> ::= "idShort" | "id" |
| 208 | +<FieldIdentifierSME> ::= "$sme" ( "." <idShortPath> )? "#" <FieldsSME> |
| 209 | +<FieldsSME> ::= <SemanticIdClause> | "idShort" | "value" | "valueType" | "language" |
200 | 210 | <FieldIdentifierAasDescriptor> ::= "$aasdesc#" ( "idShort" | "id" | "assetKind" | "assetType" | "globalAssetId" | <SpecificAssetIdsClause> | "endpoints" ( "[" ( [0-9]* ) "]" ) "." <EndpointClause> | "submodelDescriptors" ( "[" ( [0-9]* ) "]" ) "." <SmDescriptorClause> ) |
201 | 211 | <FieldIdentifierSmDescriptor> ::= "$smdesc#" <SmDescriptorClause> |
202 | 212 | <SmDescriptorClause> ::= ( <SemanticIdClause> | "idShort" | "id" | "endpoints" ( "[" ( [0-9]* ) "]" ) "." <EndpointClause> ) |
|
205 | 215 | <ReferenceClause> ::= ( "type" | "keys" ( "[" ( [0-9]* ) "]" ) ( ".type" | ".value" ) ) |
206 | 216 | <SemanticIdClause> ::= ( "semanticId" | "semanticId." <ReferenceClause> ) |
207 | 217 | <SpecificAssetIdsClause> ::= ( "specificAssetIds" ( "[" ( [0-9]* ) "]" ) ( ".name" | ".value" | ".externalSubjectId" | ".externalSubjectId." <ReferenceClause> ) ) |
208 | | -<idShortPath> ::= ( <idShort> ("[" ( [0-9]* ) "]" ) ( "." <idShortPath> )* ) |
209 | | -<idShort> ::= ( ( [a-z] | [A-Z] ) ( [a-z] | [A-Z] | [0-9] | "_" )* ) |
| 218 | +<idShortPath> ::= ( <idShort> ("[" ( [0-9]* ) "]" )* ( "." <idShortPath> )* ) |
| 219 | +<idShort> ::= ( ( [a-z] | [A-Z] ) (( [a-z] | [A-Z] | [0-9] | "_" | "-" )* ( [a-z] | [A-Z] | [0-9] | "_" ) )? ) |
210 | 220 |
|
211 | | -<ws> ::= ( " " | "\t" | "\r" | "\n" )+ |
| 221 | +<ws> ::= ( " " | "\t" | "\r" | "\n" )* |
0 commit comments