This page provides access to downloadable PDF copies of the current and previous versions of this document.
The most recent version should also be available via a link on the front page of the document.
Summary of Version Updates
A new version was published in mid 2017 in response to a range of implementation feedback, and to support the publication of the Machine Readable Concept Model (MRCM) in the 20170731 international release. In particular, a refinement can now be applied to any subexpression constraint, the parsing of dottedExpressionConstraints is simplified, a subexpression constraint can now be used in place of an attribute name, and the rule conceptReference has been renamed to eclConceptReference to avoid overlap with the corresponding rule from SNOMED CT Compositional Grammar (when used together in the Template Syntax). These changes were reflected in the updated brief syntax ABNF rules:
refinedExpressionConstraint = subExpressionConstraint ws ":" ws eclRefinement
simpleExpressionConstraint = [constraintOperator ws] [memberOf ws] eclFocusConcept
dottedExpressionConstraint = subExpressionConstraint 1*(ws dottedExpressionAttribute)
dottedExpressionAttribute = dot ws eclAttributeName
eclFocusConcept = eclConceptReference / wildCard
eclConceptReference = conceptId [ws "|" ws term ws "|"]
eclAttribute = ["[" cardinality "]" ws] [reverseFlag ws] eclAttributeName ws (expressionComparisonOperator ws subExpressionConstraint / numericComparisonOperator ws "#" numericValue / stringComparisonOperator ws QM stringValue QM)
attributeOperator = childOf / descendantOrSelfOf / descendantOf
eclAttributeName = subExpressionConstraint
A new version, published in early 2017, which included an additional feature requested by implementers - namely the ability for the 'memberOf' function to be applied to a set of reference set concepts defined using an expression constraint.This change was reflected in the brief syntax ABNF rule:
subExpressionConstraint = [constraintOperator ws] [memberOf ws] (eclFocusConcept / "(" ws expressionConstraint ws ")")
A minor update, published in 2016, which corrected the definition of numericValue to allow negative decimal values to be fully supported. This change was reflected in the updated brief syntax ABNF rules:
numericValue = ["-"/"+"] (decimalValue / integerValue)
integerValue = digitNonZero *digit / zero
decimalValue = integerValue "." 1*digit
An update, published in 2016, to incorporate some additional features requested by implementers of the language. These updates included:
- Two new operators 'childOf' and 'parentOf' were added to support querying immediate children and immediate parents of a concept during user interface design;
- A new 'dot notation' was introduced (as an alternative to the Reverse flag) to refer to an attribute value for a concept or expression;
- The ability for a constraint operator (e.g. 'descendantOf') to be applied to a nested expression constraint was added;
- The ability to add comments within the text of an expression constraint was added;
- Additional optional brackets were allowed around subexpressions; and
- The non-normative syntax (previously named the 'Full Syntax') was renamed to the 'Long Syntax'.
First official version of the SNOMED CT Expression Constraint Language - version 1.0, 2014.