Asset Oriented Modeling (AOM)

- Property -

Properties can be atomic or complex:

  • Atomic properties can be defined with a simple type expression, or can be defined with no type specification at all.
  • Complex properties are defined via regular expressions (see below), or by specifying a complex type expression.
  • Notation for properties

    Syntax Description Example
    prop
    Atomic property without type specification 
    (undefined type)
    birthDate
    type prop
    Typed property 
    (simple or complex)
    date birthDate
    address shippingAddress

    Explicit property definition by regular expression

    Syntax Description Example
    prop()
    Empty property  
    prop(...)
    Complex property, consisting of property name and a particle containing sub-properties. see following rows.
    (...)
    A property particle. The parentheses contain nested expressions consisting of the following structures.  
    (sub,...,sub)
    Sequence (ordered list)
    author(name(first,last),birthDate)

    Property author consists of sub-property name, followed by sub-property birthDate. Property name consists of sub-property first followed by sub-property last.

    (sub&...&sub)
    Bag (unordered list)
    part(id,(maker&grade))

    Property part consists of sub-properties id, maker and grade with id always in the first position and maker and grade following in any order.

    (sub|...|sub)
    Choice (alternative)
    speaker((bass,middle,treble) | (low,high))

    A speaker system is either a three way bass-middle-treble system or a two way low-high system.

    Property names can be suffixed with a subject ID or a list of subject IDs:

    Syntax Description Example
    <subjectID,...>
    List of subject IDs. Subject IDs may be prefixed with declared subject ontology prefixes address<cac:Address>(street<cbc:StreetName>, 
                           city<cbc:CityName>, zip<cbc:PostalZone>)

     

    Both properties and particles can be suffixed with one of the following modifiers:

    Syntax Description Example
    (no modifier) mandatory [1..1]
    last

    A last name is always required.

    ?
    optional [0..1]
    middle?

    Not everybody has a middle name, so we make this property optional.

    +
    repeated [1..n]
    phoneNo+

    At least one phone number is required

    *
    optional and repeated [0..n]
    sponsor(name,url)*

    an arbitrary number of sponsors

    [n..m]
    a minimum of n occurrences and a maximum of m occurrences with 0 <= n <= m
    phoneNo[1..4]

    if we want to restrict the number of phone numbers to 4.

    Labeling and substitution:

    Syntax Description Example
    label{}
    Establishes a reference point for the expression within the curly brackets. Unlike a tag, a label does not appear in instances. It is a pure meta-notation.
    sect{title,para*}

    represents the property sequence

    title,para*

    and allows to reference this sequence by sect.

    label
    Refers to an earlier defined reference point. The current label occurrence is substituted with the expression designated by the earlier label definition.
    block(sect{title,para*},anno,sect,sect)

    is equivalent to:

    block(title,para*,anno,title,para*,title,para*)
      In particular, labeling allows the definition of recursive structures.

    Note:
    Labels extend the algebraic power of regular expressions. With labels, regular expressions are as powerful as forest-regular grammars (hedge-regular grammars).

    recur{part(recur*)}

    is a typical tree-like part list:

    part(part(part(...)*)*)*

    Note that the use of a modifier such as * or ? is essential here. It ensures that the production can end. In contrast, the expression:

    recur{part(recur+)}

    would have only infinite productions.

     

     

    Home Definition Step-by-Step Example Downloads

    Contact: support 'at' aoModeling.org