CDM/schemaDocuments/foundations.4.1.cdm.json

1115 строки
33 KiB
JSON
Исходник Обычный вид История

{
"documentVersion": "4.1",
"$schema": "./schema.cdm.json",
"jsonSchemaSemanticVersion": "1.0.0",
"imports": [
{
"corpusPath": "/primitives.2.1.1.cdm.json"
},
{
"corpusPath": "/meanings.1.2.1.cdm.json"
}
],
"definitions": [
{
"traitName": "is.application",
"extendsTrait": "is",
"explanation": "root trait for application information"
},
{
"traitName": "is.application.releaseVersion",
"extendsTrait": "is.application",
"hasParameters": [
{
"name": "releaseVersion",
"explanation": "semantic version number of the application introducing this entity",
"direction": "both",
"required": false,
"dataType": "string"
}
]
},
{
"traitName": "is.CDM",
"extendsTrait": "is",
"elevated": true,
"explanation": "root trait for information about the CDM itself."
},
{
"traitName": "is.CDM.entityVersion",
"extendsTrait": "is.CDM",
"hasParameters": [
{
"name": "versionNumber",
"explanation": "semantic version number of the entity",
"required": true,
"dataType": "string"
}
],
"associatedProperties": [
"version"
]
},
{
"traitName": "is.CDM.attributeGroup",
"extendsTrait": "is.CDM",
"elevated": true,
"explanation": "identifies standard groups of attributes in CDM entities.",
"hasParameters": [
{
"name": "groupList",
"dataType": {
"dataTypeReference": "entity",
"appliedTraits": [
{
"traitReference": "means.entityName.specific",
"arguments": [
"attributeGroupSet"
]
}
]
}
}
],
"associatedProperties": [
"cdmSchemas"
]
},
{
"entityName": "CdmEntity",
"exhibitsTraits": [
{
"traitReference": "is.CDM.entityVersion",
"arguments": [
{
"name": "versionNumber",
"value": "4.1"
}
]
}
]
},
{
"entityName": "attributeGroupSet",
"explanation": "a set of references to attributeGroups",
"extendsEntity": "reference",
"hasAttributes": [
{
"name": "attributeGroupReference",
"dataType": "attributeGroup",
"purpose": "hasA"
}
],
"exhibitsTraits": [
{
"traitReference": "is.CDM.entityVersion",
"arguments": [
{
"name": "versionNumber",
"value": "4.1"
}
]
}
]
},
{
"entityName": "entityGroupSet",
"explanation": "The 'old' name for this entity before it was fixed to make it type specific",
"extendsEntity": "reference",
"hasAttributes": [
{
"name": "entityReference",
"dataType": "entityName",
"purpose": "hasA"
},
{
"name": "attributeReference",
"dataType": "attributeName",
"purpose": "hasA"
}
],
"exhibitsTraits": [
{
"traitReference": "is.CDM.entityVersion",
"arguments": [
{
"name": "versionNumber",
"value": "4.1"
}
]
}
]
},
{
"entityName": "entitySet",
"explanation": "holds a list of entity references",
"extendsEntity": "entityGroupSet",
"hasAttributes": [
{
"name": "relationshipName",
"dataType": "name",
"purpose": "hasA"
}
],
"exhibitsTraits": [
{
"traitReference": "is.CDM.entityVersion",
"arguments": [
{
"name": "versionNumber",
"value": "4.1"
}
]
}
]
},
{
"entityName": "localizedTable",
"explanation": "localized text",
"extendsEntity": "reference",
"hasAttributes": [
{
"name": "languageTag",
"dataType": "languageTag",
"explanation": "A BCP 47 language tag describing the associated display text"
},
{
"name": "displayText",
"dataType": "localizedDisplayText",
"purpose": "hasA"
}
],
"exhibitsTraits": [
{
"traitReference": "is.CDM.entityVersion",
"arguments": [
{
"name": "versionNumber",
"value": "4.1"
}
]
}
]
},
{
"traitName": "is.virtual.attribute",
"extendsTrait": "is",
"explanation": "Marks an attribute added to an entity to document or represent a concept, often regarding other attributes. When working with data, be aware that virtual attributes might never have corresponding data values in an entity's partition or might only have data values if special measures are taken to manifest them."
},
{
"traitName": "is.localized",
"extendsTrait": "is",
"explanation": "Associates a list of localized string with an object",
"hasParameters": [
{
"name": "localizedDisplayText",
"dataType": {
"dataTypeReference": "entity",
"appliedTraits": [
{
"traitReference": "means.entityName.specific",
"arguments": [
"localizedTable"
]
}
]
},
"explanation": "a reference to the constant entity holding the list of localized text"
}
]
},
{
"traitName": "is.localized.displayedAs",
"extendsTrait": "is.localized",
"explanation": "Holds the list of language specific display text for an object.",
"associatedProperties": [
"displayName"
]
},
{
"traitName": "is.localized.describedAs",
"extendsTrait": "is.localized",
"explanation": "Holds the list of language specific descriptive text for an object.",
"associatedProperties": [
"description"
]
},
{
"entityName": "listLookupValues",
"explanation": "a localized list of descriptions for possible values in a listLookup type attribute",
"extendsEntity": "localizedTable",
"hasAttributes": [
{
"name": "attributeValue",
"dataType": "integer",
"explanation": "One of the enumerated values for this attribute"
},
{
"name": "displayOrder",
"dataType": "displayOrder",
"purpose": "orderedBy",
"explanation": "The presentation order of the enumerated value"
}
],
"exhibitsTraits": [
{
"traitReference": "is.CDM.entityVersion",
"arguments": [
{
"name": "versionNumber",
"value": "4.1"
}
]
}
]
},
{
"entityName": "listLookupCorrelatedValues",
"explanation": "a localized list of descriptions for possible values in a listLookupCorrelated type attribute",
"extendsEntity": "listLookupValues",
"hasAttributes": [
{
"name": "correlatedValue",
"dataType": "integer",
"explanation": "value for the correlated attribute that corresponds to the associated attributeValue"
}
],
"exhibitsTraits": [
{
"traitReference": "is.CDM.entityVersion",
"arguments": [
{
"name": "versionNumber",
"value": "4.1"
}
]
}
]
},
{
"entityName": "listLookupStringValues",
"explanation": "a localized list of descriptions for possible values in a listLookupString type attribute",
"extendsEntity": "localizedTable",
"hasAttributes": [
{
"name": "attributeValue",
"dataType": "string",
"explanation": "One of the enumerated values for this attribute"
},
{
"name": "displayOrder",
"dataType": "displayOrder",
"purpose": "orderedBy",
"explanation": "The presentation order of the enumerated value"
}
],
"exhibitsTraits": [
{
"traitReference": "is.CDM.entityVersion",
"arguments": [
{
"name": "versionNumber",
"value": "4.1"
}
]
}
]
},
{
"entityName": "listLookupWellKnownValues",
"explanation": "a localized list of descriptions for possible values in a listLookupWellKnown type attribute",
"extendsEntity": "listLookupStringValues",
"hasAttributes": [
{
"name": "description",
"dataType": "string",
"explanation": "A description of the meaning of the look up value."
},
{
"purpose": "identifiedBy",
"name": "uniqueIdentifier",
"dataType": "string",
"explanation": "A domain specific unique identifier such as a URI or GUID for the well known value."
}
],
"exhibitsTraits": [
{
"traitReference": "is.CDM.entityVersion",
"arguments": [
{
"name": "versionNumber",
"value": "4.1"
}
]
}
]
},
{
"traitName": "does.haveDefault",
"extendsTrait": "does",
"explanation": "An attribute has a default value",
"hasParameters": [
{
"name": "default",
"dataType": "any",
"required": true
}
],
"associatedProperties": [
"defaultValue"
]
},
{
"traitName": "is.nullable",
"extendsTrait": "is",
"explanation": "The attribute value may be set to NULL.",
"associatedProperties": [
"isNullable"
]
},
{
"traitName": "is.readOnly",
"extendsTrait": "is",
"associatedProperties": [
"isReadOnly"
]
},
{
"traitName": "is.requiredAtLevel",
"extendsTrait": "is",
"explanation": "The requirement level for setting values into this attribute in CDS for Applications or for including this attribute in entities created in CDS for Analytics",
"hasParameters": [
{
"name": "level",
"dataType": "string",
"required": true,
"direction": "both",
"explanation": "values can be: 'systemrequired', 'required', 'recommended', 'none'"
}
]
},
{
"traitName": "is.constrained",
"extendsTrait": "is",
"explanation": "maximum length or value constraints",
"hasParameters": [
{
"name": "maximumLength",
"dataType": "integer"
},
{
"name": "minimumValue",
"dataType": "decimal"
},
{
"name": "maximumValue",
"dataType": "decimal"
}
],
"associatedProperties": [
"maximumValue",
"minimumValue",
"maximumLength"
]
},
{
"traitName": "is.constrainedList",
"extendsTrait": "is",
"explanation": "the values of an attribute are taken from or looked up from a fixed list of possibilities",
"hasParameters": [
{
"name": "defaultList",
"dataType": {
"dataTypeReference": "entity",
"appliedTraits": [
{
"traitReference": "means.entityName.specific",
"arguments": [
"listLookupValues"
]
}
]
}
}
],
"associatedProperties": [
"valueConstrainedToList"
]
},
{
"traitName": "is.constrainedList.correlated",
"extendsTrait": "is",
"explanation": "the values of an attribute are taken from or looked up from a fixed list of possibilities that represent correlated status",
"hasParameters": [
{
"name": "defaultList",
"dataType": {
"dataTypeReference": "entity",
"appliedTraits": [
{
"traitReference": "means.entityName.specific",
"arguments": [
"listLookupCorrelatedValues"
]
}
]
}
}
],
"associatedProperties": [
"valueConstrainedToList"
]
},
{
"traitName": "is.constrainedList.string",
"extendsTrait": "is",
"explanation": "the values of an attribute are taken from or looked up from a fixed list of possibilities",
"hasParameters": [
{
"name": "defaultList",
"dataType": {
"dataTypeReference": "entity",
"appliedTraits": [
{
"traitReference": "means.entityName.specific",
"arguments": [
"listLookupStringValues"
]
}
]
}
}
],
"associatedProperties": [
"valueConstrainedToList"
]
},
{
"traitName": "is.constrainedList.wellKnown",
"extendsTrait": "is",
"explanation": "The values of an attribute are taken from or looked up from a fixed list of possibilities which are defined in an identified public location.",
"hasParameters": [
{
"name": "uniqueIdentifier",
"explanation": "The identified public location for the complete set of possible values",
"dataType": "string"
},
{
"name": "defaultList",
"dataType": {
"dataTypeReference": "entity"
}
}
],
"associatedProperties": [
"valueConstrainedToList"
]
},
{
"traitName": "means.entityState",
"extendsTrait": "does.elevateAttribute",
"explanation": "the attribute represents the current state of the entity."
},
{
"purposeName": "representsStateWith",
"extendsPurpose": "hasA",
"explanation": "the related attribute describes the current state of the entity",
"exhibitsTraits": [
"means.entityState"
]
},
{
"traitName": "is.correlatedWith",
"extendsTrait": "is",
"explanation": "the attribute value is correlated with the sourceAttribute",
"hasParameters": [
{
"name": "sourceAttribute",
"dataType": "attributeName",
"direction": "both",
"required": true
}
]
},
{
"purposeName": "representsCorrelatedStatusWith",
"extendsPurpose": "hasA",
"explanation": "the related attribute describes the current status of the entity in its current state",
"exhibitsTraits": [
"is.correlatedWith"
]
},
{
"dataTypeName": "listLookup",
"extendsDataType": "integer",
"explanation": "One integer value from a defined list of possibilities",
"exhibitsTraits": [
"does.haveDefault",
"is.constrainedList"
]
},
{
"dataTypeName": "listLookupMultiple",
"extendsDataType": "string",
"explanation": "A set of one or more values from a defined list of possibilities",
"exhibitsTraits": [
"does.haveDefault",
"means.content.text.CSV",
"is.constrainedList"
]
},
{
"dataTypeName": "listLookupCorrelated",
"extendsDataType": "integer",
"explanation": "One integer value from a defined list of possibilities where the list represents correlated status",
"exhibitsTraits": [
"is.constrainedList.correlated"
]
},
{
"dataTypeName": "listLookupString",
"extendsDataType": "string",
"explanation": "One string value from a defined list of possibilities",
"exhibitsTraits": [
"is.constrainedList.string"
]
},
{
"dataTypeName": "listLookupWellKnown",
"extendsDataType": "string",
"explanation": "One string value from a defined list of possibilities which are defined in an identified public location.",
"exhibitsTraits": [
"is.constrainedList.wellKnown"
]
},
{
"traitName": "is.calculationOf",
"extendsTrait": "is.correlatedWith",
"explanation": "the attribute value is the result of a calculation on the sourceAttribute"
},
{
"traitName": "is.partition",
"extendsTrait": "is",
"explanation": "The base trait for partition specific traits."
},
{
"traitName": "is.partition.format",
"extendsTrait": "is.partition"
},
{
"traitName": "is.partition.format.CSV",
"extendsTrait": "is.partition.format",
"explanation": "The value is the file format settings of a partition CSV file.",
"hasParameters": [
{
"name": "columnHeaders",
"dataType": "boolean",
"explanation": "Indicates whether the .csv file has headers."
},
{
"name": "csvStyle",
"dataType": "string",
"defaultValue": "CsvStyle.QuoteAlways",
"explanation": "The CSV style which is always CsvStyle.QuoteAlways or CsvStyle.QuoteAfterDelimiter."
},
{
"name": "delimiter",
"dataType": "string",
"explanation": "The delimiter type in the .csv file."
},
{
"name": "quoteStyle",
"dataType": "string",
"defaultValue": "QuoteStyle.Csv",
"explanation": "The quote style which is always QuoteStyle.Csv or QuoteStyle.None."
},
{
"name": "encoding",
"dataType": "string",
"defaultValue": "UTF-8",
"explanation": "The character encoding in the .csv file."
},
{
"name": "escape",
"dataType": "char",
"defaultValue": "\"",
"explanation": "The character used to escape quotes inside a quoted string in the .csv file."
},
{
"name": "newline",
"dataType": "char",
"defaultValue": "\n",
"explanation": "The character used to indicate the end of a record in the .csv file."
},
{
"name": "quote",
"dataType": "char",
"defaultValue": "\"",
"explanation": "The character used to quote text strings in the .csv file."
},
{
"name": "skipLines",
"dataType": "integer",
"defaultValue": "0",
"explanation": "The number of lines to skip over at the start of the .csv file."
}
]
},
{
"traitName": "is.partition.format.parquet",
"extendsTrait": "is.partition.format",
"explanation": "The value is the file format settings of a partition parquet file."
},
{
"traitName": "is.partition.format.deltaLake",
"extendsTrait": "is.partition.format",
"explanation": "The partition path points to one complete folder of Spark Delta Lake data. Options allow for time travel access to the data.",
"hasParameters": [
{
"name": "versionAsOf",
"dataType": "integer",
"explanation": "the optional time travel version of data to read. If both versionAsOf and timestampAsOf are set, then version takes precedence"
},
{
"name": "timestampAsOf",
"dataType": "dateTime",
"explanation": "the optional time travel timestamp of data to read. If both versionAsOf and timestampAsOf are set, then version takes precedence"
}
]
},
{
"traitName": "is.partition.compressed",
"extendsTrait": "is.partition",
"explanation": "The value is the compression format represented.",
"hasParameters": [
{
"name": "compressionFormatName",
"dataType": "string",
"explanation": "the name of the compression format: gzip; Snappy; lto",
"required": true
}
]
},
{
"traitName": "is.partition.culture",
"extendsTrait": "is.partition",
"explanation": "The value denotes culture in the partition files.",
"hasParameters": [
{
"name": "culture",
"dataType": "string",
"defaultValue": "en-us"
}
]
},
{
"traitName": "is.modelConversion",
"extendsTrait": "is",
"explanation": "Represents a correlation with model.json to CDM model conversion."
},
{
"traitName": "is.modelConversion.modelVersion",
"extendsTrait": "is.modelConversion",
"explanation": "The value denotes the version number set in a converted model.json file",
"hasParameters": [
{
"name": "version",
"dataType": "string"
}
]
},
{
"traitName": "is.modelConversion.otherAnnotations",
"extendsTrait": "is.modelConversion",
"explanation": "The value denotes model.json annotations which have not been recognized.",
"hasParameters": [
{
"name": "annotations",
"dataType": "object"
}
]
},
{
"traitName": "is.modelConversion.referenceModelMap",
"extendsTrait": "is.modelConversion",
"explanation": "The value denotes a reference model map containing multiple id-location pairs used for reference entity resolution.",
"hasParameters": [
{
"name": "referenceModelMap",
"dataType": "object"
}
]
},
{
"traitName": "is.managedBy",
"extendsTrait": "is",
"explanation": "The value denotes information about a service/entity who is owning a model.",
"hasParameters": [
{
"name": "application",
"dataType": "string",
"explanation": "The name of the managing entity or service."
}
]
},
{
"traitName": "has.entitySchemaAbstractionLevel",
"extendsTrait": "has",
"explanation": "A level of abstraction assigned to an Entity schema. Logical schema descriptions use complex dataTypes, inheritance, and entities as attributes. Resolved descriptions contain none of those things, only final trait and attribute sets are shown. A composition schema manipulates, guides or re-states parts of logical schemas to produce one resolved schema.",
"hasParameters": [
{
"name": "level",
"dataType": "string",
"defaultValue": "logical",
"explanation": "Possible values: logical, composition, resolved"
}
]
},
{
"traitName": "has.schemaObjectIdentifier",
"extendsTrait": "has",
"explanation": "The schema object has an identifier, which is a string, specified as the parameter of the trait. This allows writers to define additional identification values.",
"hasParameters": [
{
"name": "identifier",
"dataType": "string",
"explanation": "The identifier for the schema object. There is no uniqueness guarantee enforced by CDM. It is a contract between reader and writer of the schema.",
"required": true
}
]
},
{
"traitName": "has.description",
"extendsTrait": "has",
"explanation": "Defines a list of localizable text descriptions",
"hasParameters": [
{
"name": "description",
"explanation": "The localized display text of the object.",
"dataType": {
"dataTypeReference": "entity",
"appliedTraits": [
{
"traitReference": "means.entityName.specific",
"arguments": [
"localizedTable"
]
}
]
}
}
]
},
{
"traitName": "has.displayName",
"extendsTrait": "has",
"explanation": "Defines a localized string defining display text for an object.",
"hasParameters": [
{
"name": "displayText",
"explanation": "The localized display text of the object.",
"dataType": {
"dataTypeReference": "entity",
"appliedTraits": [
{
"traitReference": "means.entityName.specific",
"arguments": [
"localizedTable"
]
}
]
}
}
]
},
{
"traitName": "has.displayFolder",
"extendsTrait": "has",
"explanation": "Defines a localized string representing an arbitrary folder structure for display purposes.",
"hasParameters": [
{
"name": "displayFolder",
"explanation": "The localized display text of the object.",
"dataType": {
"dataTypeReference": "entity",
"appliedTraits": [
{
"traitReference": "means.entityName.specific",
"arguments": [
"localizedTable"
]
}
]
}
}
]
},
{
"traitName": "has.origin",
"extendsTrait": "has",
"explanation": "The root trait for the hierarchy related to the origin of schema."
},
{
"traitName": "has.origin.domain",
"extendsTrait": "has.origin",
"explanation": "A trait defining the domain from which the schema originated.",
"hasParameters": [
{
"name": "domainName",
"dataType": "string",
"explanation": "the name of the domain",
"required": true
}
]
},
{
"traitName": "has.origin.dataSource",
"extendsTrait": "has.origin",
"explanation": "A trait defining the origination of the datasource for the schema.",
"hasParameters": [
{
"name": "dataSourceName",
"dataType": "string",
"explanation": "the name of the data source",
"required": true
}
]
},
{
"traitName": "has.relational",
"extendsTrait": "has",
"explanation": "The root trait for all traits related specifically to Relational activity."
},
{
"traitName": "has.relational.defaultAggregation",
"extendsTrait": "has.relational",
"explanation": "Base trait for default relational aggregations associated with an Attributes.",
"hasParameters": [
{
"name": "aggregationName",
"dataType": "string",
"explanation": "the name of the relational aggregation",
"required": true
}
]
},
{
"traitName": "has.relational.defaultAggregation.sum",
"extendsTrait": {
"traitReference": "has.relational.defaultAggregation",
"arguments": [
"sum"
]
},
"explanation": "Specifies sum as the default relational aggregation associated with an Attribute."
},
{
"traitName": "has.relational.defaultAggregation.average",
"extendsTrait": {
"traitReference": "has.relational.defaultAggregation",
"arguments": [
"average"
]
},
"explanation": "Specifies average as the default relational aggregation associated with an Attribute."
},
{
"traitName": "has.relational.defaultAggregation.minimum",
"extendsTrait": {
"traitReference": "has.relational.defaultAggregation",
"arguments": [
"minimum"
]
},
"explanation": "Specifies minimum as the default relational aggregation associated with an Attribute."
},
{
"traitName": "has.relational.defaultAggregation.maximum",
"extendsTrait": {
"traitReference": "has.relational.defaultAggregation",
"arguments": [
"maximum"
]
},
"explanation": "Specifies maximum as the default relational aggregation associated with an Attribute."
},
{
"traitName": "has.relational.defaultAggregation.count",
"extendsTrait": {
"traitReference": "has.relational.defaultAggregation",
"arguments": [
"count"
]
},
"explanation": "Specifies count as the default relational aggregation associated with an Attribute."
},
{
"traitName": "has.relational.defaultAggregation.countDistinct",
"extendsTrait": {
"traitReference": "has.relational.defaultAggregation",
"arguments": [
"countDistinct"
]
},
"explanation": "Specifies count distinct as the default relational aggregation associated with an Attribute."
},
{
"traitName": "has.relational.joinType",
"extendsTrait": "has.relational",
"explanation": "Base trait for relational join types associated with a Relationship.",
"hasParameters": [
{
"name": "joinType",
"dataType": "string",
"explanation": "the name of the relational join Type",
"required": true
}
]
},
{
"traitName": "has.relational.joinType.inner",
"extendsTrait": {
"traitReference": "has.relational.joinType",
"arguments": [
"inner"
]
},
"explanation": "Specifies INNER JOIN as the default relational join type associated with this Relationship."
},
{
"traitName": "has.relational.joinType.leftOuter",
"extendsTrait": {
"traitReference": "has.relational.joinType",
"arguments": [
"leftOuter"
]
},
"explanation": "Specifies LEFT OUTER JOIN as the default relational join type associated with this Relationship."
},
{
"traitName": "has.relational.joinType.rightOuter",
"extendsTrait": {
"traitReference": "has.relational.joinType",
"arguments": [
"rightOuter"
]
},
"explanation": "Specifies RIGHT OUTER JOIN as the default relational join type associated with this Relationship."
},
{
"traitName": "has.relational.joinType.fullOuter",
"extendsTrait": {
"traitReference": "has.relational.joinType",
"arguments": [
"fullOuter"
]
},
"explanation": "Specifies FULL OUTER JOIN as the default relational join type associated with this Relationship."
},
{
"traitName": "has.relational.joinType.leftAnti",
"extendsTrait": {
"traitReference": "has.relational.joinType",
"arguments": [
"leftAnti"
]
},
"explanation": "Specifies LEFT ANTI JOIN as the default relational join type associated with this Relationship."
},
{
"traitName": "has.relational.joinType.rightAnti",
"extendsTrait": {
"traitReference": "has.relational.joinType",
"arguments": [
"rightAnti"
]
},
"explanation": "Specifies RIGHT ANTI JOIN as the default relational join type associated with this Relationship."
},
{
"traitName": "means.relationship",
"extendsTrait": "means",
"explanation": "root trait for semantic traits relevant to relationships"
},
{
"traitName": "means.relationship.verbPhrase",
"extendsTrait": "means.relationship",
"explanation": "The Verb Phrase used to model the relationship between the FROM entity and the TO entity.",
"hasParameters": [
{
"name": "verbPhrase",
"explanation": "the localized Verb Phrase",
"dataType": {
"dataTypeReference": "entity",
"appliedTraits": [
{
"traitReference": "means.entityName.specific",
"arguments": [
"localizedTable"
]
}
]
}
}
]
},
{
"traitName": "means.relationship.inverseVerbPhrase",
"extendsTrait": "means.relationship",
"explanation": "The Verb Phrase used to model the relationship between the TO entity and the FROM entity.",
"hasParameters": [
{
"name": "verbPhrase",
"explanation": "the localized Verb Phrase",
"dataType": {
"dataTypeReference": "entity",
"appliedTraits": [
{
"traitReference": "means.entityName.specific",
"arguments": [
"localizedTable"
]
}
]
}
}
]
},
{
"purposeName": "meaningOfRelationshipVerbPhrases",
"extendsPurpose": "hasA",
"explanation": "describes the standard Verb Phrases associated with a relationship",
"exhibitsTraits": [
"means.relationship.verbPhrase",
"means.relationship.inverseVerbPhrase"
]
},
{
"traitName": "is.relationship",
"extendsTrait": "is",
"explanation": "root trait for structural traits relevant to relationships"
},
{
"traitName": "is.relationship.default",
"extendsTrait": "is",
"explanation": "The default relationship when there are multiple relationships between two entities."
},
{
"traitName": "has.relationship",
"extendsTrait": "has",
"explanation": "The root trait for annotative traits relevant to relationships"
},
{
"traitName": "has.relationship.constraint",
"extendsTrait": "has.relationship",
"explanation": "String value is a clause representing a constraint on the relationship in chosen syntax",
"hasParameters": [
{
"name": "constraintClause",
"explanation": "relationship constraint in the chosen syntax",
"dataType": "string"
}
]
}
]
}