Asset Oriented Modeling (AOM)

- XML Serialization, Version 1.2 -

Purpose

Exchange format for AOM based design tools.

  1. Models

  2. Patterns

  3. Annotation scripts

State

February 24, 2008

 

Models

Definitions

Schema

Syntax Description Constraints
<!ELEMENT aom (description?,
layout?,
defaultNamespace,
namespacePrefix*,
scope*,
defaultTypeSystem?,
typeSystemPrefix*,
defaultSubjectOntology?,
subjectOntologyPrefix*,
defaultConstraintLanguage?,
constraintLanguagePrefix*,
defaultOperationVocabulary?,
operationVocabularyPrefix*,
annotation*,
apply*,
include*,
process?
typeDef*,
( level2
| asset )*,
appInfo*,
modelInfo*
)>
<!ATTLIST aom 
xmlns CDATA #FIXED
"http://www.aomodeling.org/2002/AOM"
name NMTOKEN #REQUIRED
id ID #REQUIRED
>
The aom element describes a complete model.

The name attribute specifies the model name.


<!ELEMENT description ANY>
Contains an informal description The description element must contain valid XHTML content of namespace http://www.w3.org/1999/xhtml.
<!ELEMENT position EMPTY>
<!ATTLIST position
id ID #REQUIRED
href CDATA #REQUIRED
data CDATA #REQUIRED
>
Contains position information for additional visualization methods.

The attribute href identifies the visualization method.

The attribute data contains visualization method specific position information.

