NIEM Core Concepts: The Five Foundational Types
Document Type: Technical Reference (Open Source)
Audience: Data architects, implementers
Status: Draft
Version: 1.0
Date: 2025-11-03
Authors: Timothy W. Cook (Founder, Axius SDC, Inc.) w/Claude (Anthropic AI Assistant)
Organization: Semantic Data Charter (open source community)
License: Creative Commons Attribution 4.0 International (CC BY 4.0)
About This Document: This describes the open SDC4 specification maintained by the Semantic Data Charter. SDCStudio by Axius SDC, Inc. is one commercial implementation of this specification. See About SDC4 and SDCStudio for the distinction between open specifications and commercial tools.
Introduction
NIEM Core (namespace prefix nc:) provides universally applicable data elements that form the foundation of all NIEM exchanges. At the heart of NIEM Core are five foundational types that represent the most common entities in government data exchange:
- Person - Human individuals
- Location - Geographic places and addresses
- Activity - Events, actions, and temporal occurrences
- Document - Information artifacts and records
- Item - Physical objects and tangible things
This document provides a deep dive into these core types, their structure, properties, and the challenges they present for cross-domain adoption.
Table of Contents
- Person Type
- Location Type
- Activity Type
- Document Type
- Item Type
- Cross-Cutting Patterns
- Limitations and Challenges
Person Type
Overview
nc:PersonType represents a human being. It is one of the most heavily used types in NIEM, appearing across Justice, Emergency Management, Immigration, Human Services, and virtually every other domain.
Core Structure
<xs:complexType name="PersonType">
<xs:complexContent>
<xs:extension base="structures:ObjectType">
<xs:sequence>
<!-- Identity Properties -->
<xs:element ref="nc:PersonBirthDate" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonName" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonSSNIdentification" minOccurs="0" maxOccurs="unbounded"/>
<!-- Demographic Properties -->
<xs:element ref="nc:PersonSex" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonRace" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonEthnicity" minOccurs="0" maxOccurs="unbounded"/>
<!-- Contact Properties -->
<xs:element ref="nc:PersonContactInformation" minOccurs="0" maxOccurs="unbounded"/>
<!-- Augmentation Point -->
<xs:element ref="nc:PersonAugmentationPoint" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
Key Properties
| Property | Type | Purpose | Domain Variation |
|---|---|---|---|
PersonBirthDate |
Date | Date of birth | Universal |
PersonName |
PersonNameType | Full name structure | Cultural variations |
PersonSSNIdentification |
IdentificationType | U.S. Social Security | Country-specific |
PersonSex |
PersonSexCodeType | Biological sex | Limited options |
PersonRace |
PersonRaceCodeType | Racial category | U.S.-centric |
PersonEthnicity |
PersonEthnicityCodeType | Ethnic origin | U.S.-centric |
PersonContactInformation |
ContactInformationType | Phone, email, address | Universal |
PersonName Structure
NIEM provides rich name representation:
<xs:complexType name="PersonNameType">
<xs:sequence>
<xs:element ref="nc:PersonGivenName" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonMiddleName" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonSurName" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonFullName" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonNamePrefixText" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonNameSuffixText" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
Challenge: This Western naming convention doesn't accommodate:
- Single-name cultures (Indonesia, Myanmar)
- Patronymic systems (Iceland, Ethiopia)
- Multi-part family names (Spanish-speaking countries)
- Title-based names (some Asian cultures)
Domain-Specific Extensions
Different domains extend PersonType through augmentation:
Justice Domain (j:):
<j:PersonAugmentation>
<j:PersonFBIIdentification>
<j:PersonStateFingerprintIdentification>
<j:PersonCriminalTrackingNumberIdentification>
</j:PersonAugmentation>
Immigration Domain (im:):
<im:PersonAugmentation>
<im:PersonCitizenshipCountry>
<im:PersonImmigrationStatusCode>
<im:PersonVisaIdentification>
</im:PersonAugmentation>
Healthcare Domain (Hypothetical):
<health:PersonAugmentation>
<health:PatientMedicalRecordNumber>
<health:PatientInsuranceIdentification>
<health:PatientBloodType>
</health:PersonAugmentation>
Key Challenge: Each domain creates its own augmentation, leading to incompatible "Person" representations across domains.
Location Type
Overview
nc:LocationType represents a physical or geographic location, including addresses, coordinates, and spatial boundaries.
Core Structure
<xs:complexType name="LocationType">
<xs:complexContent>
<xs:extension base="structures:ObjectType">
<xs:sequence>
<!-- Address Representation -->
<xs:element ref="nc:LocationAddress" minOccurs="0" maxOccurs="unbounded"/>
<!-- Geographic Coordinates -->
<xs:element ref="nc:LocationGeospatialCoordinate" minOccurs="0" maxOccurs="unbounded"/>
<!-- Spatial Boundaries -->
<xs:element ref="nc:LocationArea" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:LocationPolygonCoordinate" minOccurs="0" maxOccurs="unbounded"/>
<!-- Descriptive Properties -->
<xs:element ref="nc:LocationName" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:LocationDescriptionText" minOccurs="0" maxOccurs="unbounded"/>
<!-- Augmentation Point -->
<xs:element ref="nc:LocationAugmentationPoint" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
Address Structure
<xs:complexType name="AddressType">
<xs:sequence>
<xs:element ref="nc:LocationStreet" minOccurs="0" maxOccurs="1"/>
<xs:element ref="nc:LocationCityName" minOccurs="0" maxOccurs="1"/>
<xs:element ref="nc:LocationState" minOccurs="0" maxOccurs="1"/>
<xs:element ref="nc:LocationPostalCode" minOccurs="0" maxOccurs="1"/>
<xs:element ref="nc:LocationCountry" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
Challenge: U.S.-centric address format doesn't accommodate:
- International address formats (UK postcodes, Japanese addresses)
- Rural addresses without street numbers
- Military addresses (APO/FPO)
- Indigenous lands with alternative naming
Geospatial Coordinates
NIEM supports point coordinates:
<xs:complexType name="LocationGeospatialCoordinateType">
<xs:sequence>
<xs:element ref="nc:GeographicCoordinateLatitude"/>
<xs:element ref="nc:GeographicCoordinateLongitude"/>
</xs:sequence>
</xs:complexType>
NIEM 5.0+ supports polygon boundaries:
<xs:element name="LocationPolygonNodeLocation" type="nc:LocationType">
<!-- Defines polygon vertices for area boundaries -->
</xs:element>
Domain Examples
Emergency Management:
- Incident location
- Disaster zone boundaries
- Evacuation areas
Justice:
- Crime scene location
- Arrest location
- Jurisdiction boundaries
Infrastructure Protection:
- Critical infrastructure sites
- Security perimeter coordinates
- Asset locations
Activity Type
Overview
nc:ActivityType represents an event, action, or occurrence with temporal and descriptive properties. It's the foundation for modeling actions across government domains.
Core Structure
<xs:complexType name="ActivityType">
<xs:complexContent>
<xs:extension base="structures:ObjectType">
<xs:sequence>
<!-- Identity Properties -->
<xs:element ref="nc:ActivityIdentification" minOccurs="0" maxOccurs="unbounded"/>
<!-- Temporal Properties -->
<xs:element ref="nc:ActivityDate" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:ActivityStartDate" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:ActivityEndDate" minOccurs="0" maxOccurs="unbounded"/>
<!-- Descriptive Properties -->
<xs:element ref="nc:ActivityCategoryText" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:ActivityDescriptionText" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:ActivityName" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:ActivityStatus" minOccurs="0" maxOccurs="unbounded"/>
<!-- Location Association (added NIEM 5.0) -->
<xs:element ref="nc:ActivityLocation" minOccurs="0" maxOccurs="unbounded"/>
<!-- Augmentation Point -->
<xs:element ref="nc:ActivityAugmentationPoint" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
Domain-Specific Activity Types
Different domains create specialized activity types:
Justice Domain:
j:ArrestActivity- Law enforcement arrestj:ChargeActivity- Criminal chargingj:CourtActivity- Court proceedings
Emergency Management:
em:IncidentActivity- Emergency incidentem:ResponseActivity- Emergency response action
Immigration:
im:EntryActivity- Border entry eventim:ExitActivity- Border exit event
Military Operations:
mo:MissionActivity- Military missionmo:OperationActivity- Military operation
Temporal Modeling Challenges
NIEM's temporal model has limitations:
<xs:complexType name="PersonNameType">
<xs:sequence>
<xs:element ref="nc:PersonGivenName" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonMiddleName" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonSurName" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonFullName" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonNamePrefixText" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonNameSuffixText" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
0
What's Missing:
- Duration representation (ISO 8601 durations)
- Recurrence patterns (weekly meetings, annual events)
- Temporal precision indicators (exact vs. approximate)
- Time zones (implicit in date/time values)
Document Type
Overview
nc:DocumentType represents an information artifact—physical or electronic records, forms, reports, certificates, etc.
Core Structure
<xs:complexType name="PersonNameType">
<xs:sequence>
<xs:element ref="nc:PersonGivenName" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonMiddleName" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonSurName" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonFullName" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonNamePrefixText" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonNameSuffixText" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
1
Document Types Across Domains
Justice:
- Arrest warrant
- Court order
- Police report
Immigration:
- Visa document
- Passport
- Entry permit
Human Services:
- Birth certificate
- Social services eligibility form
- Case plan
Healthcare (Hypothetical):
- Medical record
- Prescription
- Lab report
Metadata Challenges
NIEM's document metadata is limited:
<xs:complexType name="PersonNameType">
<xs:sequence>
<xs:element ref="nc:PersonGivenName" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonMiddleName" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonSurName" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonFullName" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonNamePrefixText" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonNameSuffixText" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
2
Key Observation: NIEM predates modern digital asset management standards. Extensions needed for cloud-native document handling.
Item Type
Overview
nc:ItemType represents a physical object or tangible thing—vehicles, property, evidence, assets, goods, etc.
Core Structure
<xs:complexType name="PersonNameType">
<xs:sequence>
<xs:element ref="nc:PersonGivenName" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonMiddleName" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonSurName" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonFullName" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonNamePrefixText" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonNameSuffixText" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
3
Specialized Item Subtypes
NIEM Core provides specialized subtypes of ItemType:
VehicleType:
<xs:complexType name="PersonNameType">
<xs:sequence>
<xs:element ref="nc:PersonGivenName" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonMiddleName" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonSurName" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonFullName" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonNamePrefixText" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonNameSuffixText" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
4
ConveyanceType:
<xs:complexType name="PersonNameType">
<xs:sequence>
<xs:element ref="nc:PersonGivenName" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonMiddleName" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonSurName" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonFullName" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonNamePrefixText" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonNameSuffixText" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
5
Domain Item Specializations
Justice:
- Evidence item (crime scene evidence)
- Contraband item (illegal goods)
- Property item (stolen property)
Emergency Management:
- Resource item (emergency equipment)
- Supply item (disaster relief supplies)
Immigration:
- Baggage item (traveler luggage)
- Prohibited item (banned goods)
Military Operations:
- Munition item (ammunition)
- Equipment item (military gear)
Cross-Cutting Patterns
Association Pattern
NIEM uses Association Types to express relationships:
<xs:complexType name="PersonNameType">
<xs:sequence>
<xs:element ref="nc:PersonGivenName" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonMiddleName" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonSurName" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonFullName" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonNamePrefixText" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonNameSuffixText" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
6
Other Common Associations:
- Person-Activity (arrest, incident involvement)
- Item-Location (property location, evidence location)
- Activity-Location (incident location, operation area)
- Person-Item (ownership, possession)
- Person-Document (document owner, signer)
Metadata Pattern
NIEM provides metadata capabilities through structures:Metadata:
<xs:complexType name="PersonNameType">
<xs:sequence>
<xs:element ref="nc:PersonGivenName" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonMiddleName" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonSurName" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonFullName" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonNamePrefixText" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonNameSuffixText" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
7
Augmentation Pattern
Domains extend core types without modifying core schemas:
<xs:complexType name="PersonNameType">
<xs:sequence>
<xs:element ref="nc:PersonGivenName" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonMiddleName" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonSurName" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonFullName" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonNamePrefixText" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonNameSuffixText" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
8
Limitations and Challenges
1. Cultural and Geographic Bias
Problem: NIEM Core reflects U.S. government needs:
- PersonSSNIdentification (U.S.-specific)
- PersonRace/Ethnicity codes (U.S. census categories)
- Address format (U.S. postal conventions)
- PersonName structure (Western naming)
Impact: International exchanges require extensive augmentation.
2. Semantic Rigidity
Problem: Definitions baked into structure:
PersonBirthDate= date of birth (what about date of birth uncertainty?)ActivityDate= single date (what about recurring activities?)DocumentExpirationDate= expiration (what about documents with conditional expiration?)
Impact: Edge cases require workarounds or extensions.
3. Governance Complexity
Problem: Harmonization overhead:
- 13+ domains must coordinate on core changes
- New properties require NBAC approval
- Major releases every 3 years
Impact: Slow evolution, delayed adoption of new needs.
4. Domain Fragmentation
Problem: Each domain creates specialized augmentations:
- Justice's
PersonType≠ Healthcare'sPersonType - Emergency Management's
ActivityType≠ Military Operations'ActivityType
Impact: Cross-domain data exchange still requires mapping.
5. Versioning Challenges
Problem: Namespace versioning:
- Each major release changes namespace URIs
- IEPDs must specify exact version
- Backward compatibility not guaranteed
Impact: Version migration burden on implementers.
Comparison to SDC4 Approach
NIEM's Approach
<xs:complexType name="PersonNameType">
<xs:sequence>
<xs:element ref="nc:PersonGivenName" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonMiddleName" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonSurName" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonFullName" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonNamePrefixText" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonNameSuffixText" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
9
Issues:
- Semantics locked into element names
- Structure and meaning inseparable
- Extensions required for domain variations
SDC4's Approach
Schema (component definitions with multi-vocabulary semantic links):
<j:PersonAugmentation>
<j:PersonFBIIdentification>
<j:PersonStateFingerprintIdentification>
<j:PersonCriminalTrackingNumberIdentification>
</j:PersonAugmentation>
0
Instance Data:
<j:PersonAugmentation>
<j:PersonFBIIdentification>
<j:PersonStateFingerprintIdentification>
<j:PersonCriminalTrackingNumberIdentification>
</j:PersonAugmentation>
1
Benefits:
- Structure reusable across domains: Element names (
ms-[CUID2]) are structural identifiers - Multiple ontologies reference same structure: Birth Date component links to Schema.org, FHIR, and NIEM simultaneously
- No governance needed for semantic additions: New ontology URIs added via schema annotations
- Domain-agnostic structural model: XdTemporalType and XdStringType work for any domain
- Version-stable: Component identifiers (
ms-bg3j6m9q01555) persist across schema versions
Next Steps
To understand practical mapping:
- Read NIEM Person Mapping for detailed Person mapping examples
- Read NIEM Location Mapping for Location patterns
- Read NIEM Activity Mapping for Activity modeling
To understand strategic implications:
- Read NIEM Semantics Problem for deep analysis of mixing issues
- Read NIEM Government-Wide Vision for SDC4's alternative vision
For quick reference:
- Use NIEM Quick Reference for common mappings
Document Navigation:
About This Documentation
This document describes the open SDC4 specification maintained by the Semantic Data Charter community.
Open Source:
- Specification: https://semanticdatacharter.com
- GitHub: https://github.com/SemanticDataCharter
- License: CC BY 4.0
Commercial Implementation:
- SDCStudio: https://axius-sdc.com (by Axius SDC, Inc.)
See About SDC4 and SDCStudio for details.
*This document is part of the SDC4 Integration Guide series.*
*Author: Timothy W. Cook (Founder, Axius SDC, Inc.) w/Claude (Anthropic AI Assistant)*
*License: Creative Commons Attribution 4.0 International (CC BY 4.0)*