|
136 | 136 | | ( "," <ws> "\"USEOBJECTS\":" <ws> <string_array> <ws> ) ) |
137 | 137 | ( ( "," <ws> "\"FORMULA\":" <ws> <logical_expression> <ws> ) |
138 | 138 | | ("," <ws> "\"USEFORMULA\":" <ws> <StringLiteral> <ws> ) ) |
139 | | - ("," <ws> "\"FRAGMENT\":" <ws> <StringLiteral> <ws> )? |
140 | | - ( ( "," <ws> "\"FILTER\":" <ws> <logical_expression> <ws> ) |
141 | | - | ("," <ws> "\"USEFILTER\":" <ws> <StringLiteral> <ws> ) )? |
| 139 | + ( "," <ws> "\"FILTER\":" <ws> <security_query_filter> <ws> )? |
142 | 140 | "}" |
143 | 141 |
|
| 142 | +<security_query_filter> ::= "{" <ws> |
| 143 | + ( ( "\"FRAGMENT\":" <ws> <StringLiteral> <ws> |
| 144 | + "," <ws> "\"CONDITION\":" <ws> <logical_expression> <ws> ) |
| 145 | + | ( "\"USEFORMULA\":" <ws> <StringLiteral> <ws> ) ) |
| 146 | + "}" |
| 147 | + |
144 | 148 | <acl> ::= "{" <ws> |
145 | 149 | ( ( "\"ATTRIBUTES\":" <ws> <attribute_array> <ws> ) |
146 | 150 | | ( "\"USEATTRIBUTES\":" <ws> <string_array> <ws> ) ) |
|
200 | 204 | <boolean> ::= ("true" | "false") |
201 | 205 | <DateTimeLiteral> ::= "\"" <datetime> "\"" <ws> |
202 | 206 | <TimeLiteral> ::= "\"" <time> "\"" <ws> |
203 | | -<datetime> ::= <date> <ws> ( "T" | " " ) <ws> <time> <ws> ( <timezone> <ws> )? |
204 | | -<date> ::= <year> <ws> "-" <ws> <month> <ws> "-" <ws> <day> <ws> |
205 | | -<year> ::= <digit> <ws> <digit> <ws> <digit> <ws> <digit> <ws> |
206 | | -<month> ::= <digit> <ws> <digit> <ws> |
207 | | -<day> ::= <digit> <ws> <digit> <ws> |
208 | | -<time> ::= <hour> <ws> ":" <ws> <minute> <ws> ( ":" <ws> <second> <ws> )? ( "." <ws> <fraction> <ws> )? |
209 | | -<timezone> ::= ( "Z" | ( "+" | "-" ) <ws> <hour> <ws> ":" <ws> <minute> <ws> ) |
210 | | -<hour> ::= <digit> <ws> <digit> <ws> |
211 | | -<minute> ::= <digit> <ws> <digit> <ws> |
212 | | -<second> ::= <digit> <ws> <digit> <ws> |
213 | | -<fraction> ::= <digit>+ <ws> |
214 | | - |
215 | | -<digit> ::= [0-9] <ws> |
216 | | -<StringLiteral> ::= "\"" ( [A-Z] | [a-z] | [0-9] | "/" | "*" | "[" | "]" | "(" | ")" | " " | "_" | "@" | "#" | "\\" | "+" | "-" | "." | "," | ":" | "$" | "^" | "*" )+ "\"" |
| 207 | +<datetime> ::= <date> ( "T" )? <time> ( <timezone> )? |
| 208 | +<date> ::= <year> "-" <month> "-" <day> |
| 209 | +<year> ::= <digit> <digit> <digit> <digit> |
| 210 | +<month> ::= <digit> <digit> |
| 211 | +<day> ::= <digit> <digit> |
| 212 | +<time> ::= <hour> ":" <minute> ( ":" <second> )? ( "." <fraction> )? |
| 213 | +<timezone> ::= ( "Z" | ( "+" | "-" ) <hour> ":" <minute> ) |
| 214 | +<hour> ::= <digit> <digit> |
| 215 | +<minute> ::= <digit> <digit> |
| 216 | +<second> ::= <digit> <digit> |
| 217 | +<fraction> ::= <digit>+ |
| 218 | + |
| 219 | +<digit> ::= [0-9] |
| 220 | +<StringLiteral> ::= "\"" ( [A-Z] | [a-z] | [0-9] | "/" | "*" | "[" | "]" | "(" | ")" | " " | "_" | "@" | "#" | "\\" | "+" | "-" | "." | "," | ":" | "$" | "^" )+ "\"" |
217 | 221 | <ClaimLiteral> ::= <StringLiteral> |
218 | 222 | <ReferenceLiteral> ::= <StringLiteral> |
219 | 223 | <RouteLiteral> ::= <StringLiteral> |
|
225 | 229 | <HexLiteral> ::= "\"" "16#" ( [0-9] | [A-F] )+ "\"" |
226 | 230 | <BoolLiteral> ::= "true" | "false" |
227 | 231 |
|
228 | | -<FieldIdentifier> ::= "\"" <FieldIdentifierString> "\"" |
229 | | -<FieldIdentifierString> ::= <FieldIdentifierAAS> | <FieldIdentifierSM> | <FieldIdentifierSME> | <FieldIdentifierCD> | <FieldIdentifierAasDescriptor> | <FieldIdentifierSmDescriptor> |
230 | | -<FieldIdentifierAAS> ::= "$aas#" ( "idShort" | "id" | "assetInformation.assetKind" | "assetInformation.assetType" | "assetInformation.globalAssetId" | "assetInformation." <SpecificAssetIdsClause> | "submodels." <ReferenceClause> ) |
| 232 | +<FieldIdentifier> ::= "\"" ( <FieldIdentifierAAS> | <FieldIdentifierSM> | <FieldIdentifierSME> | <FieldIdentifierCD> | <FieldIdentifierAasDescriptor> | <FieldIdentifierSmDescriptor> ) "\"" |
| 233 | +<FieldIdentifierAAS> ::= "$aas#" ( "idShort" | "id" | "assetInformation.assetKind" | "assetInformation.assetType" | "assetInformation.globalAssetId" | "assetInformation." <SpecificAssetIdsClause> | "submodels" ( "[" ( [0-9]* ) "]" ) "." <ReferenceClause> ) |
231 | 234 | <FieldIdentifierSM> ::= "$sm#" ( <SemanticIdClause> | "idShort" | "id" ) |
232 | 235 | <FieldIdentifierSME> ::= "$sme" ( "." <idShortPath> )? "#" ( <SemanticIdClause> | "idShort" | "value" | "valueType" | "language" ) |
233 | 236 | <FieldIdentifierCD> ::= "$cd#" ( "idShort" | "id" ) <ws> |
234 | | -<FieldIdentifierAasDescriptor> ::= "$aasdesc#" ( "idShort" | "id" | "assetKind" | "assetType" | "globalAssetId" | <SpecificAssetIdsClause> | "endpoints" ( "[" ( [0-9]* ) "]" )? "." <EndpointClause> | "submodelDescriptors" ( "[" ( [0-9]* ) "]" )? "." <SmDescriptorClause> ) |
| 237 | +<FieldIdentifierAasDescriptor> ::= "$aasdesc#" ( "idShort" | "id" | "assetKind" | "assetType" | "globalAssetId" | <SpecificAssetIdsClause> | "endpoints" ( "[" ( [0-9]* ) "]" ) "." <EndpointClause> | "submodelDescriptors" ( "[" ( [0-9]* ) "]" ) "." <SmDescriptorClause> ) |
235 | 238 | <FieldIdentifierSmDescriptor> ::= "$smdesc#" <SmDescriptorClause> |
236 | | -<SmDescriptorClause> ::= ( <SemanticIdClause> | "idShort" | "id" | "endpoints" ( "[" ( [0-9]* ) "]" )? "." <EndpointClause> ) |
| 239 | +<SmDescriptorClause> ::= ( <SemanticIdClause> | "idShort" | "id" | "endpoints" ( "[" ( [0-9]* ) "]" ) "." <EndpointClause> ) |
237 | 240 | <EndpointClause> ::= "interface" | "protocolinformation.href" |
238 | | -<ReferenceClause> ::= ( "type" | "keys" ( "[" ( [0-9]* ) "]" )? ( ".type" | ".value" ) ) |
| 241 | +<ReferenceClause> ::= ( "type" | "keys" ( "[" ( [0-9]* ) "]" ) ( ".type" | ".value" ) ) |
239 | 242 | <SemanticIdClause> ::= ( "semanticId" | "semanticId." <ReferenceClause> ) |
240 | | -<SpecificAssetIdsClause> ::= ( "specificAssetIds" ( "[" ( [0-9]* ) "]" )? ( ".name" | ".value" | ".externalSubjectId" | ".externalSubjectId." <ReferenceClause> ) ) |
241 | | -<idShortPath> ::= ( <idShort> ("[" ( [0-9]* ) "]" )? ( "." <idShortPath> )* ) |
242 | | -<idShort> ::= ( ( [a-z] | [A-Z] ) ( [a-z] | [A-Z] | [0-9] | "_" )* ) |
| 243 | +<SpecificAssetIdsClause> ::= ( "specificAssetIds" ( "[" ( [0-9]* ) "]" ) ( ".name" | ".value" | ".externalSubjectId" | ".externalSubjectId." <ReferenceClause> ) ) |
| 244 | +<idShortPath> ::= ( <idShort> ("[" ( [0-9]* ) "]" )* ( "." <idShortPath> )* ) |
| 245 | +<idShort> ::= ( ( [a-z] | [A-Z] ) (( [a-z] | [A-Z] | [0-9] | "_" | "-" )* ( [a-z] | [A-Z] | [0-9] | "_" ) )? ) |
243 | 246 |
|
244 | 247 | <ws> ::= ( " " | "\t" | "\r" | "\n" )* |
0 commit comments