GlossaryTerm¶
Business concepts and definitions - the foundation of business vocabulary
Overview¶
The GlossaryTerm entity represents a business concept with its definition, synonyms, related terms, and relationships to data assets. It is the primary mechanism for linking business context to technical data assets.
Relationship Diagram¶
graph TD
%% Main entity
GT[GlossaryTerm<br/>Customer]
%% Parent glossary
GLOSS[Glossary<br/>BusinessGlossary] -->|contains| GT
%% Parent term hierarchy
PARENT[GlossaryTerm<br/>Party] -->|parent of| GT
%% Child terms
GT -->|has child| CHILD1[GlossaryTerm<br/>EnterpriseCustomer]
GT -->|has child| CHILD2[GlossaryTerm<br/>IndividualCustomer]
GT -->|has child| CHILD3[GlossaryTerm<br/>VIPCustomer]
%% Related terms
GT -.->|related to| REL1[GlossaryTerm<br/>Order]
GT -.->|related to| REL2[GlossaryTerm<br/>Revenue]
GT -.->|related to| REL3[GlossaryTerm<br/>Account]
%% Synonyms
GT -.->|synonym| SYN1[Synonym<br/>Client]
GT -.->|synonym| SYN2[Synonym<br/>Buyer]
GT -.->|synonym| SYN3[Synonym<br/>Purchaser]
%% Governance relationships
USR[User<br/>Jane Doe] -.->|owns| GT
REV[Team<br/>DataGovernance] -.->|reviews| GT
DOM[Domain<br/>Sales] -.->|groups| GT
%% Classification tags
TAG1[Tag<br/>Governance.Approved] -.->|classifies| GT
TAG2[Tag<br/>PII.NonSensitive] -.->|classifies| GT
%% Applied to data assets
GT -.->|describes| TBL1[Table<br/>customers]
GT -.->|describes| TBL2[Table<br/>customer_accounts]
GT -.->|describes| COL1[Column<br/>customer_id]
GT -.->|describes| COL2[Column<br/>customer_type]
GT -.->|describes| DASH[Dashboard<br/>Customer Analytics]
GT -.->|describes| ML[MLModel<br/>customer_churn]
%% External references
GT -.->|references| REF1[External Link<br/>Wikipedia]
GT -.->|references| REF2[External Link<br/>GDPR Docs]
%% Styling
classDef glossary fill:#8B5CF6,stroke:#7C3AED,color:#fff
classDef term fill:#A78BFA,stroke:#8B5CF6,color:#fff
classDef synonym fill:#DDD6FE,stroke:#A78BFA,color:#000
classDef governance fill:#059669,stroke:#047857,color:#fff
classDef data fill:#2563EB,stroke:#1E40AF,color:#fff
classDef external fill:#64748B,stroke:#475569,color:#fff
class GLOSS glossary
class GT,PARENT,CHILD1,CHILD2,CHILD3,REL1,REL2,REL3 term
class SYN1,SYN2,SYN3 synonym
class USR,REV,DOM,TAG1,TAG2 governance
class TBL1,TBL2,COL1,COL2,DASH,ML data
class REF1,REF2 external Schema Specifications¶
View the complete GlossaryTerm schema in your preferred format:
Complete JSON Schema Definition
{
"$id": "https://open-metadata.org/schema/entity/data/glossaryTerm.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "GlossaryTerm",
"description": "This schema defines te Glossary term entities.",
"$comment": "@om-entity-type",
"type": "object",
"javaType": "org.openmetadata.schema.entity.data.GlossaryTerm",
"javaInterfaces": ["org.openmetadata.schema.EntityInterface"],
"definitions": {
"termReference": {
"type": "object",
"properties": {
"name": {
"description": "Name that identifies the source of an external glossary term. Example `HealthCare.gov`.",
"type": "string"
},
"endpoint": {
"description": "Name that identifies the source of an external glossary term. Example `HealthCare.gov`.",
"type": "string",
"format": "uri"
}
},
"additionalProperties": false
}
},
"properties": {
"id": {
"description": "Unique identifier of a glossary term instance.",
"$ref": "../../type/basic.json#/definitions/uuid"
},
"name": {
"description": "Preferred name for the glossary term.",
"$ref": "../../type/basic.json#/definitions/entityName"
},
"displayName": {
"description": "Display Name that identifies this glossary.",
"type": "string"
},
"description": {
"description": "Description of the glossary term.",
"$ref": "../../type/basic.json#/definitions/markdown"
},
"style": {
"$ref": "../../type/basic.json#/definitions/style"
},
"fullyQualifiedName": {
"description": "A unique name that identifies a glossary term. It captures name hierarchy of glossary of terms in the form of `glossaryName.parentTerm.childTerm`.",
"$ref": "../../type/basic.json#/definitions/fullyQualifiedEntityName"
},
"synonyms": {
"description": "Alternate names that are synonyms or near-synonyms for the glossary term.",
"type": "array",
"items": {
"$ref": "../../type/basic.json#/definitions/entityName"
}
},
"glossary": {
"description": "Glossary that this term belongs to.",
"$ref": "../../type/entityReference.json"
},
"parent": {
"description": "Parent glossary term that this term is child of. When `null` this term is the root term of the glossary.",
"$ref": "../../type/entityReference.json"
},
"children": {
"description": "Other glossary terms that are children of this glossary term.",
"$ref": "../../type/entityReferenceList.json"
},
"relatedTerms": {
"description": "Other glossary terms that are related to this glossary term.",
"$ref": "../../type/entityReferenceList.json"
},
"references": {
"description": "Link to a reference from an external glossary.",
"type": "array",
"items": {
"$ref": "../../entity/data/glossaryTerm.json#/definitions/termReference"
}
},
"version": {
"description": "Metadata version of the entity.",
"$ref": "../../type/entityHistory.json#/definitions/entityVersion"
},
"updatedAt": {
"description": "Last update time corresponding to the new version of the entity in Unix epoch time milliseconds.",
"$ref": "../../type/basic.json#/definitions/timestamp"
},
"updatedBy": {
"description": "User who made the update.",
"type": "string"
},
"impersonatedBy": {
"description": "Bot user that performed the action on behalf of the actual user.",
"$ref": "../../type/basic.json#/definitions/impersonatedBy"
},
"href": {
"description": "Link to the resource corresponding to this entity.",
"$ref": "../../type/basic.json#/definitions/href"
},
"reviewers": {
"description": "User names of the reviewers for this glossary.",
"$ref": "../../type/entityReferenceList.json"
},
"owners": {
"description": "Owners of this glossary term.",
"$ref": "../../type/entityReferenceList.json"
},
"usageCount": {
"description": "Count of how many times this and it's children glossary terms are used as labels.",
"type": "integer"
},
"tags": {
"description": "Tags associated with this glossary term. These tags captures relationship of a glossary term with a tag automatically. As an example a glossary term 'User.PhoneNumber' might have an associated tag 'PII.Sensitive'. When 'User.Address' is used to label a column in a table, 'PII.Sensitive' label is also applied automatically due to Associated tag relationship.",
"type": "array",
"items": {
"$ref": "../../type/tagLabel.json"
},
"default": []
},
"changeDescription": {
"description": "Change that lead to this version of the entity.",
"$ref": "../../type/entityHistory.json#/definitions/changeDescription"
},
"incrementalChangeDescription": {
"description": "Change that lead to this version of the entity.",
"$ref": "../../type/entityHistory.json#/definitions/changeDescription"
},
"entityStatus": {
"description": "Approval status of the glossary term.",
"$ref": "../../type/status.json"
},
"deleted": {
"description": "When `true` indicates the entity has been soft deleted.",
"type": "boolean",
"default": false
},
"provider": {
"$ref": "../../type/basic.json#/definitions/providerType"
},
"disabled": {
"description": "System glossary can't be deleted. Use this flag to disable them.",
"type": "boolean"
},
"mutuallyExclusive": {
"description": "Glossary terms that are children of this term are mutually exclusive. When mutually exclusive is `true` only one term can be used to label an entity from this group. When mutually exclusive is `false`, multiple terms from this group can be used to label an entity.",
"type": "boolean",
"default": "false"
},
"extension": {
"description": "Entity extension data with custom attributes added to the entity.",
"$ref": "../../type/basic.json#/definitions/entityExtension"
},
"domains": {
"description": "Domains the Glossary Term belongs to. When not set, the Glossary TErm inherits the domain from the Glossary it belongs to.",
"$ref": "../../type/entityReferenceList.json"
},
"dataProducts": {
"description": "List of data products this entity is part of.",
"$ref": "../../type/entityReferenceList.json"
},
"votes": {
"description": "Votes on the entity.",
"$ref": "../../type/votes.json"
},
"childrenCount": {
"description": "Count of immediate children glossary terms.",
"type": "integer"
}
},
"required": ["id", "name", "description", "glossary"],
"additionalProperties": false
}
EntityStatus enum (from ../../type/status.json): - Draft - Term is being defined - In Review - Term is under review - Approved - Term has been reviewed and approved - Deprecated - Term is no longer recommended for use - Rejected - Term was rejected during review - Unprocessed - Default status for new terms
RDF/OWL Ontology Definition
@prefix om: <https://open-metadata.org/schema/> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl: <http://www.w3.org/2001/XMLSchema#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
# GlossaryTerm Class Definition
om:GlossaryTerm a owl:Class ;
rdfs:subClassOf om:GovernanceAsset, skos:Concept ;
rdfs:label "GlossaryTerm" ;
rdfs:comment "A business concept with definition and relationships" ;
om:hierarchyLevel 2 .
# Properties
om:termName a owl:DatatypeProperty ;
rdfs:domain om:GlossaryTerm ;
rdfs:range xsd:string ;
rdfs:label "name" ;
rdfs:comment "Name of the glossary term" .
om:fullyQualifiedName a owl:DatatypeProperty ;
rdfs:domain om:GlossaryTerm ;
rdfs:range xsd:string ;
rdfs:label "fullyQualifiedName" ;
rdfs:comment "Complete hierarchical name: glossary.term" .
om:termDefinition a owl:DatatypeProperty ;
rdfs:domain om:GlossaryTerm ;
rdfs:range xsd:string ;
rdfs:label "definition" ;
rdfs:comment "Definition of the business term" ;
owl:equivalentProperty skos:definition .
om:synonym a owl:DatatypeProperty ;
rdfs:domain om:GlossaryTerm ;
rdfs:range xsd:string ;
rdfs:label "synonym" ;
rdfs:comment "Alternate name for this term" ;
owl:equivalentProperty skos:altLabel .
om:entityStatus a owl:DatatypeProperty ;
rdfs:domain om:GlossaryTerm ;
rdfs:range om:EntityStatus ;
rdfs:label "entityStatus" ;
rdfs:comment "Approval status: Draft, In Review, Approved, Deprecated, Rejected, Unprocessed" .
om:belongsToGlossary a owl:ObjectProperty ;
rdfs:domain om:GlossaryTerm ;
rdfs:range om:Glossary ;
rdfs:label "belongsToGlossary" ;
rdfs:comment "Parent glossary" ;
owl:equivalentProperty skos:inScheme .
om:hasParentTerm a owl:ObjectProperty ;
rdfs:domain om:GlossaryTerm ;
rdfs:range om:GlossaryTerm ;
rdfs:label "hasParentTerm" ;
rdfs:comment "Parent term in hierarchy" ;
owl:equivalentProperty skos:broader .
om:hasChildTerm a owl:ObjectProperty ;
rdfs:domain om:GlossaryTerm ;
rdfs:range om:GlossaryTerm ;
rdfs:label "hasChildTerm" ;
rdfs:comment "Child term in hierarchy" ;
owl:equivalentProperty skos:narrower .
om:relatedTo a owl:ObjectProperty ;
rdfs:domain om:GlossaryTerm ;
rdfs:range om:GlossaryTerm ;
rdfs:label "relatedTo" ;
rdfs:comment "Related glossary term" ;
owl:equivalentProperty skos:related .
om:appliedToAsset a owl:ObjectProperty ;
rdfs:domain om:GlossaryTerm ;
rdfs:range om:DataAsset ;
rdfs:label "appliedToAsset" ;
rdfs:comment "Data assets tagged with this term" .
om:hasOwner a owl:ObjectProperty ;
rdfs:domain om:GlossaryTerm ;
rdfs:range om:Owner ;
rdfs:label "hasOwner" ;
rdfs:comment "Owners of this glossary term" .
om:belongsToDomain a owl:ObjectProperty ;
rdfs:domain om:GlossaryTerm ;
rdfs:range om:Domain ;
rdfs:label "belongsToDomain" ;
rdfs:comment "Domains the glossary term belongs to" .
om:partOfDataProduct a owl:ObjectProperty ;
rdfs:domain om:GlossaryTerm ;
rdfs:range om:DataProduct ;
rdfs:label "partOfDataProduct" ;
rdfs:comment "Data products this term is part of" .
om:hasVotes a owl:ObjectProperty ;
rdfs:domain om:GlossaryTerm ;
rdfs:range om:Votes ;
rdfs:label "hasVotes" ;
rdfs:comment "Votes on the glossary term" .
om:childrenCount a owl:DatatypeProperty ;
rdfs:domain om:GlossaryTerm ;
rdfs:range xsd:integer ;
rdfs:label "childrenCount" ;
rdfs:comment "Count of immediate children glossary terms" .
om:disabled a owl:DatatypeProperty ;
rdfs:domain om:GlossaryTerm ;
rdfs:range xsd:boolean ;
rdfs:label "disabled" ;
rdfs:comment "System glossary can't be deleted. Use this flag to disable them" .
om:mutuallyExclusive a owl:DatatypeProperty ;
rdfs:domain om:GlossaryTerm ;
rdfs:range xsd:boolean ;
rdfs:label "mutuallyExclusive" ;
rdfs:comment "Whether children terms are mutually exclusive" .
# Entity Status Enumeration
om:EntityStatus a owl:Class ;
owl:oneOf (
om:DraftStatus
om:InReviewStatus
om:ApprovedStatus
om:DeprecatedStatus
om:RejectedStatus
om:UnprocessedStatus
) .
# Example Instance
ex:customerTerm a om:GlossaryTerm, skos:Concept ;
om:termName "Customer" ;
om:fullyQualifiedName "BusinessGlossary.Customer" ;
om:displayName "Customer" ;
om:termDefinition "An individual or organization that purchases goods or services" ;
om:synonym "Client" ;
om:synonym "Account" ;
om:entityStatus om:ApprovedStatus ;
om:belongsToGlossary ex:businessGlossary ;
om:relatedTo ex:orderTerm ;
om:hasChildTerm ex:enterpriseCustomerTerm ;
om:appliedToAsset ex:customersTable ;
om:hasOwner ex:janeDoe ;
om:hasReviewer ex:dataGovernanceTeam ;
om:belongsToDomain ex:salesDomain ;
om:partOfDataProduct ex:customerDataProduct ;
om:childrenCount 3 ;
om:mutuallyExclusive false .
JSON-LD Context and Example
{
"@context": {
"@vocab": "https://open-metadata.org/schema/",
"om": "https://open-metadata.org/schema/",
"skos": "http://www.w3.org/2004/02/skos/core#",
"rdfs": "http://www.w3.org/2000/01/rdf-schema#",
"xsd": "http://www.w3.org/2001/XMLSchema#",
"GlossaryTerm": "om:GlossaryTerm",
"Concept": "skos:Concept",
"name": {
"@id": "om:termName",
"@type": "xsd:string"
},
"fullyQualifiedName": {
"@id": "om:fullyQualifiedName",
"@type": "xsd:string"
},
"displayName": {
"@id": "om:displayName",
"@type": "xsd:string"
},
"description": {
"@id": "om:termDefinition",
"@type": "xsd:string"
},
"definition": {
"@id": "skos:definition",
"@type": "xsd:string"
},
"synonyms": {
"@id": "skos:altLabel",
"@type": "xsd:string",
"@container": "@set"
},
"entityStatus": {
"@id": "om:entityStatus",
"@type": "@vocab"
},
"glossary": {
"@id": "skos:inScheme",
"@type": "@id"
},
"parent": {
"@id": "skos:broader",
"@type": "@id"
},
"children": {
"@id": "skos:narrower",
"@type": "@id",
"@container": "@set"
},
"relatedTerms": {
"@id": "skos:related",
"@type": "@id",
"@container": "@set"
},
"owners": {
"@id": "om:hasOwner",
"@type": "@id",
"@container": "@set"
},
"reviewers": {
"@id": "om:hasReviewer",
"@type": "@id",
"@container": "@set"
},
"tags": {
"@id": "om:hasTag",
"@type": "@id",
"@container": "@set"
},
"domains": {
"@id": "om:belongsToDomain",
"@type": "@id",
"@container": "@set"
},
"dataProducts": {
"@id": "om:partOfDataProduct",
"@type": "@id",
"@container": "@set"
},
"votes": {
"@id": "om:hasVotes",
"@type": "@id"
},
"childrenCount": {
"@id": "om:childrenCount",
"@type": "xsd:integer"
},
"disabled": {
"@id": "om:disabled",
"@type": "xsd:boolean"
},
"mutuallyExclusive": {
"@id": "om:mutuallyExclusive",
"@type": "xsd:boolean"
}
}
}
Example JSON-LD Instance:
{
"@context": "https://open-metadata.org/context/glossaryTerm.jsonld",
"@type": ["GlossaryTerm", "Concept"],
"@id": "https://example.com/glossary/business/Customer",
"name": "Customer",
"fullyQualifiedName": "BusinessGlossary.Customer",
"displayName": "Customer",
"description": "# Customer\n\nAn individual or organization that purchases goods or services from the company.\n\n## Key Attributes\n- Must have a unique customer ID\n- Can be individual or business entity\n- Has associated contact information",
"entityStatus": "Approved",
"synonyms": ["Client", "Account", "Buyer"],
"glossary": {
"@id": "https://example.com/glossary/business",
"@type": "Glossary",
"name": "BusinessGlossary"
},
"parent": {
"@id": "https://example.com/glossary/business/Party",
"@type": "GlossaryTerm",
"name": "Party"
},
"children": [
{
"@id": "https://example.com/glossary/business/EnterpriseCustomer",
"@type": "GlossaryTerm",
"name": "EnterpriseCustomer"
},
{
"@id": "https://example.com/glossary/business/IndividualCustomer",
"@type": "GlossaryTerm",
"name": "IndividualCustomer"
}
],
"relatedTerms": [
{
"@id": "https://example.com/glossary/business/Order",
"@type": "GlossaryTerm",
"name": "Order"
},
{
"@id": "https://example.com/glossary/business/Revenue",
"@type": "GlossaryTerm",
"name": "Revenue"
}
],
"references": [
{
"name": "Customer Definition - Wikipedia",
"endpoint": "https://en.wikipedia.org/wiki/Customer"
}
],
"owners": [
{
"@id": "https://example.com/users/jane.doe",
"@type": "User",
"name": "jane.doe",
"displayName": "Jane Doe"
}
],
"reviewers": [
{
"@id": "https://example.com/teams/data-governance",
"@type": "Team",
"name": "DataGovernance"
}
],
"tags": [
{
"@id": "https://open-metadata.org/tags/Governance/Approved",
"tagFQN": "Governance.Approved"
}
],
"domains": [
{
"@id": "https://example.com/domains/sales",
"@type": "Domain",
"name": "Sales"
}
],
"dataProducts": [
{
"@id": "https://example.com/dataProducts/customer-analytics",
"@type": "DataProduct",
"name": "CustomerAnalytics"
}
],
"usageCount": 45,
"childrenCount": 2,
"mutuallyExclusive": false
}
Use Cases¶
- Define business concepts with clear definitions
- Link business terms to technical data assets (tables, columns, dashboards)
- Build hierarchical business vocabularies (parent-child relationships)
- Document synonyms and alternate names
- Track term approval status and lifecycle
- Enable business-oriented data discovery
- Support regulatory compliance with standardized terminology
- Facilitate cross-team understanding of business concepts
- Document relationships between business concepts
JSON Schema Specification¶
Core Properties¶
id (uuid)¶
Type: string (UUID format) Required: Yes (system-generated) Description: Unique identifier for this glossary term
name (entityName)¶
Type: string Required: Yes Pattern: ^[^.]*$ (no dots allowed) Min Length: 1 Max Length: 256 Description: Name of the glossary term
fullyQualifiedName (fullyQualifiedEntityName)¶
Type: string Required: Yes (system-generated) Pattern: ^((?!::).)*$ Description: Fully qualified name in the format glossary.term or glossary.parentTerm.term
displayName¶
Type: string Required: No Description: Human-readable display name
description (markdown)¶
Type: string (Markdown format) Required: Yes Description: Rich text definition of the business term
{
"description": "# Customer\n\nAn individual or organization that purchases goods or services from the company.\n\n## Key Attributes\n- Must have a unique customer ID\n- Can be individual or business entity\n- Has associated contact information\n\n## Usage Guidelines\nUse this term when referring to entities that have a purchasing relationship with the company."
}
Relationship Properties¶
glossary (EntityReference)¶
Type: object Required: Yes Description: Reference to parent glossary
{
"glossary": {
"id": "glossary-uuid",
"type": "glossary",
"name": "BusinessGlossary",
"fullyQualifiedName": "BusinessGlossary"
}
}
parent (EntityReference)¶
Type: object Required: No Description: Parent glossary term in hierarchy
{
"parent": {
"id": "parent-term-uuid",
"type": "glossaryTerm",
"name": "Party",
"fullyQualifiedName": "BusinessGlossary.Party"
}
}
children[] (GlossaryTerm[])¶
Type: array of GlossaryTerm references Required: No Description: Child glossary terms
{
"children": [
{
"id": "child-term-uuid-1",
"type": "glossaryTerm",
"name": "EnterpriseCustomer",
"fullyQualifiedName": "BusinessGlossary.Customer.EnterpriseCustomer"
},
{
"id": "child-term-uuid-2",
"type": "glossaryTerm",
"name": "IndividualCustomer",
"fullyQualifiedName": "BusinessGlossary.Customer.IndividualCustomer"
}
]
}
relatedTerms[] (GlossaryTerm[])¶
Type: array of GlossaryTerm references Required: No Description: Related glossary terms (non-hierarchical relationships)
{
"relatedTerms": [
{
"id": "related-term-uuid-1",
"type": "glossaryTerm",
"name": "Order",
"fullyQualifiedName": "BusinessGlossary.Order"
},
{
"id": "related-term-uuid-2",
"type": "glossaryTerm",
"name": "Revenue",
"fullyQualifiedName": "BusinessGlossary.Revenue"
}
]
}
Semantic Properties¶
synonyms[] (string[])¶
Type: array of strings Required: No Description: Alternate names for this term
references[] (TermReference[])¶
Type: array of reference objects Required: No Description: External references and documentation
TermReference Object:
| Property | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Reference name |
endpoint | uri | Yes | URL to external resource |
{
"references": [
{
"name": "Customer Definition - Wikipedia",
"endpoint": "https://en.wikipedia.org/wiki/Customer"
},
{
"name": "GDPR Customer Rights",
"endpoint": "https://gdpr-info.eu/art-15-gdpr/"
}
]
}
entityStatus (EntityStatus enum)¶
Type: string enum Required: No (default: Unprocessed) Allowed Values:
Draft- Term is being definedIn Review- Term is under reviewApproved- Term has been reviewed and approvedDeprecated- Term is no longer recommended for useRejected- Term was rejected during reviewUnprocessed- Default status for new terms
Governance Properties¶
owners[] (EntityReferenceList)¶
Type: array of User or Team references Required: No Description: Users or teams that own this term
{
"owners": [
{
"id": "owner-uuid",
"type": "user",
"name": "jane.doe",
"displayName": "Jane Doe"
},
{
"id": "owner-uuid-2",
"type": "team",
"name": "DataGovernance",
"displayName": "Data Governance Team"
}
]
}
reviewers[] (EntityReferenceList)¶
Type: array of User or Team references Required: No Description: Users or teams that can review and approve this term
{
"reviewers": [
{
"id": "reviewer-uuid",
"type": "team",
"name": "DataGovernance",
"displayName": "Data Governance Team"
}
]
}
domains[] (EntityReferenceList)¶
Type: array of Domain references Required: No Description: Data domains this term belongs to. When not set, the term inherits the domain from the Glossary it belongs to.
{
"domains": [
{
"id": "domain-uuid",
"type": "domain",
"name": "Sales",
"fullyQualifiedName": "Sales"
},
{
"id": "domain-uuid-2",
"type": "domain",
"name": "Marketing",
"fullyQualifiedName": "Marketing"
}
]
}
tags[] (TagLabel[])¶
Type: array Required: No Description: Classification tags applied to the term
{
"tags": [
{
"tagFQN": "Governance.Approved",
"source": "Classification",
"labelType": "Manual",
"state": "Confirmed"
}
]
}
dataProducts[] (EntityReferenceList)¶
Type: array of DataProduct references Required: No Description: List of data products this entity is part of
{
"dataProducts": [
{
"id": "dataproduct-uuid",
"type": "dataProduct",
"name": "CustomerAnalytics",
"fullyQualifiedName": "CustomerAnalytics"
}
]
}
votes (Votes)¶
Type: object Required: No Description: Votes on the entity (upvotes/downvotes)
{
"votes": {
"upVotes": 15,
"downVotes": 2,
"upVoters": [
{"id": "user-uuid-1", "type": "user", "name": "user1"},
{"id": "user-uuid-2", "type": "user", "name": "user2"}
],
"downVoters": [
{"id": "user-uuid-3", "type": "user", "name": "user3"}
]
}
}
Additional Properties¶
style (Style)¶
Type: object Required: No Description: UI style configuration for the term (color, iconURL)
disabled (boolean)¶
Type: boolean Required: No Description: System glossary can't be deleted. Use this flag to disable them.
mutuallyExclusive (boolean)¶
Type: boolean Required: No (default: false) Description: Glossary terms that are children of this term are mutually exclusive. When true, only one term can be used to label an entity from this group. When false, multiple terms from this group can be used to label an entity.
provider (ProviderType)¶
Type: string enum Required: No Description: Provider type (e.g., system, user)
extension (EntityExtension)¶
Type: object Required: No Description: Entity extension data with custom attributes added to the entity
childrenCount (integer)¶
Type: integer Required: No (system-generated) Description: Count of immediate children glossary terms
href (href)¶
Type: string (URI format) Required: No (system-generated) Description: Link to the resource corresponding to this entity
deleted (boolean)¶
Type: boolean Required: No (default: false) Description: When true indicates the entity has been soft deleted
changeDescription (ChangeDescription)¶
Type: object Required: No (system-managed) Description: Change that lead to this version of the entity
{
"changeDescription": {
"fieldsAdded": [{"name": "tags", "newValue": "[{\"tagFQN\":\"PII.Sensitive\"}]"}],
"fieldsUpdated": [{"name": "description", "oldValue": "Old description", "newValue": "New description"}],
"fieldsDeleted": [],
"previousVersion": 1.0
}
}
incrementalChangeDescription (ChangeDescription)¶
Type: object Required: No (system-managed) Description: Incremental change that lead to this version of the entity
{
"incrementalChangeDescription": {
"fieldsAdded": [],
"fieldsUpdated": [{"name": "entityStatus", "oldValue": "Draft", "newValue": "Approved"}],
"fieldsDeleted": [],
"previousVersion": 1.5
}
}
impersonatedBy (string)¶
Type: string Required: No (system-managed) Description: Bot user that performed the action on behalf of the actual user
Usage Properties¶
usageCount (integer)¶
Type: integer Required: No (system-generated) Description: Number of data assets tagged with this term
Versioning Properties¶
version (entityVersion)¶
Type: number Required: Yes (system-managed) Description: Metadata version number, incremented on changes
updatedAt (timestamp)¶
Type: integer (Unix epoch milliseconds) Required: Yes (system-managed) Description: Last update timestamp
updatedBy (string)¶
Type: string Required: Yes (system-managed) Description: User who made the update
Complete Example¶
{
"id": "2b3c4d5e-6f7a-4b8c-9d0e-1f2a3b4c5d6e",
"name": "Customer",
"fullyQualifiedName": "BusinessGlossary.Customer",
"displayName": "Customer",
"description": "# Customer\n\nAn individual or organization that purchases goods or services from the company.",
"entityStatus": "Approved",
"style": {
"color": "#1E88E5",
"iconURL": "https://example.com/icons/customer.svg"
},
"synonyms": ["Client", "Account", "Buyer"],
"glossary": {
"id": "glossary-uuid",
"type": "glossary",
"name": "BusinessGlossary"
},
"parent": {
"id": "parent-uuid",
"type": "glossaryTerm",
"name": "Party",
"fullyQualifiedName": "BusinessGlossary.Party"
},
"children": [
{
"id": "child-uuid-1",
"type": "glossaryTerm",
"name": "EnterpriseCustomer",
"fullyQualifiedName": "BusinessGlossary.Customer.EnterpriseCustomer"
}
],
"relatedTerms": [
{
"id": "related-uuid-1",
"type": "glossaryTerm",
"name": "Order",
"fullyQualifiedName": "BusinessGlossary.Order"
}
],
"references": [
{
"name": "Customer Definition - Wikipedia",
"endpoint": "https://en.wikipedia.org/wiki/Customer"
}
],
"owners": [
{
"id": "owner-uuid",
"type": "user",
"name": "jane.doe",
"displayName": "Jane Doe"
}
],
"reviewers": [
{
"id": "reviewer-uuid",
"type": "team",
"name": "DataGovernance"
}
],
"domains": [
{
"id": "domain-uuid",
"type": "domain",
"name": "Sales"
}
],
"dataProducts": [
{
"id": "dataproduct-uuid",
"type": "dataProduct",
"name": "CustomerAnalytics"
}
],
"tags": [
{
"tagFQN": "Governance.Approved"
}
],
"votes": {
"upVotes": 15,
"downVotes": 2
},
"usageCount": 45,
"childrenCount": 1,
"mutuallyExclusive": false,
"disabled": false,
"version": 2.1,
"updatedAt": 1704240000000,
"updatedBy": "jane.doe",
"href": "https://example.com/api/v1/glossaryTerms/2b3c4d5e-6f7a-4b8c-9d0e-1f2a3b4c5d6e",
"deleted": false
}
RDF Representation¶
Ontology Class¶
@prefix om: <https://open-metadata.org/schema/> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl: <http://www.w3.org/2001/XMLSchema#> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
om:GlossaryTerm a owl:Class ;
rdfs:subClassOf om:GovernanceAsset, skos:Concept ;
rdfs:label "GlossaryTerm" ;
rdfs:comment "A business concept with definition and relationships" ;
om:hasProperties [
om:name "string" ;
om:definition "string" ;
om:synonyms "string[]" ;
om:status "TermStatus" ;
om:parent "GlossaryTerm" ;
om:children "GlossaryTerm[]" ;
om:relatedTerms "GlossaryTerm[]" ;
] .
Instance Example¶
@prefix om: <https://open-metadata.org/schema/> .
@prefix ex: <https://example.com/glossary/> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
ex:customerTerm a om:GlossaryTerm, skos:Concept ;
om:termName "Customer" ;
om:fullyQualifiedName "BusinessGlossary.Customer" ;
om:displayName "Customer" ;
skos:definition "An individual or organization that purchases goods or services" ;
skos:altLabel "Client" ;
skos:altLabel "Account" ;
om:entityStatus om:ApprovedStatus ;
skos:inScheme ex:businessGlossary ;
skos:broader ex:partyTerm ;
skos:narrower ex:enterpriseCustomerTerm ;
skos:related ex:orderTerm ;
om:hasOwner ex:janeDoe ;
om:hasReviewer ex:dataGovernanceTeam ;
om:belongsToDomain ex:salesDomain ;
om:partOfDataProduct ex:customerDataProduct ;
om:appliedToAsset ex:customersTable ;
om:childrenCount 1 ;
om:mutuallyExclusive false ;
om:disabled false .
JSON-LD Context¶
{
"@context": {
"@vocab": "https://open-metadata.org/schema/",
"om": "https://open-metadata.org/schema/",
"skos": "http://www.w3.org/2004/02/skos/core#",
"GlossaryTerm": "om:GlossaryTerm",
"Concept": "skos:Concept",
"name": "om:termName",
"description": "skos:definition",
"synonyms": "skos:altLabel",
"glossary": "skos:inScheme",
"parent": "skos:broader",
"children": "skos:narrower",
"relatedTerms": "skos:related"
}
}
JSON-LD Example¶
{
"@context": "https://open-metadata.org/context/glossaryTerm.jsonld",
"@type": ["GlossaryTerm", "Concept"],
"@id": "https://example.com/glossary/business/Customer",
"name": "Customer",
"fullyQualifiedName": "BusinessGlossary.Customer",
"description": "An individual or organization that purchases goods or services",
"entityStatus": "Approved",
"synonyms": ["Client", "Account"],
"glossary": {
"@id": "https://example.com/glossary/business",
"@type": "Glossary"
},
"parent": {
"@id": "https://example.com/glossary/business/Party",
"@type": "GlossaryTerm"
},
"owners": [
{
"@id": "https://example.com/users/jane.doe",
"@type": "User",
"name": "jane.doe"
}
],
"domains": [
{
"@id": "https://example.com/domains/sales",
"@type": "Domain",
"name": "Sales"
}
],
"childrenCount": 1,
"mutuallyExclusive": false
}
Relationships¶
Parent Entities¶
- Glossary: The glossary this term belongs to
- GlossaryTerm: Parent term (for hierarchical terms)
Child Entities¶
- GlossaryTerm: Child terms in hierarchy
Associated Entities¶
- Owner: User or team owning this term
- Reviewer: Users or teams that can review
- Domain: Business domain assignment
- Tag: Classification tags
- DataAsset: Tables, columns, dashboards, etc. tagged with this term
Relationship Diagram¶
graph TD
%% Hierarchical relationships (parent-child)
GLOSS[Glossary<br/>BusinessGlossary] -->|contains| GT1[GlossaryTerm<br/>Customer]
GT1 -->|has child| GT2[GlossaryTerm<br/>Individual Customer]
GT1 -->|has child| GT3[GlossaryTerm<br/>Corporate Customer]
%% Cross-entity relationships - Governance
USR[User/Team] -.->|owns| GT1
REV[User<br/>Reviewer] -.->|reviews| GT1
DOM[Domain<br/>Sales] -.->|groups| GT1
TAG[Tag] -.->|classifies| GT1
%% Related terms
GT1 -.->|related to| GT4[GlossaryTerm<br/>Account]
GT1 -.->|synonym| SYN[Synonym<br/>Client]
%% Cross-entity relationships - Data Assets
GT1 -.->|describes| TBL[Table<br/>customers]
GT1 -.->|describes| COL[Column<br/>customer_type]
GT1 -.->|describes| DASH[Dashboard<br/>Customer Analytics]
GT1 -.->|describes| ML[MLModel<br/>churn_predictor]
%% Styling
classDef glossary fill:#8B5CF6,stroke:#7C3AED,color:#fff
classDef term fill:#A78BFA,stroke:#8B5CF6,color:#fff
classDef governance fill:#059669,stroke:#047857,color:#fff
classDef data fill:#2563EB,stroke:#1E40AF,color:#fff
class GLOSS glossary
class GT1,GT2,GT3,GT4,SYN term
class USR,REV,DOM,TAG governance
class TBL,COL,DASH,ML data Custom Properties¶
This entity supports custom properties through the extension field. Common custom properties include:
- Data Classification: Sensitivity level
- Cost Center: Billing allocation
- Retention Period: Data retention requirements
- Application Owner: Owning application/team
See Custom Properties for details on defining and using custom properties.
API Operations¶
List Glossary Terms¶
GET /v1/glossaryTerms
Query Parameters:
- glossary: Filter by glossary ID or name
- parent: Filter by parent term ID
- directChildrenOf: List immediate children of specified term
- fields: Fields to include (children, relatedTerms, reviewers, owners, tags, usageCount, domains, dataProducts, votes, extension, childrenCount)
- limit: Number of results (1-1000000, default 10)
- before: Cursor for previous page
- after: Cursor for next page
- include: all | deleted | non-deleted (default: non-deleted)
Response: GlossaryTermList
Example Request:
Create Glossary Term¶
POST /v1/glossaryTerms
Content-Type: application/json
{
"name": "Customer",
"displayName": "Customer",
"description": "# Customer\n\nAn individual or organization that purchases goods or services from a business.\n\n## Key Attributes\n- Unique customer identifier\n- Contact information\n- Purchase history\n- Account status",
"glossary": "BusinessGlossary",
"parent": {
"id": "parent-term-uuid",
"type": "glossaryTerm"
},
"synonyms": ["Client", "Account", "Buyer"],
"relatedTerms": [
{
"id": "order-term-uuid",
"type": "glossaryTerm"
},
{
"id": "revenue-term-uuid",
"type": "glossaryTerm"
}
],
"references": [
{
"name": "CRM Documentation",
"endpoint": "https://docs.example.com/crm/customer"
}
],
"entityStatus": "Draft",
"owners": [
{
"id": "user-uuid",
"type": "user"
}
],
"reviewers": [
{
"id": "reviewer-uuid",
"type": "user"
}
],
"tags": [
{"tagFQN": "Governance.Approved"},
{"tagFQN": "PII.NonSensitive"}
],
"domains": [
{
"id": "domain-uuid",
"type": "domain"
}
],
"dataProducts": [
{
"id": "dataproduct-uuid",
"type": "dataProduct"
}
]
}
Response: GlossaryTerm
Create Multiple Glossary Terms¶
POST /v1/glossaryTerms/createMany
Content-Type: application/json
[
{
"name": "Order",
"displayName": "Order",
"description": "A customer's request to purchase products or services",
"glossary": "BusinessGlossary"
},
{
"name": "Invoice",
"displayName": "Invoice",
"description": "A document requesting payment for goods or services",
"glossary": "BusinessGlossary"
}
]
Response: List of created GlossaryTerms
Get Glossary Term by Name¶
GET /v1/glossaryTerms/name/{fqn}
Query Parameters:
- fields: Fields to include (parent, children, relatedTerms, reviewers, owners, tags, usageCount, domains, dataProducts, votes, extension, childrenCount)
- include: all | deleted | non-deleted (default: non-deleted)
Response: GlossaryTerm
Example Request:
Get Glossary Term by ID¶
GET /v1/glossaryTerms/{id}
Query Parameters:
- fields: Fields to include
- include: all | deleted | non-deleted (default: non-deleted)
Response: GlossaryTerm
Update Glossary Term (Partial)¶
PATCH /v1/glossaryTerms/{id}
Content-Type: application/json-patch+json
[
{
"op": "replace",
"path": "/entityStatus",
"value": "Approved"
},
{
"op": "add",
"path": "/synonyms/-",
"value": "Purchaser"
},
{
"op": "replace",
"path": "/description",
"value": "Updated term description with additional details"
},
{
"op": "add",
"path": "/tags/-",
"value": {"tagFQN": "BusinessCritical"}
}
]
Response: GlossaryTerm
Create or Update Glossary Term¶
PUT /v1/glossaryTerms
Content-Type: application/json
{
"name": "Revenue",
"displayName": "Revenue",
"description": "Income generated from normal business operations",
"glossary": "BusinessGlossary",
"synonyms": ["Income", "Sales"],
"entityStatus": "Approved"
}
Response: GlossaryTerm
Delete Glossary Term¶
DELETE /v1/glossaryTerms/{id}
Query Parameters:
- hardDelete: true | false (default: false - soft delete)
- recursive: true | false (default: false)
Response: GlossaryTerm
Delete Glossary Term (Async)¶
DELETE /v1/glossaryTerms/async/{id}
Query Parameters:
- hardDelete: true | false (default: false)
- recursive: true | false (default: false)
Response: Async deletion job details
Get Assets for Term¶
GET /v1/glossaryTerms/{id}/assets
Query Parameters:
- limit: Number of results (1-1000000, default 10)
- before: Cursor for previous page
- after: Cursor for next page
Response: List of data assets tagged with this term
Get Assets for Term by Name¶
GET /v1/glossaryTerms/name/{fqn}/assets
Query Parameters:
- limit: Number of results (1-1000000, default 10)
- before: Cursor for previous page
- after: Cursor for next page
Response: List of data assets tagged with this term
Add Assets to Term¶
PUT /v1/glossaryTerms/{id}/assets/add
Content-Type: application/json
{
"assets": [
{
"id": "table-uuid-1",
"type": "table"
},
{
"id": "dashboard-uuid-1",
"type": "dashboard"
},
{
"id": "column-uuid-1",
"type": "column"
}
]
}
Response: ChangeEvent
Remove Assets from Term¶
PUT /v1/glossaryTerms/{id}/assets/remove
Content-Type: application/json
{
"assets": [
{
"id": "table-uuid-1",
"type": "table"
}
]
}
Response: ChangeEvent
Move Glossary Term (Async)¶
PUT /v1/glossaryTerms/{id}/moveAsync
Content-Type: application/json
{
"newParent": {
"id": "new-parent-uuid",
"type": "glossaryTerm"
}
}
Response: Async move operation details
Get Glossary Term Version¶
Get Glossary Term Versions¶
Search Glossary Terms¶
GET /v1/glossaryTerms/search
Query Parameters:
- q: Search query
- glossary: Filter by glossary
- entityStatus: Filter by status (Draft, In Review, Approved, Deprecated, Rejected, Unprocessed)
- fields: Fields to include
- limit: Number of results
- from: Offset for pagination
Response: SearchResults with GlossaryTerms
Example Request:
Restore Glossary Term¶
PUT /v1/glossaryTerms/restore
Content-Type: application/json
{
"id": "term-uuid"
}
Response: GlossaryTerm (restored)
Vote on Glossary Term¶
PUT /v1/glossaryTerms/{id}/vote
Content-Type: application/json
{
"vote": "upvote"
}
Response: ChangeEvent
Validate Tags on Term¶
GET /v1/glossaryTerms/{id}/tags/validate
Query Parameters:
- includeChildren: true | false (default: false)
Response: Validation results for tags applied to the term
Related Documentation¶
- Glossary - Glossary containers
- Classification - Tag hierarchies
- Tag - Individual tags
- Table - Linking terms to tables
- SKOS Standard - W3C Simple Knowledge Organization System