The href attribute must contain a valid, nonempty URI identifying the visualization method.
<!ELEMENT defaultNamespace EMPTY>
<!ATTLIST defaultNamespace 
id ID #REQUIRED
href CDATA #REQUIRED
>
Defines the default namespace identifier for the model. Assets and Level 2 structures that belong to the default namespace refer to the id attribute of defaultNamespace. The href attribute must contain a valid, nonempty URI identifying the namespace.
<!ELEMENT namespacePrefix EMPTY>
<!ATTLIST namespacePrefix
id ID #REQUIRED
prefix NMTOKEN #REQUIRED
href CDATA #REQUIRED
>
namespacePrefix defines a namespace used in the model. Assets and Level 2 structures that belong to this namespace refer to its id attribute. The href attribute must contain a valid, nonempty URI identifying the namespace.
<!ELEMENT scope (#PCDATA)>
<!ATTLIST scope 
id ID #REQUIRED
>
Defines a scope value. Each scope used in the model must be declared here. Syntax and semantics of the scope element is left to the user. A scope string must be a valid NMTOKEN..
<!ELEMENT defaultTypeSystem EMPTY>
<!ATTLIST defaultTypeSystem
id ID #REQUIRED
href CDATA #REQUIRED
location CDATA #IMPLIED
>
Defines the default type system for the model. Type definitions belonging to this type system refer to the id attribute of defaultTypeSystem .

The attribute href specifies the unique namespace identifier of the type system.

The attribute location specifies the location of the type system.

The href attribute must contain a valid, nonempty URI.

The location attribute must contain a valid URL.

<!ELEMENT typeSystemPrefix EMPTY>
<!ATTLIST typeSystemPrefix
id ID #REQUIRED
prefix NMTOKEN #REQUIRED
href CDATA #REQUIRED
location CDATA #IMPLIED
>
typeSystemPrefix defines a type system used in the model. Type definitions belonging to this type system refer to its id attribute.

prefix defines a prefix to be used in type declarations for this type system.

The attribute href specifies the unique namespace identifier of the type system.

The attribute location specifies the location of the type system.

The href attribute must contain a valid, nonempty URI.

The location attribute must contain a valid URL.

<!ELEMENT defaultSubjectOntology EMPTY>
<!ATTLIST defaultSubjectOntology
id ID #REQUIRED
href CDATA #REQUIRED
location CDATA #IMPLIED
>
Defines the default ontology for subject IDs used in the model. 

The attribute href specifies the unique namespace identifier of the ontology.

The attribute location specifies the location of the ontology.

The href attribute must contain a valid, nonempty URI.

The location attribute must contain a valid URL.

<!ELEMENT subjectOntologyPrefix EMPTY>
<!ATTLIST subjectOntologyPrefix
id ID #REQUIRED
prefix NMTOKEN #REQUIRED
href CDATA #REQUIRED
location CDATA #IMPLIED
>
Defines an ontology for subject IDs used in the model. 

prefix defines a prefix to be used in type declarations for this ontology.

The attribute href specifies the unique namespace identifier of the ontology.

The attribute location specifies the location of the ontology.

The href attribute must contain a valid, nonempty URI.

The location attribute must contain a valid URL.

<!ELEMENT defaultConstraintLanguage EMPTY>
<!ATTLIST defaultConstraintLanguage
abstract (false|true) "false"
id ID #REQUIRED
href CDATA #REQUIRED
location CDATA #IMPLIED
>
Defines the default constraint language. Constraints formulated in this language refer to the id attribute of defaultConstraintLanguage.

The attribute href specifies the unique namespace identifier of the constraint language. Alternatively, the attribute may specify the value "##local".

The attribute abstract is set to true if this prefix is used for constraint vocabularies.

The attribute location specifies the location of the constraint language vocabulary.

The href attribute must contain a valid, nonempty URI or the value "##local".

The href value "##local" may only be used if abstract is set to "true".

The location attribute must contain a valid URL. This URL may be absolute or relative to the model location.

 
<!ELEMENT constraintLanguagePrefix EMPTY>
<!ATTLIST constraintLanguagePrefix
abstract (false|true) "false"
id ID #REQUIRED
prefix NMTOKEN #REQUIRED
href CDATA #REQUIRED
location CDATA #IMPLIED
>
constraintLanguagePrefix elements defines a constrained language used in the model. Constraints formulated in this language refer to the id attribute.

prefix defines a prefix to be used in constraint expressions of this this constraint language.

The attribute href specifies the unique namespace identifier of the constraint language. Alternatively, the attribute may specify the value "##local".

The attribute abstract is set to true if this prefix is used for constraint vocabularies.

The attribute location specifies the location of the constraint language vocabulary.

The attribute abstract is set to true if this prefix is used for constraint vocabularies.

The href attribute must contain a valid, nonempty URI.

The href value "##local" may only be used if abstract is set to "true".

The location attribute must contain a valid URL. This URL may be absolute or relative to the model location.

 
<!ELEMENT defaultOperationVocabulary EMPTY>
<!ATTLIST defaultOperationVocabulary
id ID #REQUIRED
href CDATA #REQUIRED
location CDATA #IMPLIED
>
Defines the default operation Vocabulary. Operation names taken from this vocabulary refer to the id attribute of defaultOperationVocabulary.

The attribute href specifies the unique namespace identifier of the operation vocabulary. Alternatively, the attribute may specify the value "##local".

The attribute location specifies the location of the operation vocabulary.

The href attribute must contain a valid, nonempty URI identifying the constraint language or the value "##local".

If specified the location attribute must contain a valid URL. This URL may be absolute or relative to the model location.

If href contains the value "##local", the location attribute must not be specified.

<!ELEMENT operationVocabularyPrefix EMPTY>
<!ATTLIST operationVocabularyPrefix
id ID #REQUIRED
prefix NMTOKEN #REQUIRED
href CDATA #REQUIRED
location CDATA #IMPLIED
>
operationVocabularyPrefix defines a vocabulary for operation names. Operation names taken from this language refer to the id attribute.

prefix defines a prefix to be used in operation declarations for this operation vocabulary..

The attribute href specifies the unique namespace identifier of the operation vocabulary. Alternatively, the attribute may specify the value "##local".

The attribute location specifies the location of the operation vocabulary.

The href attribute must contain a valid, nonempty URI identifying the constraint language or the value "##local".

If specified the location attribute must contain a valid URL. This URL may be absolute or relative to the model location.

If href contains the value "##local", the location attribute must not be specified.

 
<!ELEMENT modelInfo (keyword*)>
<!ATTLIST modelInfo 
xmlns CDATA #FIXED
"http://www.aomodeling.org/2002/AOM"
category NMTOKEN #REQUIRED
copyright CDATA #IMPLIED
provider CDATA #IMPLIED
id ID #IMPLIED
>
The modelInfo element contains additional textual model information.

category specifies the category the pattern belongs to. Category hierarchies are possible by specifying path expressions.

copyright specifies copyright information.

provider specifies provider information.

category must be a list of NMTOKENs separated by slashes ("/").
<!ELEMENT keyword (#PCDATA) >
<!ATTLIST keyword 
id ID #IMPLIED
>
The keyword element contains a keyword under which the model is to find.  

 

Model Composition

Syntax Description Constraints
<!ELEMENT apply (
binding*,
description?,
appInfo*
)>
<!ATTLIST apply
id ID #IMPLIED
prefix NMTOKEN #IMPLIED
href CDATA #REQUIRED
location CDATA #IMPLIED
scope NMTOKENS #IMPLIED
>
apply refers to patterns to be applied to the current model.

prefix specifies a namespace prefix for the former default namespace of the included model. 

href specifies the unique namespace identifier of the included model.

location specifies the location of the included model.

scope specifies scope  IDs of the includes submodel. Only assets that satisfy these scopes are included.

The href attribute must contain a valid, nonempty URI.

The location attribute must contain a valid URL. This URL may be absolute or relative to the model location.

The prefix attribute must be specified if the default namespace of the included model differs from the default namespace of the new mode.

<!ELEMENT include (
binding*,
description?,
appInfo*
)>
<!ATTLIST include
id ID #IMPLIED
prefix NMTOKEN #IMPLIED
href CDATA #REQUIRED
location CDATA #IMPLIED
scope NMTOKENS #IMPLIED
>
include refers to submodels to be merged into the current model.

prefix specifies a namespace prefix for the former default namespace of the included model. 

href specifies the unique namespace identifier of the included model.

location specifies the location of the included model.

scope specifies scope  IDs of the includes submodel. Only assets that satisfy these scopes are included.

The href attribute must contain a valid, nonempty URI.

The location attribute must contain a valid URL. This URL may be absolute or relative to the model location.

The prefix attribute must be specified if the default namespace of the included model differs from the default namespace of the new mode.

<!ELEMENT binding (
( map | create )*
)>
<!ATTLIST binding
id ID #IMPLIED
sourceRef NMTOKEN #REQUIRED
>

 

A binding specifies to which items of the target model an item of the inclusion is bound.

sourceRef specifies the ID of the inclusion item to which this binding applies. If such an item does not exist, the binding is ignored. Because the referenced item is located in an inclusion, the type NMTOKEN is used instead of IDREF.

The item referred to by sourceRef must be either an asset or a Level2Structure.

<!ELEMENT map ( binding* )>
<!ATTLIST map
id ID #IMPLIED
ref NMTOKEN #REQUIRED
>

 

A map element maps an inclusion item to another item within the target model. Mappings for Level2Structures may contain nested bindings for the items contained in the L2S. 

ref specifies the ID of the item to which the inclusion item should be bound. If such an item does not exist, the binding is ignored. Because the referenced item may be located in an inclusion, the type NMTOKEN is used instead of IDREF.

 
<!ELEMENT create ( binding* )>
<!ATTLIST create
id ID #IMPLIED
href NMTOKEN #IMPLIED
name #REQUIRED
ref NMTOKEN #REQUIRED
>

 

A create element creates a copy of the inclusion item in the target model. Creation elements for Level2Structures may contain nested bindings for the items contained in the L2S.

href specifies the namespace URI of the new item. If this attribute is omitted, the new item will belong to the default namespace.

name specifies the name of the new item. This can be a single name for assets, or a list of display labels for Level2Structures.

ref specifies the ID of the new item, and thus establishes the identity of the new item.

The href attribute must contain a valid, nonempty URI.

For asset bindings the attribute name must specify a valid asset name (NMTOKEN).

For Level2Structure bindings the name attribute may contain several PCDATA tokens, separated by blanks.

<!ELEMENT process (
( setElement
| setAttribute )*,
appInfo*
)>
<!ATTLIST include
id ID #IMPLIED
>
process specifies a list of changes to be processed after all all inclusions referred to in apply and include statements are merged in.  
<!ELEMENT setElement ANY?>
<!ATTLIST setElement
id ID #IMPLIED
ref NMTOKEN #REQUIRED
replace NMTOKEN #IMPLIED
>

 

The setElement instruction changes, deletes, or inserts an XML element in the composite model serialization.

ref specifies the ID of the parent element to which changes are to be applied. Because this element may be located in an inclusion, the type NMTOKEN is used instead of IDREF. If the element specified in ref does not exist, the setElement instruction is ignored.

replace specifies the ID of an element to be deleted. This must be a child element of the element referred to by ref.

If setElement has a child element, this child element will replace the element specified in replace. If such an element does not exist the child element is appended as a child to the parent element referenced in ref

 
<!ELEMENT setAttribute EMPTY>
<!ATTLIST setAttribute
id ID #IMPLIED
ref NMTOKEN #REQUIRED
name NMTOKEN #REQUIRED
value CDATA #IMPLIED
>

 

The setElement instruction changes, deletes, or inserts an XML attribute in the composite model serialization.

ref specifies the ID of the owner element to which changes are to be applied. Because this element may be located in an inclusion, the type NMTOKEN is used instead of IDREF. If the element specified in ref does not exist, the setAttribute instruction is ignored.

name specifies the name of the attribute to be changed.

value specifies the new value of the attribute. If value was not specified, the attribute is deleted.

 

 

Type Definitions

Syntax Description Constraints  
<!ELEMENT typeDef EMPTY>
<!ATTLIST typeDef
name NMTOKEN #REQUIRED
id ID #REQUIRED
ts IDREF #REQUIRED
>
Specifies a type from a type system. The attribute ts refers to the default type system or to a type system prefix by id.  

 

Level 2 Structures

Syntax Description Constraints
<!ELEMENT level2 (description?,
position*,
layout?,
displayLabel*,
(level2 | asset)+,
annotation*,
appInfo*
)>
<!ATTLIST level2 
collapsed (false|true) "false"
firstClass (false|true|default) "default"
id ID #REQUIRED
identifyingItem NMTOKEN #REQUIRED
position CDATA #IMPLIED
>
level2 defines a Level 2 Structure. These structures contain assets or other Level 2 Structures.

The collapsed attribute is set when a Level 2 Structure is displayed in collapsed state.

The firstClass attribute specifies if a Level 2 Structure is considered as a first class citizen.

The identifyingItem attribute refers to an asset or level2 child element. Alternatively, it may refer to a foreign asset or level2 element from an included file.

The position attribute specifies the graphical position of the asset relative to the parent container (model or L2S) for the default layout policy. It consists of two integers separated by a blank, representing column and row number of the asset. If no position attribute is specified, positioning is automatic.

If identifyingItem refers to element in an included file, the included file must contain a level2 element with the same identifying item.

 

Assets

Syntax Description Constraints
<!ELEMENT asset (description?,
position*,
displayLabel*,
primaryKey*,
typeDecl*,
( typedProperty
| property
| sequence
| choice
| bag )*,
constraint*,
operation*,
annotation*,
subjectID*,
( cluster
| arc
| isa )*,
appInfo*
)>
<!ATTLIST asset 
abstract (false|true) "false"
compositor (sequence|bag) "sequence"
icon CDATA #IMPLIED
id ID #REQUIRED
name CDATA #REQUIRED
ns IDREF #REQUIRED
position CDATA #IMPLIED
scope IDREFS #IMPLIED
unresolved (false|true) "false"
>
Defines an asset.

The abstract attribute is true for abstract assets.

The compositor attribute defines if the top level properties are ordered (sequence) or unordered (bag).

The icon attribute defines a URL to an GIF or PNG image file.

The name attribute defines the name of the asset.

The ns attribute refers to the default namespace or a name space prefix.

The position attribute specifies the graphical position of the asset relative to the parent container (model or L2S)  for the default layout policy. It consists of two integers separated by a blank, representing column and row number of the asset.  If no position attribute is specified, positioning is automatic.

The scope attribute refers to one or more scope elements defined in the aom clause. If omitted, the asset is valid in all scopes of the model.

The unresolved attribute is true when this asset definition represents a missing asset definition.

If unresolved is set to true, the asset must not have any child elements, nor other optional attributes.

The icon attribute must contain a valid URL.

<!ELEMENT displayLabel (#PCDATA)>
<!ATTLIST displayLabel 
id ID #REQUIRED
>
Defines a possible name for asset instances.  No display labels are allowed for abstract assets.
<!ELEMENT primaryKey EMPTY>
<!ATTLIST primaryKey
id ID #REQUIRED
fields CDATA #REQUIRED
name NMTOKEN #IMPLIED
>
Defines possible primary key for an asset. The fields attribute contains a set of key field paths separated by blanks.

The name attribute contains an optional key name.

 

Properties

Syntax Description Constraints
<!ELEMENT typedProperty (description?,
( simpleType
| complexType
| typeSequence
| typeUnion
| typeRef
),
subjectID*) >
<!ATTLIST typedProperty 
id ID #REQUIRED
name NMTOKEN #REQUIRED
minOccurs CDATA "1"
maxOccurs CDATA "1"
>
Defines a property containing type definitions. 

The name attribute defines the name of the property.

minOccurs and maxOccurs define lower and upper bounds for the cardinality of the property.

Allowed values for minOccurs are quoted integers greater or equal zero.

Allowed values for maxOccurs are quoted integers greater zero and the string "unbounded".

<!ELEMENT property (description?,
( sequence
| choice
| bag)?,
subjectID*) >
<!ATTLIST property 
id ID #REQUIRED
name NMTOKEN #REQUIRED
label NMTOKEN #IMPLIED
minOccurs CDATA "1"
maxOccurs CDATA "1"
>
Specifies a property defined with a regular expression.

The name attribute defines the name of the property.

The optional label attribute defines a reference point for recursions.

minOccurs and maxOccurs define lower and upper bounds for the cardinality of the property.

Allowed values for minOccurs are quoted integers greater or equal zero.

Allowed values for maxOccurs are quoted integers greater zero and the string "unbounded".

<!ELEMENT sequence (sequence 
| choice
| bag
| typedProperty
| property
| recursion)*>
<!ATTLIST sequence 
id ID #REQUIRED
label NMTOKEN #IMPLIED
minOccurs CDATA "1"
maxOccurs CDATA "1"
>
Specifies a sequence of sub-properties or sub-expressions.

The optional label attribute defines a reference point for recursions.

minOccurs and maxOccurs define lower and upper bounds for the cardinality of the particle.

 
Allowed values for minOccurs are quoted integers greater or equal zero.

Allowed values for maxOccurs are quoted integers greater zero and the string "unbounded".

<!ELEMENT choice (sequence 
| choice
| bag
| typedProperty
| property
| recursion)*>
<!ATTLIST choice 
id ID #REQUIRED
label NMTOKEN #IMPLIED
minOccurs CDATA "1"
maxOccurs CDATA "1"
>
Specifies alternatives of sub-properties or sub-expressions.

The optional label attribute defines a reference point for recursions.

minOccurs and maxOccurs define lower and upper bounds for the cardinality of the particle.

 
Allowed values for minOccurs are quoted integers greater or equal zero.

Allowed values for maxOccurs are quoted integers greater zero and the string "unbounded".

<!ELEMENT bag (sequence 
| choice
| bag
| typedProperty
| property
| recursion)*>
<!ATTLIST bag 
id ID #REQUIRED
label NMTOKEN #IMPLIED
minOccurs CDATA "1"
maxOccurs CDATA "1"
>
Specifies an unordered bag of sub-properties or sub-expressions.

The optional label attribute defines a reference point for recursions.

minOccurs and maxOccurs define lower and upper bounds for the cardinality of the particle.

 
Allowed values for minOccurs are quoted integers greater or equal zero.

Allowed values for maxOccurs are quoted integers greater zero and the string "unbounded".

<!ELEMENT recursion EMPTY>
<!ATTLIST recursion 
id ID #REQUIRED
recurTo NMTOKEN #REQUIRED
minOccurs CDATA "1"
maxOccurs CDATA "1"
>
Establishes a recursion to a previously defined reference point (label) within the same expression.

The recurTo attribute refers to the label of a property, a sequence, a choice, or a bag.

Allowed values for minOccurs are quoted integers greater or equal zero.

Allowed values for maxOccurs are quoted integers greater zero and the string "unbounded".

Note: there is no special syntax for empty properties. An empty property has an empty sequence element:

<sequence/>

 

Type expressions

Syntax Description Constraints
<!ELEMENT simpleType ( ( typeParam | 
typeAttribute
)*
| enumeration+)>
<!ATTLIST simpleType 
ref IDREF #IMPLIED
minOccurs CDATA "1"
maxOccurs CDATA "1"
>
Defines a simple type reference.

The ref attribute refers to a global typeDef element.

minOccurs and maxOccurs define lower and upper bounds for the cardinality of the type expression.

The attribute ref must be defined if simpleType does not contain an enumeration child element.
<!ELEMENT typeParam EMPTY>
<!ATTLIST typeParam
id ID #IMPLIED
name CDATA #REQUIRED
value CDATA #REQUIRED
>
Type parameters may modify simple types depending on the type system. For example, if the type system is XML Schema, the name attribute may specify the name of a restricting facet, the value attribute the facet value. Other type systems such as SQL use type parameters by position. In these cases an internal type parameter name is specified.  
<!ELEMENT typeAttribute EMPTY>
<!ATTLIST typeParam
id ID #IMPLIED
name NMTOKEN #REQUIRED
value CDATA #REQUIRED
>
Type attributes are used to specify meta information about a type, e.g. units of measurement. The attribute name must be unique within the scope of a typedProperty.
<!ELEMENT enumeration (#PCDATA)>
<!ATTLIST enumeration 
id ID #IMPLIED
>
Restricts the value space of a type to the listed enumerations.  
<!ELEMENT complexType EMPTY>
<!ATTLIST complexType
ref NMTOKEN #REQUIRED
>
Defines a complex type reference.

The ref attribute refers to an asset. This can be the id of a foreign asset in an included file.

 
<!ELEMENT typeSequence (simpleType
| typeSequence
| typeUnion
| typeRef
)+ >
<!ATTLIST typeSequence
id ID #IMPLIED
minOccurs CDATA "1"
maxOccurs CDATA "1"
>
Defines a sequences of types.

minOccurs and maxOccurs define lower and upper bounds for the cardinality of the type expression.

This element must not directly or indirectly contain complex types.
<!ELEMENT typeUnion (simpleType
| complexType
| typeSequence
| typeUnion | typeRef
)+ >
<!ATTLIST typeUnion
id ID #IMPLIED
minOccurs CDATA "1"
maxOccurs CDATA "1"
>
Defines a union of types.

minOccurs and maxOccurs define lower and upper bounds for the cardinality of the type expression.

 
<!ELEMENT typeDecl (description?,
(simpleType
| complexType
| typeSequence
| typeUnion
| typeRef
)
)>
<!ATTLIST typeDecl
id ID #IMPLIED
name NMTOKEN #REQUIRED
>
Defines a new simple type.

The name attribute identifies this declaration. This attribute must be unique within the context of the containing asset.

 

 
<!ELEMENT typeRef EMPTY>
<!ATTLIST typeRef
name NMTOKEN #REQUIRED
ref NMTOKEN #IMPLIED
minOccurs CDATA "1"
maxOccurs CDATA "1"
>
Refers to a type declaration.

The name attribute specifies the name of a type declaration.

The ref attribute refers by id to a foreign asset containing the type declaration.

minOccurs and maxOccurs define lower and upper bounds for the cardinality of the type expression.

 

 

Arcs and Clusters

Syntax Description Constraints
<!ELEMENT cluster ((arc|isa)*,
appInfo*
)>
<!ATTLIST cluster 
id ID #REQUIRED
>
Defines either an arc cluster or an is_a cluster.  
<!ELEMENT arc (description?,
position*,
appInfo*
)>
<!ATTLIST arc 
id ID #REQUIRED
role CDATA #IMPLIED
minOccurs CDATA "1"
maxOccurs CDATA "1"
collected CDATA "false"
target NMTOKEN #REQUIRED
range IDREF #IMPLIED
key NMTOKEN #IMPLIED
originalSource NMTOKEN #IMPLIED
originalRole CDATA #IMPLIED
originalMinOcc CDATA "1"
originalMaxOcc CDATA "1"
originalCollected CDATA "false"
originalRange NMTOKEN #IMPLIED
orininalKey NMTOKEN #IMPLIED
>
Defines an arc to another asset.

The optional role attribute specifies the role assumed by the target asset.

The attributes minOccurs and maxOccurs define cardinality constraints for this arc.

The attribute collected indicates that the arc target is treated as a collection.

The attribute target refers to the id of the target asset. This can be the id of a foreign asset in an included file.

The attribute range refers to the id of a level2 element or to the id of the aom root element.

The attribute key specifies the name of the primary key for cases when the target is equipped with multiple primary keys.

The attributes originalSource, originalRole, originalMinOcc, originalMaxOcc, originalCollected, originalRange, and originalKey can be used by tools to store the original properties of reverted arcs.

role must be an NMTOKEN or a name formula.

originalRole must be an NMTOKEN or a name formula.

 

<!ELEMENT isa (description?,
position*,
appInfo*
)>
<!ATTLIST isa 
id ID #REQUIRED
minOccurs CDATA "1"
target NMTOKEN #REQUIRED
>
Defines an is_a arc to another asset.

The attribute target refers to the id of the target asset. This can be the id of a foreign asset in an included file.

The attribute minOccurs defines cardinality constraints for this arc.

minOccurs must be either "0" or "1"

 

Constraints

Syntax Description Constraints  
<!ELEMENT constraint 
( description?,
#PCDATA
)>
<!ATTLIST constraint
id ID #REQUIRED
ns IDREF #REQUIRED
context CDATA #IMPLIED
label NMTOKEN #IMPLIED
>
Defines a constraint. The content contains the constraint expression. 

The constraint language used is specified with the ns attribute that refers to a default constraint language definition or a constraint language prefix.

The attribute context refers via an XPath expression to a property or sub-property of the same or another asset.

The attribute label specifies an optional constraint label.

 

 

Operations

Syntax Description Constraints  
<!ELEMENT operation
( description?,
(preCondition
| postCondition
)*
)>
<!ATTLIST operation
name NMTOKEN #REQUIRED
id ID #REQUIRED
ns IDREF #REQUIRED
mode NMTOKENS #IMPLIED
context CDATA #IMPLIED
label NMTOKEN #IMPLIED
>
Defines an abstract operation. The semantics of the operation depends on the implementation.

The name attribute contains the name of the operation taken from the operation vocabulary used. 

The operation vocabulary is specified with the ns attribute that refers to a default operation vocabulary definition or an operation vocabulary prefix.. 

The mode attribute defines a set of execution modes for the operation (e.g. update, delete, insert). The values of this attribute must be taken from the operation vocabulary used.

The attribute context refers via an XPath expression to a property or sub-property of the same or another asset.

The attribute label specifies an optional operation label.

 
<!ELEMENT preCondition 
( description?,
#PCDATA
)>
<!ATTLIST preCondition
id ID #REQUIRED
ns IDREF #REQUIRED
context CDATA #IMPLIED
>
 
<!ELEMENT postCondition 
( description?,
#PCDATA
)>
<!ATTLIST postCondition
id ID #REQUIRED
ns IDREF #REQUIRED
context CDATA #IMPLIED
>
Defines an operation precondition resp. postcondition. The content contains the constraint expression. 

The constraint language used is specified with the ns attribute that refers to a default constraint language definition or a constraint language prefix.

The attribute context refers via an XPath expression to a property or sub-property of the same or another asset. The context is given relative to the context of the parent operation element.

 

 

Subject ID

Syntax Description Constraints  
<!ELEMENT subjectID EMPTY>
<!ATTLIST subjectID
id ID #REQUIRED
name NMTOKEN #REQUIRED
href CDATA #REQUIRED
>
Defines a subject identifier. 

The name attribute contains the name of the subject identifier.

The href specifies the namespace identifier. It may or may not refer to a declared ontology.

href must be a valid, nonempty URI.

 

Annotations

Syntax Description Constraints
<!ELEMENT annotation ANY>
<!ATTLIST annotation
id ID #REQUIRED
context IDREF #IMPLIED
>
The annotation element provides an extension mechanism. Syntax and semantics of the annotation element is left to the user.

The attribute context refers via an XPath expression to a property or sub-property of the same or another asset.

The context attribute is only used for annotations defined in asset or level2 elements. 
<!ELEMENT appInfo ANY>
<!ATTLIST href #REQUIRED
id ID #IMPLIED
>
This element can be used by tools to add tool specific information to a model.

The attribute href must contain a URI identifying the tool.

 

Layout

Syntax Description Constraints
<!ELEMENT layout 
( arcLayout,
isaLayout,
parameter*
)>
<!ATTLIST layout
id ID #REQUIRED
href CDATA #REQUIRED
>
The layout element defines layout policies for the model or specific L2S.

The attribute href identifies the layout policy.

href must be a valid, nonempty URI.
<!ELEMENT arcLayout 
( parameter*
)>
<!ATTLIST arcLayout
id ID #REQUIRED
href CDATA #REQUIRED
>
The arcLayout element defines layout policies for arcs within the model or specific L2S.

The attribute href must contain a URI identifying the arc layout policy.

href must be a valid, nonempty URI.
<!ELEMENT isaLayout 
( parameter*
)>
<!ATTLIST isaLayout
id ID #REQUIRED
href CDATA #REQUIRED
>
The isaLayout element defines layout policies for  "is a"-arcs within the model or specific L2S.

The attribute href must contain a URI identifying the isa layout policy..

href must be a valid, nonempty URI.
<!ELEMENT parameter EMPTY>
<!ATTLIST parameter
name CDATA #REQUIRED
value CDATA #REQUIRED
>

 

The attribute name defines the name of the parameter.

The attribute value contains the value of the parameter.


Notes

UUIDs to be used for all id attributes.

 

Example

<?xml version="1.0"?>
<!DOCTYPE aom SYSTEM "aom.dtd">
<aom id="uuid-0016B448-EB27-47E3-AC09-9655CEF46A01" 
name="OrderModel">
  <defaultNamespace id="uuid-0016B448-EB27-47E3-AC09-9655CEF46A03" 
href="http://www.aomodeling.org/corp.com/orders"/>
  <namespacePrefix id="uuid-0016B448-EB27-47E3-AC09-9655CEF46A09" 
prefix="c"
href="http://www.corp.com"/>
  <scope id="uuid-0016B448-EB27-47E3-AC09-9655CEF46A98">version1</scope>
  <defaultTypeSystem id="uuid-0016B448-EB27-47E3-AC09-9655CEF46A10"
href="http://www.w3.org/2001/XMLSchema"/>
  <defaultConstraintLanguage id="uuid-0016B448-EB27-47E3-AC09-9655CEF46A99" 
href="http://www.w3.org/TR/xpath"/>

<typeDef name="date"
id="uuid-0016B448-EB27-47E3-AC09-9655CEF46A17"

ts="uuid-0016B448-EB27-47E3-AC09-9655CEF46A10"/>
<typeDef name="NMTOKEN"
id="uuid-0016B448-EB27-47E3-AC09-9655CEF46A72"

ts="uuid-0016B448-EB27-47E3-AC09-9655CEF46A10"/>
<typeDef name="duration"
id="uuid-0016B448-EB27-47E3-AC09-9655CEF46A76"

ts="uuid-0016B448-EB27-47E3-AC09-9655CEF46A10"/>
<typeDef name="int"
id="uuid-0016B448-EB27-47E3-AC09-9655CEF46A52"

ts="uuid-0016B448-EB27-47E3-AC09-9655CEF46A10"/>

<level2>
<displayLabel>customer</displayLabel>

<asset id="uuid-0016B448-EB27-47E3-AC09-9655CEF46A02"
name="person"
ns="uuid-0016B448-EB27-47E3-AC09-9655CEF46A09">
<property name="name">
<sequence>
<property name="first"/>
<property name="middle"
minOccurs="0"/>
<property name="last"/>
</sequence>
</property>
<typedProperty name="birthDate">
<simpleType ref="uuid-0016B448-EB27-47E3-AC09-9655CEF46A17"/>
</typedProperty>
</asset>
    <asset id="uuid-0016B448-EB27-47E3-AC09-9655CEF46A18" 
name="institution"
ns="uuid-0016B448-EB27-47E3-AC09-9655CEF46A09">
<property name="name"/>
</asset>
    <asset id="uuid-0016B448-EB27-47E3-AC09-9655CEF46A20" 
name="customer"
ns="uuid-0016B448-EB27-47E3-AC09-9655CEF46A09">
<primaryKey fields="uuid-0016B448-EB27-47E3-AC09-9655CEF46A21"/>
<typedProperty id="uuid-0016B448-EB27-47E3-AC09-9655CEF46A21"
name="propertyID">
<simpleType ref="uuid-0016B448-EB27-47E3-AC09-9655CEF46A72"/>
</typedProperty>
<cluster>
<isa target="uuid-0016B448-EB27-47E3-AC09-9655CEF46A02"/>
<isa target="uuid-0016B448-EB27-47E3-AC09-9655CEF46A18"/>
</cluster>
</asset>
</level2>

<level2>
<displayLabel>department</displayLabel>
<asset id="uuid-0016B448-EB27-47E3-AC09-9655CEF46A31"
name="department"
ns="uuid-0016B448-EB27-47E3-AC09-9655CEF46A09">
<primaryKey id="uuid-0016B448-EB27-47E3-AC09-9655CEF46A34"
fields="departmentID"/>
<typedProperty id="uuid-0016B448-EB27-47E3-AC09-9655CEF46A32"
name="departmentID">
<simpleType ref="uuid-0016B448-EB27-47E3-AC09-9655CEF46A72"/>
</typedProperty>
<arc minOccurs="0"
maxOccurs="unbounded"
target="uuid-0016B448-EB27-47E3-AC09-9655CEF46A30"/>
<arc target="uuid-0016B448-EB27-47E3-AC09-9655CEF46A35"
minOccurs="0"
maxOccurs="unbounded"/>
</asset>
    <asset id="uuid-0016B448-EB27-47E3-AC09-9655CEF46A30" 
name="receives"
ns="uuid-0016B448-EB27-47E3-AC09-9655CEF46A03">
<arc target="uuid-0016B448-EB27-47E3-AC09-9655CEF46A40"
minOccurs="0"
maxOccurs="unbounded"/>
</asset>
    <asset id="uuid-0016B448-EB27-47E3-AC09-9655CEF46A35" 
name="forwards"
ns="uuid-0016B448-EB27-47E3-AC09-9655CEF46A03">
<arc target="uuid-0016B448-EB27-47E3-AC09-9655CEF46A31"/>
<arc target="uuid-0016B448-EB27-47E3-AC09-9655CEF46A40"
minOccurs="0" maxOccurs="unbounded"/>
</asset>
</level2>

<level2>
<displayLabel>order</displayLabel>
<asset id="uuid-0016B448-EB27-47E3-AC09-9655CEF46A40"
name="order"
ns="uuid-0016B448-EB27-47E3-AC09-9655CEF46A03">
<primaryKey fields="orderNo"/>
<typedProperty id="uuid-0016B448-EB27-47E3-AC09-9655CEF46A41"
name="orderNo">
<simpleType ref="uuid-0016B448-EB27-47E3-AC09-9655CEF46A72"/>
</typedProperty>
<typedProperty name="orderDate">
<simpleType ref="uuid-0016B448-EB27-47E3-AC09-9655CEF46A17"/>
</typedProperty>
<arc target="uuid-0016B448-EB27-47E3-AC09-9655CEF46A20"/>
<arc maxOccurs="unbounded"
target="uuid-0016B448-EB27-47E3-AC09-9655CEF46A50"/>
</asset>
    <asset id="uuid-0016B448-EB27-47E3-AC09-9655CEF46A50" 
name="position"
ns="uuid-0016B448-EB27-47E3-AC09-9655CEF46A03">
<typedProperty name="amount">
<simpleType ref="uuid-0016B448-EB27-47E3-AC09-9655CEF46A52"/>
</typedProperty>
<constraint clang="uuid-0016B448-EB27-47E3-AC09-9655CEF46A99">
orderDate &gt; customer/birthDate
</constraint>
<cluster>
<arc target="uuid-0016B448-EB27-47E3-AC09-9655CEF46A60"/>
<arc target="uuid-0016B448-EB27-47E3-AC09-9655CEF46A70"/>
</cluster>
</asset>
</level2>


<level2 id="uuid-0016B448-EB27-47E3-AC09-9655CEF46A14">
<displayLabel>product</displayLabel>

<asset id="uuid-0016B448-EB27-47E3-AC09-9655CEF46A60"
ns="uuid-0016B448-EB27-47E3-AC09-9655CEF46A03"
name="product">
<primaryKey fields="productNo"/>
<typedProperty id="uuid-0016B448-EB27-47E3-AC09-9655CEF46A61"
name="productNo">
<simpleType ref="uuid-0016B448-EB27-47E3-AC09-9655CEF46A72"/>
</typedProperty>
<property name="name"/>
<property name="description"/>
</asset>
</level2>

<level2 id="uuid-0016B448-EB27-47E3-AC09-9655CEF46A15">
<displayLabel>service</displayLabel>
<asset id="uuid-0016B448-EB27-47E3-AC09-9655CEF46A70"
name="service"
ns="uuid-0016B448-EB27-47E3-AC09-9655CEF46A03">
<primaryKey fields="productNo"/>
<typedProperty id="uuid-0016B448-EB27-47E3-AC09-9655CEF46A71"
name="productNo">
<simpleType ref="uuid-0016B448-EB27-47E3-AC09-9655CEF46A72"/>
</typedProperty>
<property name="name"/>
<property name="description"/>
<typedProperty name="duration"
minOccurs="0">
<simpleType ref="uuid-0016B448-EB27-47E3-AC09-9655CEF46A76"/>
</typedProperty>
</asset>
</level2>

</aom>
 

Pattern

Definitions

Patterns specify conceptual Design Patterns that can be applied to models. The Pattern schema is an extension of the model schema. Additions are printed in bold type.

Schema

Syntax Description Constraints
<!ELEMENT aom (description?,
defaultNamespace,
namespacePrefix*,
scope*,
defaultTypeSystem?,
typeSystemPrefix*,
defaultConstraintLanguage?,
constraintLanguagePrefix*,
defaultOperationVocabulary?,
operationVocabularyPrefix*,
annotation*,
apply*,
include*,
process?
typeDef*,
( level2
| asset )*,
appInfo*,
patternInfo
)>
<!ATTLIST aom 
xmlns CDATA #FIXED
"http://www.aomodeling.org/2002/AOM"
name NMTOKEN #REQUIRED
id ID #REQUIRED
>
The aom element describes a complete pattern.

The name attribute specifies the pattern name.


<!ELEMENT patternInfo (
keyword*,
alias*,
purpose?,
motivation?,
applicability?,
consequences?,
knownApplications?,
relatedPattern*,
acknowledgements?,
reference*,
)>
<!ATTLIST patternInfo 
xmlns CDATA #FIXED
"http://www.aomodeling.org/2002/AOM"
category NMTOKEN #REQUIRED
copyright CDATA #IMPLIED
provider CDATA #IMPLIED
id ID #IMPLIED
>
The patternInfo element contains additional textual pattern information.

category specifies the category the pattern belongs to. Category hierarchies are possible by specifying path expressions.

copyright specifies copyright information.

provider specifies provider information.

category must be a list of NMTOKENs separated by slashes ("/").
<!ELEMENT alias (#PCDATA) >
<!ATTLIST alias 
id ID #IMPLIED
>
The alias element contains an alias name for the pattern.  
<!ELEMENT purpose ANY >
<!ATTLIST purpose 
id ID #IMPLIED
>
The purpose element describes the purpose of the pattern. The purpose element must contain valid XHTML content of namespace http://www.w3.org/1999/xhtml.
<!ELEMENT motivation ANY >
<!ATTLIST motivation 
id ID #IMPLIED
>
The motivation element describes the motivation of the pattern. The motivation element must contain valid XHTML content of namespace http://www.w3.org/1999/xhtml.
<!ELEMENT applicability ANY >
<!ATTLIST applicability
id ID #IMPLIED
>
The applicability element describes the applicability of the pattern. The applicability element must contain valid XHTML content of namespace http://www.w3.org/1999/xhtml.
<!ELEMENT consequences ANY >
<!ATTLIST consequences
id ID #IMPLIED
>
The consequences element describes the consequences of the pattern. The consequences element must contain valid XHTML content of namespace http://www.w3.org/1999/xhtml.
<!ELEMENT knownApplications ANY >
<!ATTLIST knownApplications
id ID #IMPLIED
>
The knownApplications element describes the consequences of the pattern. The knownApplications element must contain valid XHTML content of namespace http://www.w3.org/1999/xhtml.
<!ELEMENT relatedPattern ANY>
<!ATTLIST relatedPattern
id ID #IMPLIED
href CDATA #IMPLIED
name CDATA #REQUIRED
>
The relatedPattern element lists patterns related to this pattern. The content of the element describes the nature of the relationship.

name specifies the name of the related pattern.

href specifies the namespace URI of the related patterns default namespace.

The relatedPattern element must contain valid XHTML content of namespace http://www.w3.org/1999/xhtml.

The href attribute must contain a valid, nonempty URI.

<!ELEMENT acknowledgements ANY >
<!ATTLIST acknowledgements
id ID #IMPLIED
>
The acknowledgements element lists acknowledgements for contributions to this pattern. The acknowledgements element must contain valid XHTML content of namespace http://www.w3.org/1999/xhtml.
<!ELEMENT reference ANY >
<!ATTLIST reference
id ID #IMPLIED
url CDATA #REQUIRED
>
The reference element establishes links to additional documentation and suggested reading.. The url attribute  must be a valid URL.
 

Level 2 Structures

Syntax Description Constraints
<!ELEMENT level2 (description?, 
displayLabel*,
(level2 | asset)+,
annotation*,
appInfo*
)>
<!ATTLIST level2 
id ID #REQUIRED
identifyingItem NMTOKEN #REQUIRED
iterateFrom CDATA "1"
iterateTo CDATA "1"
>
iterateFrom defines the lower limit for item iterations when the item is applied to the target model. E.g. an item with iterateFrom="2" must have at least two targets (mappings or creations) in the target model.

iterateTo defines the upper limit for item iterations.

Allowed values for iterateFrom are quoted integers greater or equal zero.

Allowed values for iterateTo are quoted integers greater zero and the string "unbounded".

 

 

Assets

Syntax Description Constraints
<!ELEMENT asset (description?, 
displayLabel*,
primaryKey*,
typeDecl*,
( typedProperty
| property
| sequence
| choice
| bag )*,
constraint*,
operation*,
annotation*,
subjectID*,
( cluster
| arc
| isa )*,
appInfo*
)>
<!ATTLIST asset 
abstract (false|true) "false"
compositor (sequence|bag) "sequence"
icon CDATA #IMPLIED
id ID #REQUIRED
name NMTOKEN #REQUIRED
ns NMTOKEN #REQUIRED
scope IDREFS #IMPLIED
unresolved (false|true) "false"
iterateFrom CDATA "1"
iterateTo CDATA "1"
>
iterateFrom defines the lower limit for item iterations when the item is applied to the target model. E.g. an item with iterateFrom="2" must have at least two targets (mappings or creations) in the target model.

iterateTo defines the upper limit for item iterations.

Allowed values for iterateFrom are quoted integers greater or equal zero.

Allowed values for iterateTo are quoted integers greater zero and the string "unbounded".

 

Annotation script

Definitions

Annotation scripts use a subset of the syntactical elements of model serializations.

Schema

Syntax Description Constraints
<!ELEMENT aom (description?,
defaultNamespace,
namespacePrefix*,
scope*,
defaultTypeSystem?,
typeSystemPrefix*,
defaultConstraintLanguage?,
constraintLanguagePrefix*,
defaultOperationVocabulary?,
operationVocabularyPrefix*,
annotation*,
apply*,
include*,
process?
typeDef*,
( level2
| asset )*,
appInfo*
)>
<!ATTLIST aom 
xmlns CDATA #FIXED
"http://www.aomodeling.org/2002/AOM"
name NMTOKEN #REQUIRED
id ID #REQUIRED
>
The aom element describes a complete annotation script.

The name attribute specifies the script name.


 
Home Definition Step-by-Step Examples Downloads

Contact: support 'at' aoModeling.org