Domain Specification
Part of: RDF Specification
This document specifies how DataHub domains are constructed from entity IRI paths.
Overview
Domains are not extracted from RDF graphs. Instead, they are constructed from the IRI path segments of glossary terms. Domains provide hierarchical organization for business entities.
Important: Domains are not registered entities (no ENTITY_METADATA). They are built by the DomainBuilder class from existing entities.
Domain Construction Logic
Path Segment Extraction
Domains are created from the parent path segments of entity IRIs:
- Extract IRI path: Parse entity IRI to get path segments
- Remove entity name: Exclude the last segment (entity name itself)
- Create domain hierarchy: Each parent segment becomes a domain level
- Assign entities: Entities are assigned to their immediate parent domain (leaf domain)
Example
Entity IRI: https://bank.com/finance/accounts/customer_id
Path Segments: ['bank.com', 'finance', 'accounts', 'customer_id']
Parent Segments (for domain creation): ['bank.com', 'finance', 'accounts']
Domains Created:
bank.com(root domain)finance(child ofbank.com)accounts(child offinance, leaf domain)
Entity Assignment: Term assigned to accounts domain (most specific parent)
Domain Hierarchy
Domains form a hierarchical tree structure:
bank.com (root)
└── finance
└── accounts (leaf - contains entities)
Parent-Child Relationships
- Each domain has an optional
parent_domain_urn - Root domains have no parent
- Child domains reference their parent via
parent_domain_urn
Domain Creation Rules
Domains with Glossary Terms
Rule: Domains that have glossary terms in their hierarchy are created.
- Domains are created when they contain glossary terms
- Domains provide hierarchical organization for business vocabulary
Entity Assignment
Entities are assigned to their immediate parent domain (leaf domain):
- Glossary Terms: Assigned to the domain corresponding to their parent path
Example:
- Term:
https://bank.com/finance/accounts/customer_id→ Assigned toaccountsdomain
URN Generation
Domain URNs are generated from path segments:
Format: urn:li:domain:({path_segments})
Example:
- Path:
('bank.com', 'finance', 'accounts') - URN:
urn:li:domain:(bank.com,finance,accounts)
Path Segment Tuple
Path segments are represented as tuples:
('bank.com',)- Root domain('bank.com', 'finance')- Second-level domain('bank.com', 'finance', 'accounts')- Third-level domain (leaf)
Domain Properties
Required Properties
- URN: Generated from path segments
- Name: Last segment of the path (e.g.,
"accounts")
Optional Properties
- Parent Domain URN: Reference to parent domain (if not root)
- Description: Can be set from domain metadata if available
- Glossary Terms: List of terms assigned to this domain
DataHub Integration
Domain MCP Creation
Domains are created via DataHub MCPs:
- Domain Properties MCP: Creates the domain entity with name, description
- Domain Hierarchy MCP: Establishes parent-child relationships
- Domain Hierarchy MCP: Establishes parent-child relationships
Example
Input Entities:
- Term:
https://bank.com/finance/accounts/customer_id
Domains Created:
DataHubDomain(
urn="urn:li:domain:(bank.com,finance,accounts)",
name="accounts",
parent_domain_urn="urn:li:domain:(bank.com,finance)",
glossary_terms=[...], # customer_id term
)
DataHubDomain(
urn="urn:li:domain:(bank.com,finance)",
name="finance",
parent_domain_urn="urn:li:domain:(bank.com)",
glossary_terms=[],
)
DataHubDomain(
urn="urn:li:domain:(bank.com)",
name="bank.com",
parent_domain_urn=None, # Root domain
glossary_terms=[],
)
Limitations
- No RDF Extraction: Domains are not extracted from RDF - they are constructed
- Glossary Term Requirement: Domains without glossary terms are not created
- Path-Based Only: Domain structure is derived solely from IRI paths
- No Explicit Domain Definitions: RDF does not contain explicit domain definitions - they are inferred
Relationship to Other Entities
- Glossary Terms: Provide path segments for domain construction and determine which domains are created