Compliance of Epsilon HUTN to the OMG Standard¶
Epsilon HUTN is an implementation of the OMG HUTN standard. Epsilon HUTN implements most of the OMG standard, but there are some differences between the two. This article summaries the similarities and differences between Epsilon HUTN and the OMG HUTN standard.
Feature | Section of the OMG HUTN Standard | Supported in Epsilon HUTN? | Details of support in Epsilon HUTN |
---|---|---|---|
Packages | Section 6.2 | Yes | |
Classes | Section 6.3 | Partial | Epsilon HUTN provides an extra syntactic shortcut. Not yet supported: parametric attributes and enumeration adjectives. |
Attributes | Section 6.4 | Yes | Epsilon HUTN corrects a mistake in the HUTN standard. |
References | Sections 6.5 and 6.8 | Yes | Limitation: Epsilon HUTN only allows absolute references for non-containment features. |
Classifier-Level Attributes | Section 6.6 | Yes | |
Data values | Section 6.7 | Yes | Epsilon HUTN supports Ecore (EMF) types, rather than MOF types. |
Inline configuration | Section 6.9 | No | A configuration model is used instead. |
Configuration rules | Section 5 | Partial | Currently supported: IdentifierConfig and DefaultValueConfig rules. |
Extra Object Shorthand¶
Epsilon HUTN allows classes with no body to be terminated with a semi-colon rather than with a pair of empty brackets, for example the following are equivalent in Epsilon HUTN:
Family "The Smiths" {}
Family "The Smiths";
This form appears in Figure 6.5 of the HUTN specification, but oddly is not supported in the grammar provided by the HUTN specification.
Parametric Attributes¶
The HUTN specification allows classes to be instantiated with arguments, for example:
Coordinate (3.5, 7.3) {}
The above code assumes that configuration rules have been specified for the parameters of Coordinate.
Epsilon HUTN does not currently support this form. Instead, the following code can be used:
Coordinate {
x: 3.5
y: 7.3
}
Enumeration Adjectives¶
The HUTN specification allows objects to be prefixed with enumeration values as adjectives, for example:
poodle Dog {}
The above code assumes that configuration rules have been specified to configure Dog to accept a feature, "breed," as an enumeration adjective.
Epsilon HUTN does not currently support this form. Instead, the following code can be used:
Dog {
breed: poodle
}
Potential error in the OMG HUTN Specification¶
Section 6.4 of the OMG HUTN specification appears to contain an error. Grammar rule [20] implies that AttributeName is optional in specifying a KeywordAttribute. However, the semantics of an empty KeywordAttribute or a single tilde as a KeywordAttribute are not defined.
Epsilon HUTN ensures that an AttributeName is specified for every KeywordAttribute.
Absolute References¶
The HUTN specification allows relative referencing for non-containment references. For example:
ShapePackage "triangles" {
Polygon "my_triangle" {
Coordinate (3.6, 7.3) {}
Coordinate (5.2, 7.6) {}
Coordinate (9.4, 13) {}
}
}
ShapePackage "lines" {
Polygon "my_line" {
Coordinate (4.6, 78.3) {}
Coordinate (10.4, 1.5) {}
}
Diagram "my_diagram" {
shapes: "//triangles/my_triangle", "/my_line"
}
}
The Diagram object references two Polygons: "my_triangle" and "my line". The first is referenced with respect to the root of the document ("//"), while the second is referenced with respect to the current package ("/").
Epsilon HUTN does not support relative referencing, and all references are resolved with respect to the diagram root. The "//" prefix is omitted:
Diagram "my_diagram" {
shapes: "my_triangle", "my_line"
}