Introduction
A data domain version (domain version) can cross-reference (ref) another in its definition creating a relationship between two or more domain versions.
Federated Cross-references
Federated Data Records are identified by a UUID and a list of adaptors that where that Data Record is stored. This allows "assembling" data records by querying the adaptors that have the data record and compiling the results. If a Federated domain has a cross-reference, when it is assembled, the cross-reference will be assembled as well. See Accessing Data Records for more information regarding assembling data records.
Cross-references are established by specifying the relationship in Lucene
syntax. This relationship is specified in the query
property. Additionally, the relationship may be one-to-one
or one-to-many using the multivalued
property.
Note that ONLY DR Key properties of the parent and child records may be used in the query
that establishes
the relationship. Therefore, any properties that may be required for this relationship should be included in
the DR Key properties.
A Quick Example
In the following example, a student
domain version makes a cross-reference to the country:v1
domain-version,
and a one-to-one relationship is established by linking the property homeCountry
in student:v1
to id
in country:v1
.
NOTES
-
query
is in Lucene syntax. -
Properties of the parent record are referenced by enclosing in
${…}
syntax. -
Properties of both the parent and child records referenced in
query
MUST be included in DR Key Properties.
{
"modelSchema": {
"properties": {
"studentID": {
"type": "string",
"required": true
},
"name": {
"type": "string"
},
"homeCountryId": {
"type": "string"
},
"homeCountry": {
"$ref": "/domains/country:v1",
"description": "One-to-one cross reference between student and their home country",
"query": "id:${homeCountryId}",
"multivalued": false
},
"birthday": {
"type": "string"
}
}
},
"drKeyProperties": [
"studentID",
"homeCountryId"
]
}