-
Notifications
You must be signed in to change notification settings - Fork 40
Description
Background
The Traffic Light Protocol (TLP) 2.0 is a widely used information sharing standard that indicates how and with whom information can be shared. Currently, the Unified Cyber Ontology's marking vocabulary lacks support for TLP 2.0 markings. Adding a TrafficLightProtocol_2_0 class as a subclass of marking:ReleaseToMarking will enable proper classification and handling of information according to TLP 2.0 standards.
Change Proposal Created by @vulnmaster with the Assistance of AI LLM Services: Claude Sonnet 3.5, GPT 4o1
Sources
- TLP FIRST Standards Definitions and usage Guidance - Version 2.0
- TLP 2.0 Use Cases
- TPL 2.0 Definitions and Usage from DHS CISA
- CASE Ontology
- Unified Cyber Ontology
- National Council of ISACs
Extensions Beyond TLP Standard
This proposal includes two extensions beyond the official TLP 2.0 specification:
-
validUntil Property: Enables time-bound access control
- Optional extension for automated handling
- Not part of official TLP specification
- Can be omitted for strict TLP compliance
-
Community Restrictions: Formalizes sharing boundaries
- Extends TLP:GREEN semantics
- Optional enhancement for precise control
- Can be omitted for strict TLP compliance
External Namespace Dependencies
This proposal relies on several external ontologies:
-
Unified Cyber Ontology (UCO)
uco-core: Core objects and properties (e.g., objectMarking, createdTime)uco-observable: Cyber observable objects for threat detectionuco-types: Common data types and structures
Source: UCO GitHub
-
CASE
case-investigation: Investigation records and provenancerelationship: Entity relationships and sharing agreements
Source: CASE GitHub
-
Dublin Core Terms
dcterms: Metadata properties for versioning and dates
Source: DCMI Namespace
-
SKOS
skos: Semantic concept definitions and documentation
Source: SKOS Reference
Legacy TLP 1.0 Definition
Traffic Light Protocol 1.0 (TLP 1.0) is a legacy marking scheme that is no longer supported (deprecated). There is a large volume of cyber domain data marked with TLP 1.0. For migration support, we define the TLP 1.0 class and its usage but mostlyfocus on the TLP 2.0 class and its usage in this change proposal.
We can chose to define the TLP 1.0 class and its usage as a subclass of marking:ReleaseToMarking or as a separate class. The choice is made to define the TLP 1.0 class as a subclass of marking:ReleaseToMarking.
# TLP 1.0 Class Definition
marking:TrafficLightProtocol_1_0
a owl:Class ;
rdfs:subClassOf marking:ReleaseToMarking ;
rdfs:label "Traffic Light Protocol 1.0 Marking"@en ;
rdfs:comment "Legacy TLP 1.0 marking class, maintained for migration support."@en ;
owl:versionInfo "1.0" ;
owl:deprecated true .
# TLP 1.0 Property Definition (using string literals)
marking:tlpLevel_1_0
a owl:DatatypeProperty ;
rdfs:domain marking:TrafficLightProtocol_1_0 ;
rdfs:range xsd:string ;
rdfs:comment "Legacy string-based TLP level property."@en ;
owl:deprecated true .
# Example TLP 1.0 Usage
_:example1
a marking:TrafficLightProtocol_1_0 ;
marking:tlpLevel_1_0 "WHITE" .
_:example2
a marking:TrafficLightProtocol_1_0 ;
marking:tlpLevel_1_0 "AMBER" .Requirements
Requirement 1
Create a new class marking:TrafficLightProtocol_2_0 as a subclass of marking:ReleaseToMarking to represent TLP 2.0 marking classifications.
Requirement 2
Define the four TLP 2.0 marking values (RED, AMBER, GREEN, CLEAR) as individuals of the TrafficLightProtocol_2_0 class, including their definitions and sharing restrictions as specified in the TLP 2.0 standard.
Requirement 3
Define advanced properties for marking:TrafficLightProtocol_2_0 to support additional TLP 2.0 features, such as community restrictions and validUntil dates.
Requirement 4
Consider proposing a new class marking:TrafficLightProtocol_1_0 as a subclass of marking:ReleaseToMarking to represent TLP 1.0 marking classifications.
Risk / Benefit analysis
Benefits
- Enables standardized representation of TLP 2.0 markings in CASE-based systems
- Improves interoperability with organizations using TLP 2.0 for information sharing
- Provides clear semantics for handling sensitive information in cyber investigations
Risks
The submitter is unaware of significant risks associated with this change. Minor consideration should be given to:
- Ensuring backward compatibility with any existing TLP marking implementations
- Clear documentation to prevent confusion between TLP 1.0 and 2.0 markings
Competencies demonstrated
Competency 1
Scenario: An investigator needs to share technical investigation findings with different stakeholders while maintaining appropriate access controls based on TLP 2.0 markings.
Competency Question 1.1
Which pieces of evidence can be shared with first responders outside the organization?
Result 1.1
Evidence marked with TLP:AMBER can be shared with first responders who need to know, while TLP:RED items must remain within the organization.
Competency Question 1.2
What digital artifacts can be shared publicly from the investigation?
Result 1.2
Only artifacts marked as TLP:CLEAR can be shared publicly without restrictions.
Competency Question 1.3
Can Company A share TLP:AMBER threat intelligence with their contracted incident response provider?
Result 1.3
No, unless explicitly authorized by the originator through:
- A standing agreement
- A specific request
- Instructions accompanying the intelligence
Competency Question 1.4
Can Company A share TLP:GREEN sector-specific threat intelligence with Company B?
Result 1.4
Yes, if both companies are part of the defined sector community. No, if either company is outside the specified sector.
Solution suggestion
Design Decisions and Rationale
1. Modeling Approach
We use a hybrid approach combining OWL and SKOS for different aspects of TLP 2.0:
-
OWL Classes and Properties (
marking:namespace)- Used for the structural aspects of TLP markings
- Defines how markings attach to objects
- Handles validation and constraints
- Example:
marking:TrafficLightProtocol_2_0class
Usage scenarios:
- When creating or updating TLP markings
- When validating marking constraints
- When querying for marked objects
-
SKOS Concepts (
vocabulary:namespace)- Contains the official FIRST TLP 2.0 definitions
- Provides human-readable documentation
- Enables semantic relationships between concepts
- Example:
vocabulary:TLPRedconcept
Usage scenarios:
- When displaying TLP definitions to users
- When documenting marking usage
- When mapping between different marking schemes
2. TLP Level Stability
The TLP 2.0 specification defines exactly four levels (RED, AMBER, GREEN, CLEAR) as a stable enumeration. This stability is reflected in our modeling:
-
Fixed Enumeration
- The four levels are modeled as OWL individuals
- SHACL constraints enforce this fixed set
- Future TLP versions would be separate classes
- IMPORTANT: These four individuals form a closed enumeration and MUST NOT be extended by third parties
-
Version Control
- TLP 2.0 is a distinct class from TLP 1.0
- Migration paths are explicitly defined
- No dynamic level addition is supported
Data Migration Considerations
-
String to Individual Conversion
TLP 1.0 used string literals for levels:# TLP 1.0 style ?marking marking:tlpLevel_1_0 "WHITE" .
TLP 2.0 uses typed individuals:
# TLP 2.0 style ?marking marking:tlpLevel marking:CLEAR .
-
Level Mapping
# Helper function to map old string levels to new individuals BIND( CASE ?oldLevel WHEN "WHITE" THEN marking:CLEAR WHEN "RED" THEN marking:RED WHEN "AMBER" THEN marking:AMBER WHEN "GREEN" THEN marking:GREEN ELSE marking:CLEAR # Default case END AS ?newLevel )
-
Validation Steps
# Verify no invalid levels exist SELECT ?marking ?invalidLevel WHERE { ?marking a marking:TrafficLightProtocol_2_0 ; marking:tlpLevel ?invalidLevel . FILTER(?invalidLevel NOT IN ( marking:RED, marking:AMBER, marking:GREEN, marking:CLEAR )) }
3. Community Restrictions
The marking:communityRestriction property is formally defined as:
# Note: This is an extension beyond the official TLP specification
marking:communityRestriction
a owl:ObjectProperty ;
rdfs:domain marking:TrafficLightProtocol_2_0 ;
rdfs:range vocabulary:CommunityRestriction ;
rdfs:label "community restriction"@en ;
rdfs:comment "Specifies sharing restrictions for TLP:GREEN markings based on community membership."@en .Usage patterns:
-
Sector Restrictions (using IRIs instead of strings)
?marking marking:communityRestriction marking:FinancialSector . -
Geographic Restrictions (using IRIs instead of strings)
?marking marking:communityRestriction marking:EuropeanRegion .
2. TLP 1.0 to 2.0 Migration
Key changes from TLP 1.0 to 2.0:
| TLP 1.0 | TLP 2.0 | Changes |
|---|---|---|
| WHITE | CLEAR | - Name change - Updated sharing semantics - Clearer public release criteria |
| GREEN | GREEN | - Enhanced community definition - Clarified sector boundaries |
| AMBER | AMBER | - Strengthened need-to-know requirements - Organization scope clarification |
| RED | RED | - Tightened disclosure restrictions - Added impact criteria |
3. Property Justification
The validUntil property is introduced to support:
- Time-bound information sharing agreements
- Automatic declassification workflows
- Incident response phase transitions
- Compliance with data retention policies
While not part of the core TLP standard, this extension enables automated handling of temporal access controls.
Implementation steps:
-
Create new class marking:TrafficLightProtocol_2_0 as subclass of marking:ReleaseToMarking
-
Define four individuals representing TLP levels:
- TLP:RED - Recipients may not share information with any parties outside of the specific exchange
- TLP:AMBER - Recipients may only share information with members of their own organization who need to know
- TLP:GREEN - Recipients may share information with peers and partner organizations within their sector or community
- TLP:CLEAR - Information may be shared publicly without restrictions
-
Add appropriate documentation and examples
-
Create unit tests to validate proper usage of TLP 2.0 markings
The implementation will include proper rdfs:label and rdfs:comment annotations to document the meaning and usage of each marking level according to the official TLP 2.0 specifications.
Class Architecture Graph
graph TD
A[marking:ReleaseToMarking] --> B[marking:TrafficLightProtocol_2_0]
B --> C[marking:TLPLevel]
C --> D[marking:RED]
C --> E[marking:AMBER]
C --> F[marking:GREEN]
C --> G[marking:CLEAR]
B -- marking:tlpLevel --> C
B -- marking:validUntil --> H[xsd:dateTime]
style A fill:#f9f,stroke:#333,stroke-width:2px
style B fill:#bbf,stroke:#333,stroke-width:2px
style C fill:#dfd,stroke:#333,stroke-width:2px
style D fill:#fdd,stroke:#333,stroke-width:2px
style E fill:#fed,stroke:#333,stroke-width:2px
style F fill:#dfd,stroke:#333,stroke-width:2px
style G fill:#dff,stroke:#333,stroke-width:2px
SPARQL Query Examples
Competency Question 1.1: Evidence Shareable with First Responders
Find evidence that can be shared with first responders outside the organization:
PREFIX marking: <https://ontology.unifiedcyberontology.org/uco/marking/>
PREFIX uco-core: <https://ontology.unifiedcyberontology.org/uco/core/>
PREFIX case-investigation: <https://ontology.caseontology.org/case/investigation/>
SELECT DISTINCT ?evidence ?evidenceType ?createdTime
WHERE {
# Get evidence items with their markings
?evidence a case-investigation:ProvenanceRecord ;
uco-core:objectMarking ?marking ;
a ?evidenceType ;
uco-core:createdTime ?createdTime .
?marking a marking:TrafficLightProtocol_2_0 ;
marking:tlpLevel ?level .
# Filter for AMBER level (shareable with first responders who need to know)
FILTER(?level = marking:AMBER)
# Optional: Add temporal filter if needed
# FILTER(?createdTime >= "2024-01-01T00:00:00"^^xsd:dateTime)
}
ORDER BY ?createdTimeCompetency Question 1.2: Publicly Shareable Artifacts
Find digital artifacts that can be shared publicly:
PREFIX marking: <https://ontology.unifiedcyberontology.org/uco/marking/>
PREFIX uco-core: <https://ontology.unifiedcyberontology.org/uco/core/>
PREFIX case-investigation: <https://ontology.caseontology.org/case/investigation/>
SELECT DISTINCT ?artifact ?artifactType
WHERE {
?artifact uco-core:hasMarking ?marking ;
a ?artifactType .
?marking a marking:TrafficLightProtocol_2_0 ;
marking:tlpLevel marking:CLEAR .
# Optional: Filter out specific artifact types if needed
FILTER NOT EXISTS {
?artifact a case-investigation:PersonalData .
}
}Competency Question 1.3: AMBER Sharing with Contractors
Check if TLP:AMBER intelligence can be shared with a contracted provider:
PREFIX marking: <https://ontology.unifiedcyberontology.org/uco/marking/>
PREFIX uco-core: <https://ontology.unifiedcyberontology.org/uco/core/>
SELECT DISTINCT ?intelligence ?provider ?agreement
WHERE {
# Get AMBER marked intelligence
?intelligence uco-core:objectMarking ?marking .
?marking a marking:TrafficLightProtocol_2_0 ;
marking:tlpLevel marking:AMBER .
# Check for explicit sharing agreements
?agreement a relationship:SharingAgreement ;
relationship:source ?originator ;
relationship:target ?provider ;
relationship:permission "AUTHORIZED" .
# Provider must be a contracted entity
?provider a relationship:ContractedService .
# Optional: Check if agreement is still valid
OPTIONAL {
?agreement uco-core:endTime ?endTime .
FILTER(!BOUND(?endTime) || ?endTime > NOW())
}
}Competency Question 1.4: GREEN Sharing within Sector
Determine if TLP:GREEN intelligence can be shared between companies in the same sector:
PREFIX uco-marking: <https://ontology.unifiedcyberontology.org/uco/marking/>
PREFIX uco-core: <https://ontology.unifiedcyberontology.org/uco/core/>
PREFIX uco-identity: <https://ontology.unifiedcyberontology.org/uco/identity/>
>
SELECT DISTINCT ?intelligence ?companyA ?companyB
WHERE {
# Get GREEN marked intelligence with sector restriction
?intelligence uco-core:objectMarking ?marking .
?marking a uco-marking:TrafficLightProtocol_2_0 ;
uco-marking:tlpLevel uco-marking:GREEN ;
uco-marking:communityRestriction uco-marking:FinancialSector .
# Check if both companies are in the financial sector
?companyA relationship:memberOf uco-marking:FinancialSector .
?companyB relationship:memberOf uco-marking:FinancialSector .
# Ensure we're looking at different companies
FILTER(?companyA != ?companyB)
}These queries demonstrate how to:
- Find AMBER-marked evidence shareable with first responders
- Identify CLEAR-marked artifacts for public sharing
- Verify sharing permissions for AMBER intelligence with contractors
- Check sector-based sharing rules for GREEN intelligence
Solution suggestion (expanded)
Class Definition
URI
https://ontology.unifiedcyberontology.org/uco/marking/ReleaseToMarking/TrafficLightProtocol_2_0
Superclass
marking:ReleaseToMarking
Label
"Traffic Light Protocol 2.0 Marking"@en
Description
"A marking that indicates how and with whom information can be shared according to the Traffic Light Protocol version 2.0 standard."@en
Superclasses
- marking:ReleaseToMarking
SHACL Shape Definition
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix marking: <https://ontology.unifiedcyberontology.org/uco/marking/> .
@prefix vocabulary: <https://ontology.unifiedcyberontology.org/uco/vocabulary/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
# Base shape for TLP 2.0 markings
marking:TrafficLightProtocol_2_0Shape
a sh:NodeShape ;
sh:targetClass marking:TrafficLightProtocol_2_0 ;
sh:property [
sh:path marking:tlpLevel ;
sh:datatype vocabulary:TLPLevelVocab ;
sh:minCount 1 ;
sh:maxCount 1
] ;
sh:property [
sh:path marking:tlpDefinition ;
sh:datatype vocabulary:TLPDefinitionVocab ;
sh:maxCount 1
] .
# Shape for validating community restrictions
marking:CommunityRestrictionShape
a sh:NodeShape ;
sh:targetClass marking:TrafficLightProtocol_2_0 ;
sh:property [
sh:path marking:communityType ;
sh:datatype vocabulary:CommunityTypeVocab ;
sh:maxCount 1
] ;
# Only allow community restrictions for TLP:GREEN
sh:sparql [
sh:message "Community restrictions can only be applied to TLP:GREEN markings"@en ;
sh:select """
PREFIX marking: <https://ontology.unifiedcyberontology.org/uco/marking/>
PREFIX vocabulary: <https://ontology.unifiedcyberontology.org/uco/vocabulary/>
SELECT $this ?level
WHERE {
$this marking:communityType ?type .
$this marking:tlpLevel ?level .
FILTER(?level != "GREEN"^^vocabulary:TLPLevelVocab)
}
"""
] .
# Shape for sector restrictions
marking:SectorRestrictionShape
a sh:NodeShape ;
sh:targetClass marking:TrafficLightProtocol_2_0 ;
sh:property [
sh:path marking:sector ;
sh:datatype vocabulary:SectorVocab ;
sh:maxCount 1 ;
# Only allow sector if communityType is SECTOR
sh:qualifiedValueShape [
sh:path marking:communityType ;
sh:hasValue "SECTOR"^^vocabulary:CommunityTypeVocab
]
] .
# Shape for geographic restrictions
marking:GeographicRestrictionShape
a sh:NodeShape ;
sh:targetClass marking:TrafficLightProtocol_2_0 ;
sh:property [
sh:path marking:geographicRegion ;
sh:datatype vocabulary:GeographicRegionVocab ;
sh:maxCount 1 ;
# Only allow region if communityType is GEOGRAPHIC
sh:qualifiedValueShape [
sh:path marking:communityType ;
sh:hasValue "GEOGRAPHIC"^^vocabulary:CommunityTypeVocab
]
] .
# Note: validUntil is an extension beyond the official TLP specification
marking:ValidUntilShape
a sh:NodeShape ;
sh:targetClass marking:TrafficLightProtocol_2_0 ;
sh:property [
sh:path marking:validUntil ;
sh:datatype xsd:dateTime ;
sh:maxCount 1
] .Properties Table
| Property | Type | Description | Range |
|---|---|---|---|
| marking:tlpLevel | ObjectProperty | The specific TLP 2.0 classification level | marking:TLPLevel |
| marking:validUntil | DatatypeProperty | Optional expiration date of the marking | xsd:dateTime |
Property Shapes
marking:tlpLevel
- Property Name: tlpLevel
- Property Type: ObjectProperty
- Description: "Specifies the TLP 2.0 classification level for information sharing"
- Minimum Count: 1
- Maximum Count: 1
- Local Range: marking:TLPLevel
- Global Range: marking:TLPLevel
marking:validUntil
- Property Name: validUntil
- Property Type: DatatypeProperty
- Description: "Specifies the datetime until which this TLP marking is valid"
- Minimum Count: 0
- Maximum Count: 1
- Local Range: xsd:dateTime
- Global Range: xsd:dateTime
Vocabulary Definition
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix vocabulary: <https://ontology.unifiedcyberontology.org/uco/vocabulary/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix dcterms: <http://purl.org/dc/terms/> .
<https://ontology.unifiedcyberontology.org/uco/vocabulary/tlp>
a owl:Ontology ;
rdfs:label "TLP Vocabulary"@en ;
owl:versionIRI vocabulary:2.0.0 ;
dcterms:title "Traffic Light Protocol (TLP) Vocabulary"@en ;
dcterms:description "Controlled vocabulary for Traffic Light Protocol (TLP) version 2.0 marking definitions and restrictions."@en .
vocabulary:TLPLevelVocab
a rdfs:Datatype ;
rdfs:label "TLP Level Vocabulary"@en ;
rdfs:comment "Enumerated values for TLP 2.0 levels with their official definitions from FIRST."@en ;
owl:equivalentClass [
a rdfs:Datatype ;
owl:onDatatype xsd:string ;
owl:oneOf (
"RED"^^vocabulary:TLPLevelVocab
"AMBER"^^vocabulary:TLPLevelVocab
"GREEN"^^vocabulary:TLPLevelVocab
"CLEAR"^^vocabulary:TLPLevelVocab
)
] .
vocabulary:TLPDefinitionVocab
a rdfs:Datatype ;
rdfs:label "TLP Definition Vocabulary"@en ;
rdfs:comment "Official FIRST definitions for each TLP level."@en ;
owl:equivalentClass [
a rdfs:Datatype ;
owl:onDatatype xsd:string ;
owl:oneOf (
"Not for disclosure, restricted to participants only. Sources may use TLP:RED when information cannot be effectively acted upon by additional parties, and could lead to impacts on a party's privacy, reputation, or operations if misused."^^vocabulary:TLPDefinitionVocab
"Limited disclosure, restricted to participants' organizations. Sources may use TLP:AMBER when information requires support to be effectively acted upon, yet carries risks to privacy, reputation, or operations if shared outside of the organizations involved."^^vocabulary:TLPDefinitionVocab
"Limited disclosure, restricted to the community. Sources may use TLP:GREEN when information is useful for the awareness of all participating organizations as well as with peers within the broader community or sector."^^vocabulary:TLPDefinitionVocab
"Disclosure is not limited. Sources may use TLP:CLEAR when information carries minimal or no foreseeable risk of misuse, in accordance with applicable rules and procedures for public release."^^vocabulary:TLPDefinitionVocab
)
] .
vocabulary:CommunityTypeVocab
a rdfs:Datatype ;
rdfs:label "Community Type Vocabulary"@en ;
rdfs:comment "Types of community restrictions that can be applied to TLP:GREEN markings."@en ;
owl:equivalentClass [
a rdfs:Datatype ;
owl:onDatatype xsd:string ;
owl:oneOf (
"SECTOR"^^vocabulary:CommunityTypeVocab
"GEOGRAPHIC"^^vocabulary:CommunityTypeVocab
"ORGANIZATION"^^vocabulary:CommunityTypeVocab
)
] .
vocabulary:SectorVocab
a rdfs:Datatype ;
rdfs:label "Sector Vocabulary"@en ;
rdfs:comment "Enumerated values for sector-based community restrictions, aligned with critical infrastructure sectors."@en ;
owl:equivalentClass [
a rdfs:Datatype ;
owl:onDatatype xsd:string ;
owl:oneOf (
"AUTOMOTIVE"^^vocabulary:SectorVocab
"AVIATION"^^vocabulary:SectorVocab
"CHEMICAL"^^vocabulary:SectorVocab
"COMMUNICATIONS"^^vocabulary:SectorVocab
"DEFENSE_INDUSTRIAL_BASE"^^vocabulary:SectorVocab
"DOWNSTREAM_NATURAL_GAS"^^vocabulary:SectorVocab
"ELECTIONS_INFRASTRUCTURE"^^vocabulary:SectorVocab
"EMERGENCY_MANAGEMENT_AND_RESPONSE"^^vocabulary:SectorVocab
"ELECTRICITY"^^vocabulary:SectorVocab
"FINANCIAL_SERVICES"^^vocabulary:SectorVocab
"FOOD_AND_AGRICULTURE"^^vocabulary:SectorVocab
"HEALTHCARE"^^vocabulary:SectorVocab
"INFORMATION_TECHNOLOGY"^^vocabulary:SectorVocab
"MARITIME"^^vocabulary:SectorVocab
"MARITIME_TRANSPORTATION_SYSTEM"^^vocabulary:SectorVocab
"MULTI_STATE_GOVERNMENT"^^vocabulary:SectorVocab # State, Local, Tribal, and Territorial Governments
"NUCLEAR"^^vocabulary:SectorVocab
"OIL_AND_NATURAL_GAS"^^vocabulary:SectorVocab
"PUBLIC_TRANSIT"^^vocabulary:SectorVocab
"REAL_ESTATE"^^vocabulary:SectorVocab
"RESEARCH_AND_EDUCATION"^^vocabulary:SectorVocab
"RETAIL_AND_HOSPITALITY"^^vocabulary:SectorVocab
"SPACE"^^vocabulary:SectorVocab
"SUPPLY_CHAIN"^^vocabulary:SectorVocab
"SURFACE_TRANSPORTATION"^^vocabulary:SectorVocab
"WATER"^^vocabulary:SectorVocab
)
] .
vocabulary:GeographicRegionVocab
a rdfs:Datatype ;
rdfs:label "Geographic Region Vocabulary"@en ;
rdfs:comment "Enumerated values for geographic-based community restrictions."@en ;
owl:equivalentClass [
a rdfs:Datatype ;
owl:onDatatype xsd:string ;
owl:oneOf (
"NORTH_AMERICA"^^vocabulary:GeographicRegionVocab
"SOUTH_AMERICA"^^vocabulary:GeographicRegionVocab
"EUROPE"^^vocabulary:GeographicRegionVocab
"ASIA"^^vocabulary:GeographicRegionVocab
"AFRICA"^^vocabulary:GeographicRegionVocab
"OCEANIA"^^vocabulary:GeographicRegionVocab
)
] .This vocabulary definition:
- Follows UCO's pattern for controlled vocabularies
- Uses
rdfs:Datatypewithowl:oneOffor enumerated values - Provides separate vocabularies for levels, definitions, and restrictions
- Aligns sector vocabulary with established ISAC sectors
- Includes geographic regions for regional sharing restrictions
RDF Implementation
@prefix marking: <https://ontology.caseontology.org/case/marking/> .
@prefix vocabulary: <https://ontology.unifiedcyberontology.org/uco/vocabulary/> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix dcterms: <http://purl.org/dc/terms/> .
marking:TrafficLightProtocol_2_0
a owl:Class ;
rdfs:subClassOf marking:ReleaseToMarking ;
rdfs:label "Traffic Light Protocol 2.0 Marking"@en ;
rdfs:comment "A marking that indicates how and with whom information can be shared according to the Traffic Light Protocol version 2.0 standard."@en ;
owl:imports <https://ontology.unifiedcyberontology.org/uco/vocabulary/tlp> ;
owl:versionInfo "2.0.0" ;
dcterms:issued "2024-03-20"^^xsd:date ;
dcterms:replaces marking:TrafficLightProtocol_1_0 .
marking:tlpLevel
a owl:DatatypeProperty ;
rdfs:domain marking:TrafficLightProtocol_2_0 ;
rdfs:range vocabulary:TLPLevelVocab ;
rdfs:label "TLP level"@en ;
rdfs:comment "Specifies the TLP 2.0 classification level for information sharing"@en .
marking:tlpDefinition
a owl:DatatypeProperty ;
rdfs:domain marking:TrafficLightProtocol_2_0 ;
rdfs:range vocabulary:TLPDefinitionVocab ;
rdfs:label "TLP definition"@en ;
rdfs:comment "The official FIRST definition for this TLP level"@en .
marking:communityType
a owl:DatatypeProperty ;
rdfs:domain marking:TrafficLightProtocol_2_0 ;
rdfs:range vocabulary:CommunityTypeVocab ;
rdfs:label "community type"@en ;
rdfs:comment "The type of community restriction (sector, geographic, or organization)"@en .
marking:sector
a owl:DatatypeProperty ;
rdfs:domain marking:TrafficLightProtocol_2_0 ;
rdfs:range vocabulary:SectorVocab ;
rdfs:label "sector"@en ;
rdfs:comment "The specific sector for sector-based community restrictions"@en .
marking:geographicRegion
a owl:DatatypeProperty ;
rdfs:domain marking:TrafficLightProtocol_2_0 ;
rdfs:range vocabulary:GeographicRegionVocab ;
rdfs:label "geographic region"@en ;
rdfs:comment "The specific geographic region for region-based community restrictions"@en .
marking:validUntil
a owl:DatatypeProperty ;
rdfs:domain marking:TrafficLightProtocol_2_0 ;
rdfs:range xsd:dateTime ;
rdfs:label "valid until"@en ;
rdfs:comment "Specifies the datetime until which this TLP marking is valid"@en .
# Example Usage
_:example1
a marking:TrafficLightProtocol_2_0 ;
marking:tlpLevel "RED"^^vocabulary:TLPLevelVocab ;
marking:tlpDefinition "Not for disclosure, restricted to participants only. Sources may use TLP:RED when information cannot be effectively acted upon by additional parties, and could lead to impacts on a party's privacy, reputation, or operations if misused."^^vocabulary:TLPDefinitionVocab .
_:example2
a marking:TrafficLightProtocol_2_0 ;
marking:tlpLevel "GREEN"^^vocabulary:TLPLevelVocab ;
marking:communityType "SECTOR"^^vocabulary:CommunityTypeVocab ;
marking:sector "FINANCIAL"^^vocabulary:SectorVocab .Backward Compatibility
To ensure backward compatibility with existing TLP implementations, this proposal includes the following measures:
-
Version Identification
- The class and vocabulary explicitly declare their version using
owl:versionInfo - Both include
dcterms:issuedanddcterms:replacesto track versioning lineage - The vocabulary uses
vann:preferredNamespacePrefixfor consistent namespace handling
- The class and vocabulary explicitly declare their version using
-
Migration Support
- Systems can identify TLP version through the class URI and version info
- Existing TLP 1.0 markings remain valid and can coexist with TLP 2.0
- Automated migration tools can use
dcterms:replacesrelationships to update markings
-
Data Handling
- TLP 1.0 markings are treated as valid but deprecated
- Systems should prefer TLP 2.0 for new markings
- Existing queries can be updated to handle both versions using UNION patterns
Example migration query:
PREFIX uco-marking: <https://ontology.unifiedcyberontology.org/uco/marking/>
PREFIX uco-core: <https://ontology.unifiedcyberontology.org/uco/core/>
# Update TLP 1.0 RED to TLP 2.0 RED
INSERT {
?observable uco-core:hasMarking [
a uco-marking:TrafficLightProtocol_2_0 ;
uco-marking:tlpLevel uco-marking:RED ;
dcterms:created ?now
] .
}
WHERE {
?observable uco-core:hasMarking ?oldMarking .
?oldMarking a uco-marking:TrafficLightProtocol_1_0 ;
uco-marking:tlpLevel "RED" .
BIND(NOW() as ?now)
}Community Engagement
This proposal will benefit from review and feedback from:
-
CASE Community
- CASE Working Group members
- Implementers of CASE-based systems
- Digital forensics tool developers
-
TLP Stakeholders
- FIRST (Forum of Incident Response and Security Teams)
- CISA and other government cybersecurity organizations
- Information sharing communities using TLP
-
Standards Bodies
- OASIS CTI Technical Committee
- STIX/TAXII community
- Cyber threat intelligence platforms