Date: Fri, 29 Mar 2024 06:27:25 +0000 (UTC) Message-ID: <2059156808.3179.1711693645428@[3.220.22.64]> Subject: Exported From Confluence MIME-Version: 1.0 Content-Type: multipart/related; boundary="----=_Part_3178_480475496.1711693645427" ------=_Part_3178_480475496.1711693645427 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-Location: file:///C:/exported.html
The following ABNF definition specifies the SNOMED = CT template syntax (v1.1.1). This syntax incorporates the Expression= Constraint Language version 1.4 (ECL v1.4), with some adaptations to suppo= rt slot references. It also incorporates 3 rules from Compositional Grammar= (SCG v2.4) to ensure that the definitionStatus rule is defined.
; Template Syntax v1.1
templateSlot =3D templateReplacementSlot / templateInfo= rmationSlot
templateReplacementSlot =3D conceptReplacementSlot / ex= pressionReplacementSlot / tokenReplacementSlot / concreteValueReplacementSl= ot
conceptReplacementSlot =3D "[[" ws "+" ws conceptReplac= ement [slotName ws] "]]"
expressionReplacementSlot =3D "[[" ws "+" ws expression= Replacement [slotName ws] "]]"
tokenReplacementSlot =3D "[[" ws "+" ws tokenReplacemen= t [slotName ws] "]]"
concreteValueReplacementSlot =3D "[[" ws "+" ws concret= eValueReplacement [slotName ws] "]]"
conceptReplacement =3D "id" ws [ "(" ws slotExpressionC= onstraint ws ")" ws]
expressionReplacement =3D ["scg" ws] ["(" ws slotExpres= sionConstraint ws ")" ws]
tokenReplacement =3D "tok" ws [ "(" ws slotTokenSet ws = ")" ws]
concreteValueReplacement =3D stringReplacement / intege= rReplacement / decimalReplacement / booleanReplacement
stringReplacement =3D "str" ws [ "(" ws slotStringSet w= s ")" ws]
integerReplacement =3D "int" ws [ "(" ws slotIntegerSet= ws ")" ws]
decimalReplacement =3D "dec" ws [ "(" ws slotDecimalSet= ws ")" ws]
booleanReplacement =3D "bool" ws [ "(" ws slotBooleanSe= t ws ")" ws]
slotTokenSet =3D slotToken *(mws slotToken)
slotStringSet =3D slotStringValue *(mws slotStringValue= )
slotStringValue =3D QM stringValue QM
slotIntegerSet =3D ( slotIntegerValue / slotIntegerRang= e) *(mws (slotIntegerValue / slotIntegerRange))
slotDecimalSet =3D ( slotDecimalValue / slotDecimalRang= e) *(mws (slotDecimalValue / slotDecimalRange))
slotBooleanSet =3D slotBooleanValue *(mws slotBooleanVa= lue)
slotBooleanValue =3D booleanValue
slotIntegerRange =3D ( slotIntegerMinimum to [ slotInte= gerMaximum ] ) / ( to slotIntegerMaximum )
slotIntegerMinimum =3D [ exclusiveMinimum ] slotInteger= Value
slotIntegerMaximum =3D [ exclusiveMaximum ] slotInteger= Value
slotIntegerValue =3D "#" ["-"/"+"] integerValue
slotDecimalRange =3D ( slotDecimalMinimum to [ slotDeci= malMaximum ] ) / ( to slotDecimalMaximum )
slotDecimalMinimum =3D [ exclusiveMinimum ] slotDecimal= Value
slotDecimalMaximum =3D [ exclusiveMaximum ] slotDecimal= Value
slotDecimalValue =3D "#" ["-"/"+"] decimalValue
exclusiveMinimum =3D ">"
exclusiveMaximum =3D "<"
slotName =3D "@" (slotStringValue / nonQuoteStringValue= )
slotToken =3D definitionStatus / memberOf / constraintO= perator / conjunction / disjunction / exclusion / reverseFlag / expressionC= omparisonOperator / numericComparisonOperator / stringComparisonOperator /b= ooleanComparisonOperator
nonQuoteStringValue =3D *(%x21 / %x23-26 / %x2A-3F / %x= 41-5A / %x5C / %x5E-7E) ; string with no ws, quotes, at, square brackets or= round brackets
templateInformationSlot =3D "[[" ws slotInformation ws = "]]"
slotInformation =3D [cardinality ws] [slotName ws]
; Expression Constraint Lan= guage v1.4
slotExpressionConstraint =3D ws ( slotRefinedExpression= Constraint / slotCompoundExpressionConstraint / slotDottedExpressionConstra= int / slotSubExpressionConstraint ) ws
slotRefinedExpressionConstraint =3D slotSubExpressionCo= nstraint ws ":" ws slotEclRefinement
slotCompoundExpressionConstraint =3D slotConjunctionExp= ressionConstraint / slotDisjunctionExpressionConstraint / slotExclusionExpr= essionConstraint
slotConjunctionExpressionConstraint =3D slotSubExpressi= onConstraint 1*(ws conjunction ws slotSubExpressionConstraint)
slotDisjunctionExpressionConstraint =3D slotSubExpressi= onConstraint 1*(ws disjunction ws slotSubExpressionConstraint)
slotExclusionExpressionConstraint =3D slotSubExpression= Constraint ws exclusion ws slotSubExpressionConstraint
slotDottedExpressionConstraint =3D slotSubExpressionCon= straint 1*(ws slotDottedExpressionAttribute)
slotDottedExpressionAttribute =3D dot ws slotEclAttribu= teName
slotSubExpressionConstraint =3D [constraintOperator ws]= [memberOf ws] (slotEclFocusConcept / "(" ws slotExpressionConstraint ws ")= ")
slotEclFocusConcept =3D slotEclConceptReference / wildC= ard
dot =3D "."
memberOf =3D "^"
slotEclConceptReference =3D conceptId [ws "|" ws term w= s "|"]
conceptId =3D sctId
term =3D 1*nonwsNonPipe *( 1*SP 1*nonwsNonPipe )
wildcard =3D "*"
constraintOperator =3D childOf / descendantOrSelfOf / d= escendantOf / parentOf / ancestorOrSelfOf / ancestorOf
descendantOf =3D "<"
descendantOrSelfOf =3D "<<"
childOf =3D "<!"
ancestorOf =3D ">"
ancestorOrSelfOf =3D ">>"
parentOf =3D ">!"
conjunction =3D (("a"/"A") ("n"/"N") ("d"/"D") mws) / "= ,"
disjunction =3D ("o"/"O") ("r"/"R") mws
exclusion =3D ("m"/"M") ("i"/"I") ("n"/"N") ("u"/"U") (= "s"/"S") mws
slotEclRefinement =3D slotSubRefinement ws [slotConjunc= tionRefinementSet / slotDisjunctionRefinementSet]
slotConjunctionRefinementSet =3D 1*(ws conjunction ws s= lotSubRefinement)
slotDisjunctionRefinementSet =3D 1*(ws disjunction ws s= lotSubRefinement)
slotSubRefinement =3D slotEclAttributeSet / slotEclAttr= ibuteGroup / "(" ws slotEclRefinement ws ")"
slotEclAttributeSet =3D slotSubAttributeSet ws [slotCon= junctionAttributeSet / slotDisjunctionAttributeSet]
slotConjunctionAttributeSet =3D 1*(ws conjunction ws sl= otSubAttributeSet)
slotDisjunctionAttributeSet =3D 1*(ws disjunction ws sl= otSubAttributeSet)
slotSubAttributeSet =3D slotEclAttribute / "(" ws slotE= clAttributeSet ws ")"
slotEclAttributeGroup =3D ["[" cardinality "]" ws] "{" = ws slotEclAttributeSet ws "}"
slotEclAttribute =3D ["[" cardinality "]" ws] [reverseF= lag ws] slotEclAttributeName ws (expressionComparisonOperator ws slotSubExp= ressionConstraint / numericComparisonOperator ws (slotIntegerValue /slotDec= imalValue) / stringComparisonOperator ws slotStringValue / booleanCompariso= nOperator ws slotBooleanValue)
cardinality =3D minValue to maxValue
minValue =3D nonNegativeIntegerValue
to =3D ".."
maxValue =3D nonNegativeIntegerValue / many
many =3D "*"
reverseFlag =3D "R"
slotEclAttributeName =3D slotSubExpressionConstraint
expressionComparisonOperator =3D "=3D" / "!=3D"
numericComparisonOperator =3D "=3D" / "!=3D" / "<=3D= " / "<" / ">=3D" / ">"
stringComparisonOperator =3D "=3D" / "!=3D"
booleanComparisonOperator =3D "=3D" / "!=3D"
stringValue =3D 1*(anyNonEscapedChar / escapedChar)
integerValue =3D digitNonZero *digit / zero
decimalValue =3D integerValue "." 1*digit
booleanValue =3D true / false
true =3D ("t"/"T") ("r"/"R") ("u"/"U") ("e"/"E")
false =3D ("f"/"F") ("a"/"A") ("l"/"L") ("s"/"S") ("e"/= "E")
nonNegativeIntegerValue =3D (digitNonZero *digit ) / ze= ro
sctId =3D digitNonZero 5*17( digit )
ws =3D *( SP / HTAB / CR / LF / comment ) ; optional wh= ite space
mws =3D 1*( SP / HTAB / CR / LF / comment ) ; mandatory= white space
comment =3D "/*" *(nonStarChar / starWithNonFSlash) "*/= "
nonStarChar =3D SP / HTAB / CR / LF / %x21-29 / %x2B-7E= /UTF8-2 / UTF8-3 / UTF8-4
starWithNonFSlash =3D %x2A nonFSlash
nonFSlash =3D SP / HTAB / CR / LF / %x21-2E / %x30-7E /= UTF8-2 / UTF8-3 / UTF8-4
SP =3D %x20 ; space
HTAB =3D %x09 ; tab
CR =3D %x0D ; carriage return
LF =3D %x0A ; line feed
QM =3D %x22 ; quotation mark
BS =3D %x5C ; back slash
digit =3D %x30-39
zero =3D %x30
digitNonZero =3D %x31-39
nonwsNonPipe =3D %x21-7B / %x7D-7E / UTF8-2 / UTF8-3 / = UTF8-4
anyNonEscapedChar =3D SP / HTAB / CR / LF / %x20-21 / %= x23-5B / %x5D-7E / UTF8-2 / UTF8-3 / UTF8-4
escapedChar =3D BS QM / BS BS
UTF8-2 =3D %xC2-DF UTF8-tail
UTF8-3 =3D %xE0 %xA0-BF UTF8-tail / %xE1-EC 2( UTF8-tai= l ) / %xED %x80-9F UTF8-tail / %xEE-EF 2( UTF8-tail )
UTF8-4 =3D %xF0 %x90-BF 2( UTF8-tail ) / %xF1-F3 3( UTF= 8-tail ) / %xF4 %x80-8F 2( UTF8-tail )
UTF8-tail =3D %x80-BF
; Additional rules from Com= positional Grammar v2.4
definitionStatus =3D equivalentTo / subtypeOf
equivalentTo =3D "=3D=3D=3D"
subtypeOf =3D "<<<"