Ontology node
An ontology is a formal specification of the semantic schema of your model.
In Mix.nlu, the ontology includes the set of intents and entities, and the relationships between them. The intents and entities you define in the ontology are used to annotate your training data, and thus form the interface between the NLU and your client application.
The ontology is the central schema for organizing your model and its sample data. The intents, entities, and associations between them are all stored in the ontology.
Ontology XML meta
<ontology>
<intents>
<intent name="str">
<links>
<link conceptref="str"/>
</links>
</intent>
</intents>
<concepts>
<concept name="str" freetext="bool">
<settings>
<setting name="str" value="str"/>
</settings>
<relations>
<relation type="str" conceptref="str" />
</relations>
</concept>
</concepts>
</ontology>
Intent-entity links
Each intent is linked to zero or more entities. These are the entities that you can use when annotating entities in training samples that belong to the intent. They are also the full set of entities that can be returned in the JSON NLU results for this intent. You can think of the links as parameters to a method.
Samples labeled with an intent will only allow annotation of entities that are linked to the intent.
Entity data types
The following entity data types can be included in a TRSX file:
| Type | Description |
|---|---|
| not_set | Data type is not set. |
| no_format | Text data without any special format. Refers to the Generic data type in Mix.nlu and Mix.dialog. |
| yes_no | Yes or no. |
| boolean | True or false. |
| number | A numerical quantity. |
| digits | A sequence of digits from 0-9. |
| alphanum | A sequence of letters or numbers, A-Z, a-z, 0-9. |
| date | A YYYYMMDD date. |
| time | An HHMM time. |
| amount | A quantity with units, defined by the magnitude and units. |
| distance | A measure of distance, including magnitude and distance unit. |
| temperature | A measure of temperature, including possibly signed magnitude and units. |
Entity collection methods
A collection method is related to how the set of possible values of the entity can be enumerated or defined.
Entity collection methods are as follows:
| Type | Description |
|---|---|
| List | Default collection method of entities with data type no_format (generic). |
| Dynamic List | If the dynamic attribute is true, the entity is defined as a Dynamic List. Default is false. |
| Freeform | If the freetext attribute is true, the entity is defined as a Freeform entity. Default is false. |
| Rule-based | Rule-based entities are defined with a GrXML grammar. To define an entity as rule-based, specify the name of the GrXML file in the ruleGrammarFileName attribute. |
| Relationship | Entities can be extended by relationships to other entities. To define a relationship entity, do not assign freetext or dynamic.Instead, use a relations node. |
Predefined entities
Nuance predefined entities can be used simply by referencing them via conceptref in ontology relation nodes and in sample annotations.
Entity relationships
There are three types of relationships that entities can have between entities.
| Type | Description |
|---|---|
| isA | A entity can be related to zero-one entity with the isA relationship. |
| hasA | A entity can be related to zero-to-many entities with the hasA relationship. |
| hasReferrers | An entity can be referred to as a moment (REF_MOMENT), a person (REF_PERSON), a place (REF_PLACE), or a thing (REF_THING). See Anaphoras for details. |
Note that isA and hasA are mutually exclusive.
For example, consider a flight application, with the following entities: City, origin_city, destination_city, and itinerary. The following relationships could be defined:
- origin_city isA city
- destination_city isA city
- itinerary hasA origin_city
- itinerary hasA destination_city
Ontology node specification
The ontology node is defined as follows:
- The
ontologynode contains zero-oneintentsnode andconceptsnode. - The
ontologynode contains the optional attributebase, which is currently not used.
Intents node
The intents node contains the ontology intents and is defined as follows:
- The
intentsnode contains zero-manyintentnodes. - Each
intentnode defines a specific intent and contains zero-onelinksnode.
Each intent node has the following attributes:
| Attribute | Required? | Description |
|---|---|---|
| name | Required | Name of the intent. For example: FIND_MOVIE. |
| sourceref | Optional | Source of the intent. For example: DTV_Domain. |
Links node
An intent is linked to a set of entities. The links node describes the entities that can be used in sample annotations for this intent and are returned in the JSON results.
The links node contains zero-many link nodes.
Each link node has the following attributes:
| Attribute | Required? | Description |
|---|---|---|
| conceptref | Required | Name of the entity associated with this intent. This entity is defined in a concept node (see below). |
| sourceref | Optional | Source of the link. For example: DTV_Domain. |
Concepts node
The concepts node contains the ontology entities and is defined as follows:
- The
conceptsnode contains zero-manyconceptnodes. - Each
conceptnode defines a single entity. - Each
conceptnode contains zero-onesettings,relations, andregexnode.
Each concept node has the following attributes:
| Attribute | Required? | Description |
|---|---|---|
| name | Required | Name of the entity. |
| dataType | Optional | Type of data the entity contains. See Entity data types for more information. |
| freetext | Optional | true for a freeform entity; otherwise, false (default). See Entity collection methods. |
| dynamic | Optional | true for a dynamic entity; otherwise, false (default). See Entity collection methods. |
| ruleGrammarFileName | Optional | For rule-based entities, specifies the name of the GrXML file that defines the entity and its relative location in the TRSX file. See Entity collection methods. |
Relations node
The relations node specifies the relation between entities. Relations can be of type isA, hasA, or hasReferrers. See Entity relationships for more information.
The relations node contains zero-many relation nodes.
Each relation node has the following attributes:
| Attribute | Required? | Description |
|---|---|---|
| type | Required | Type of relation. Can be of type isA, hasA, or hasReferrers. See Entity relationships. |
| conceptref | Required | Name of entity to which the relation applies. |
| sourceref | Optional | Source of the relation. For example: DTV_Domain. |
Note the following:
- The
relationnode cannot contain twoisArelations. isAandhasAare mutually exclusive.
Settings node
The settings node defines settings that apply to the entity.
| Setting | Required? | Description |
|---|---|---|
| isSensitive | Optional | When true, user sensitive data is masked in logs. Default value is false. |
| canonicalize | Optional | Specifies whether canonicalization is enabled or not. When true, values are returned for entities in the JSON results. Set to false if values are not required, for example, for performance optimization. Default value is true. |
Settings schema
<ontology base="http://localhost:8080/resources/ontology-1.0.xml">
<concepts>
<concept name="PAYMENT_DATE"/>
<concept name="CCV">
<settings>
<setting name="isSensitive" value="true"/>
</settings>
</concept>
<concept name="CREDIT_CARD_NUMBER">
<settings>
<setting name="isSensitive" value="true"/>
</settings>
</concept>
</concepts>
</ontology>
Regex node
The regex node defines the regex pattern for regex-based entities. For example, a phone number entity might have the following regex node: (\+\d{1,2}\s)?\(?\d{3}\)?[\s.-]\d{3}[\s.-]\d{4}
Ontology node example
In this example, there is one use case, SEARCH, and two entities are used as part of that use case: the query and the engine to use when searching.
<ontology base="https://developer.nuance.com/mix/nlu/trsx/ontology-1.0.xml">
<intents>
<intent name="SEARCH">
<links>
<link conceptref="SEARCH_ENGINE"/>
<link conceptref="SEARCH_QUERY"/>
</links>
</intent>
</intents>
<concepts>
<concept name="SEARCH_QUERY" freetext="true"/>
<concept name="SEARCH_ENGINE"/>
</concepts>
</ontology>
Ontology schema
<xs:element name='ontology'>
<xs:annotation>
<xs:documentation>Project Ontology: Data contract consisting of Intents, Entities, and their relations and properties.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element minOccurs='0' maxOccurs='1' ref='intents'/>
<xs:element minOccurs='0' maxOccurs='1' ref='concepts'/>
</xs:sequence>
<xs:attribute name='base' use='optional' type='xs:anyURI'/>
</xs:complexType>
</xs:element>
<xs:element name='intents'>
<xs:annotation>
<xs:documentation>Ontology Intents: App use cases, utilized as classifications for samples.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element minOccurs='0' maxOccurs='unbounded' ref='intent'/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name='intent'>
<xs:annotation>
<xs:documentation>Intent: A particular use case, e.g. "turn_tv_on" or "stop_microwave".</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element minOccurs='0' maxOccurs='1' ref='links'/>
</xs:sequence>
<xs:attribute name='name' use='required' type='xs:NCName'/>
<xs:attribute name='sourceref' use='optional' type='xs:NCName'/>
</xs:complexType>
</xs:element>
<xs:element name='links'>
<xs:annotation>
<xs:documentation>An intent is linked to a set of entities. Samples within the intent can be annotated only with the linked entities.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element minOccurs='0' maxOccurs='unbounded' ref='link'/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name='link'>
<xs:annotation>
<xs:documentation>Intent link: Specific entities that are applicable in the context of the defined Intent.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name='conceptref' use='required' type='xs:NCName'/>
<xs:attribute name='sourceref' use='optional' type='xs:NCName'/>
</xs:complexType>
</xs:element>
<xs:element name='concepts'>
<xs:annotation>
<xs:documentation>Ontology entities: Specific details as part of the given use case, to guide decision making.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element minOccurs='0' maxOccurs='unbounded' ref='concept'/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name='concept'>
<xs:annotation>
<xs:documentation>Entity: Possibly list based (static or dynamic) or freetext - these are parsed within the context of an Intent.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:all>
<xs:element minOccurs='0' maxOccurs='1' ref='settings'/>
<xs:element minOccurs='0' maxOccurs='1' ref='regex'/>
<xs:element minOccurs='0' maxOccurs='1' ref='relations'/>
</xs:all>
<xs:attribute name='name' use='required' type='xs:NCName'/>
<xs:attribute name='dataType' use='optional' type='data_type'/>
<xs:attribute name='freetext' use='optional' type='xs:boolean' default='false'/>
<xs:attribute name='dynamic' use='optional' type='xs:boolean' default='false'/>
<xs:attribute name='ruleGrammarFileName' use='optional' type='xs:string'/>
<xs:attribute name='sourceref' use='optional' type='xs:NCName'/>
</xs:complexType>
</xs:element>
<xs:simpleType name='data_type'>
<xs:restriction base='xs:string'>
<xs:enumeration value='not_set'/>
<xs:enumeration value='no_format'/>
<xs:enumeration value='yes_no'/>
<xs:enumeration value='boolean'/>
<xs:enumeration value='number'/>
<xs:enumeration value='digits'/>
<xs:enumeration value='alphanum'/>
<xs:enumeration value='date'/>
<xs:enumeration value='time'/>
<xs:enumeration value='amount'/>
<xs:enumeration value='distance'/>
<xs:enumeration value='temperature'/>
</xs:restriction>
</xs:simpleType>
<xs:element name='regex'/>
<xs:element name='relations'>
<xs:annotation>
<xs:documentation>Entity Relations: It is possible to inherit from an entity in some fashion. The following types can be described: isA, hasA, and hasReferrers. </xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element minOccurs='0' maxOccurs='unbounded' ref='relation'/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name='relation'>
<xs:annotation>
<xs:documentation>Relation: Type of linkage between entities -- isA, hasA, or hasReferrers.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name='type' use='required' type='relation_type'/>
<xs:attribute name='conceptref' use='required' type='xs:NCName'/>
<xs:attribute name='sourceref' use='optional' type='xs:NCName'/>
</xs:complexType>
</xs:element>
<xs:simpleType name='relation_type'>
<xs:restriction base='xs:string'>
<xs:enumeration value='isA'/>
<xs:enumeration value='hasA'/>
<xs:enumeration value='hasReferrers'/>
</xs:restriction>
</xs:simpleType>
<xs:element name='settings'>
<xs:annotation>
<xs:documentation>Entity Settings: Properties on the entity that can be altered, e.g. "canonicalize".</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element minOccurs='0' maxOccurs='unbounded' ref='setting'/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name='setting'>
<xs:annotation>
<xs:documentation>Entity Setting: Specific name-value pair to assign to the Entity.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name='name' use='required'/>
<xs:attribute name='value' use='required'/>
</xs:complexType>
</xs:element>
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.