...
The major version number 0 may be used in cases where an entity definition is under initial development. At the point where an entity definition is intended for production use it should be assigned a major version of at least 1.
Character Encoding
All PresentationML documents MUST be encoded in UTF-8.
PresentationML
PresentationML is a markup language to express semantic presentation of messages in a domain agnostic way. PresentationML allows the message author to describe how the message should be presented in a semantic way by marking up text to be presented as
...
Tag | Description | Can Be Nested Within |
---|---|---|
<PresentationML>document<<presentationML>document</PresentationML>presentationML> | A PresentationML document, not stored, considered to wrap the stored PresentationML data implicitly, i.e. this tag is not written. | |
<p>text</p> | Paragraph, contains text to be rendered as a single block of text. | <PresentationML><presentationML> <td><th><li> |
<br/> | Line break | <PresentationML><presentationML> <i><b> <p><ol><ul> <td><th><li> |
<b>text</b> | Bold, contains text to be rendered in an emphasized way, by presentation as a bold font if possible. | <PresentationML><presentationML> <i> <p><ol><ul> <td><th><li> |
<i>text</i> | Italic, contains text to be rendered in a (secondary) emphasized way, by presentation as an italic font if possible. | <PresentationML><presentationML> <b> <p><ol><ul> <td><th><li> |
<ul><li>List Item 1<li/><li>List Item 1<li/></ul> | Unordered list, should be rendered as bullet points if possible. | <PresentationML><presentationML> <p><b><i> <td><th><li> |
<ol><li>List Item 1<li/><li>List Item 1<li/></ol> | Ordered list, should be rendered as a numbered list possible. | <PresentationML><presentationML> <p><b><i> <td><th><li> |
<table> <tr><th>Col 1</th><th>Col 2</th></tr> <tr><td>Cell 1,1</td><td>Cel 2,1</td></tr> </table> | Simple table. | <PresentationML><presentationML> <p> |
<chime/> | An audible chime. A message MAY contain a single <chime/> tag, messages SHOULD NOT contain multiple chime tags but if such messages are received the recipient MUST treat this in the same was as if there was only one <chime/>. The position of the <chime/> tag is not significant. | <PresentationML><presentationML> |
Named Character References
...
EntityML contains the following tags: (additional syntax is described in Rendering Pipeline which is not yet included here, TBD)
Tag | Description | Can Be Nested Within |
<entity type=”type.id” name=”entity.name” version="major.minor" enrichment="positive-integer"> <attribute>…..</attribute> <entity>…..</entity>
|
<presentationML enrichment="positive-integer"> default representation </ |
presentationML enrichment="positive-integer"> </entity> | An Entity describes some type of complex object which is referenced from within a message. All Entity elements MUST include a type XML-attribute which defines the format and semantics of the Entity. All Entity elements MAY contain child Entity and Attribute elements which are considered to make up the Entity by composition. All Entity elements MAY contain a presentationML element which contains a default representation of the Entity in PresentationML mark up. Entity elements which are not children of another entity element MUST contain a presentationML element. | <messageML> <p><b><i><td><th><li> <entity> |
<attribute type=”type.id” name=”attribute.name” priority |
=”non-negative-integer” enrichment="positive-integer" value=”value.string” /> | An Attribute describes an attribute of a complex object. All Attribute elements MUST include a type XML-attribute which defines the format and semantics of the Attribute. All Attribute elements MUST contain a value XML-attribute which defines the value of the Attribute. Where there are multiple Attributes within an Entity with the same name a priority XML-attribute MUST be present, indicating which value is preferred. |
<entity>
Attribute Types
The following type identifiers are defined for Attributes:
Type ID | Description |
org.symphonyoss.number.byte | An 8 bit unsigned integer, having the semantics of a Java byte, represented as a string of decimal digits. |
org.symphonyoss.number.short | A 16 bit signed integer, having the semantics of a Java short, represented as a string of decimal digits. |
org.symphonyoss.number.int | A 32 bit signed integer, having the semantics of a Java int, represented as a string of decimal digits. |
org.symphonyoss.number.long | A 64 bit signed integer, having the semantics of a Java long, represented as a string of decimal digits. |
org.symphonyoss.number.double | A 64 bit signed floating point number, having the semantics of a Java double, represented as a string of decimal digits optionally with a single decimal point. |
org.symphonyoss.type.string | A string value. |
org.symphonyoss.time.millis | A date/time value specified as a 64 bit integer value, represented as a string of decimal digits, indicating a time in milliseconds since Jan 1st 1970 UTC with the semantics of a Java Date. |
org.symphonyoss.type.country | An ISO 3166-1 Alpha 2 Country code (see https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) |
org.symphonyoss.fin.security.id.isin | An International Securities Identification Number (see https://en.wikipedia.org/wiki/International_Securities_Identification_Number) |
org.symphonyoss.fin.security.id.cusip | A CUSIP (see https://en.wikipedia.org/wiki/CUSIP) |
org.symphonyoss.fin.security.id.openfigi | An OpenFIGI identifier (see https://en.wikipedia.org/wiki/Financial_Instrument_Global_Identifier) |
org.symphonyoss.fin.exchange.id.mic | A Market Identifier Code (see http://www.iso15022.org/MIC/homepageMIC.htm) |
org.symphonyoss.fin.exchange.id.ticker | An exchange identifier |
org.symphonyoss.fin.ccy | A 3 letter currency identifier as defined in ISO 4217 (see https://en.wikipedia.org/wiki/ISO_4217) |
org.symphonyoss.fin.ccypair | A 6 letter currency pair identifier as defined in TBD |
Entity Types
The following Entity Type Identifiers are defined and may have the sub-Entities and Attributes defined in the following tables.
Financial Security - org.symphonyoss.fin.security
A financial security, defined by the following Attributes
...
Name
...
Type
...
Cardinality
...
Description
...
Name
...
org.symphonyoss.fin.security.id.*
...
1..n
...
An established identifier for the security referred to.
Example
Code Block |
---|
<entity type=”org.symphonyoss.fin.security”/>
<attribute name=”id” type=”org.symphonyoss.fin.security.id.isin” priority=0 value=”US0378331005”/>
<attribute name=”id” type=”org.symphonyoss.fin.security.id.cusip” priority=1 value=”037833100”/>
<attribute name=”id” type=”org.symphonyoss.fin.security.id.openfigi” priority=2 value=”BBG000B9XRY4”/>
</entity> |
Price Source – org.symphonyoss.fin.price.source
A source of prices for financial securities (possibly an exchange), defined by the following Attributes
...
Name
...
Type
...
Cardinality
...
Description
...
Name
...
org.symphonyoss.fin.exchange.id.*
...
1..n
...
An established identifier for an exchange.
Example
Code Block |
---|
<entity format=”org.symphonyoss.fin.price.source”/>
<attribute name=”id” format=”org.symphonyoss.fin.exchange.id.mic” priority=0 value=”45”/>
<attribute name=”id” format=”org.symphonyoss.fin.exchange.id.ticker” priority=1 value=”NYSE”/>
</entity> |
Moment in Time – org.symphonyoss.time.moment
A moment in time defined by the following Attributes
...
Name
...
Type
...
Cardinality
...
Description
...
at
...
org.symphonyoss.time.millis
...
1
...
The moment in time.
...
annotation
...
org.symphonyoss.type.string
...
0..1
...
A textual annotation.
Example
Code Block |
---|
<entity format=”org.symphonyoss.time.moment”/>
<attribute name=”at” format=”org.symphonyoss.time.millis” value=45464996/>
<attribute name=”annotation” format=”org.symphonyoss.type.string” value=”Looks like it has turned here”/>
</entity> |
Period of Time – org.symphonyoss.time.range
A period time defined by the following Attributes
Name | Type | Cardinality | Description |
from | org.symphonyoss.time.millis | 1 | The start of the period of time (inclusive). |
to | org.symphonyoss.time.millis | 1 | The end of the period of time (inclusive). |
annotation | org.symphonyoss.type.string | 0..1 | A textual annotation. |
Example
Code Block |
---|
<entity name=”time” format=”org.symphonyoss.time.range”/>
<attribute name=”from” format=”org.symphonyoss.time.millis” value=45464646/>
<attribute name=”to” format=”org.symphonyoss.time.millis” value=45464996/>
<attribute name=”annotation” format=”org.symphonyoss.type.string” value=”Period of interest.”/>
</entity> |
Price History – org.symphonyoss.fin.security.price.history
A price of some financial security over some period time defined by the following sub-Entities
...
Name
...
Type
...
Cardinality
...
Description
...
...
org.symphonyoss.fin.security
...
1
...
The security to which this price history relates
...
...
org.symphonyoss.fin.price.source
...
0..1
...
The source of prices quoted or referred to
...
time
...
org.symphonyoss.time.*
...
1
...
The moment in time or time period to which this price history relates
...
...
org.symphonyoss.time.moment
...
0..1
...
Other moments in time of interest, presumed to include annotations
Example
Code Block |
---|
<entity type=”org.symphonyoss.fin.security.price.history”/>
<entity type=”org.symphonyoss.fin.security”/>
<attribute name=”id” type=”org.symphonyoss.fin.security.id.isin” priority=0 value=”US0378331005”/>
<attribute name=”id” type=”org.symphonyoss.fin.security.id.cusip” priority=1 value=”037833100”/>
<attribute name=”id” type=”org.symphonyoss.fin.security.id.openfigi” priority=2 value=”BBG000B9XRY4”/>
<presentationML>Apple Common Stock</presentationML>
</entity>
<entity format=”org.symphonyoss.fin.price.source”/>
<attribute name=”id” format=”org.symphonyoss.fin.exchange.id.mic” priority=0 value=”45”/>
<attribute name=”id” format=”org.symphonyoss.fin.exchange.id.ticker” priority=1 value=”NYSE”/>
<presentationML><b>NYSE</b></presentationML>
</entity>
<entity name=”time” format=”org.symphonyoss.time.range”/>
<attribute name=”from” format=”org.symphonyoss.time.millis” value=45464646/>
<attribute name=”to” format=”org.symphonyoss.time.millis” value=45464996/>
</entity>
<entity format=”org.symphonyoss.time.moment”/>
<attribute name=”at” format=”org.symphonyoss.time.millis” value=45464996/>
<attribute name=”annotation” format=”org.symphonyoss.type.string” value=”Looks like it has turned here”/>
</entity>
<presentationML>
<b>NYSE:Apple</b> from Jan 5 2016 to Mar 29 2016; at Mar 27 2016 ”Looks like it has turned here”
</presentationML>
</entity> |
Price Quote – org.symphonyoss.fin.security.price.quote
A quoted price of some financial security defined by the following Attributes and sub-Entities
...
Name
...
Type
...
Cardinality
...
Description
...
...
org.symphonyoss.fin.security
...
1
...
The security to which this price history relates
...
...
org.symphonyoss.fin.price.source
...
0..1
...
The source of prices quoted or referred to
...
...
org.symphonyoss.time.moment
...
1
...
The date/time of this price quote
...
...
org.symphonyoss.fin.ccy
...
1
...
The currency of the quoted price
...
amount
...
org.symphonyoss.number.*
...
1
...
The quoted price in the given currency
...
validUntil
...
org.symphonyoss.time.millis
...
0..1
...
The time until which this quote is valid
...
quantityMin
...
org.symphonyoss.number.*
...
0..1
...
The minimum quantity for which the quoted price is valid
...
quantityMax
...
org.symphonyoss.number.*
...
0..1
...
The maximum quantity for which the quoted price is valid
Example
...
Priority and enrichment MUST NOT both be specified on a single attribute. Recipients of messages where this is the case MUST ignore the priority. When a renderer is presented with an entity with multiple attributes with the same name they SHOULD use the value with the lowest priority value which they can understand. If there is no such value then they SHOULD select the value with the highest enrichment value which they can understand. | <entity> |
MessageML
The following tags are defined for MessageML, tag names are case sensitive:
Tag | Description | Can Be Nested Within |
---|---|---|
<MessageML>document<<messageML>document</MessageML>messageML> | A MessageML document. | |
<errors> <error>Some error message</error> <error>Another error message</error> </errors> | A structure to allow for the reporting of errors in transformations. These tags should only be produced as a result of generating MessageML via transformation from another format. When generating MessageML as part of a read operation, the generating system MAY include a single <errors> section to indicate problems which occurred during processing. When sending MessageML as part of a write request the sending system SHOULD NOT generate an <errors> section. If such a section is received by the server fulfilling a write operation then the operation MUST fail. | <MessageML><messageML> |
Additionally all PresentationML tags except for <PresentationML></PresentationML> and all EntityML tags are also valid MessageML tags, and have the same meaning as defined above. This means that all PresentationML tags can be nested within <MessageML> <messageML>
Entity and Attribute Definitions
The definitions of entity and attribute types have moved to Entity Definitions.
[1] In this document Entity and Attribute refer to XML Elements named “entity” and “attribute” respectively. Where we need to refer to an XML Attribute (a name value pair defined inside an XML element tag) we use the term XML-attribute.