This project transforms XML Schema Definitions (XSD) published by the U.S. Intelligence Community Chief Information Officer (IC CIO) into RDF/OWL representations, enabling them to be used in Linked Data, semantic reasoning, and ontology-driven validation systems.
This tool:
- Parses IC-published
.xsdschemas into RDF graphs. - Converts
simpleTypeenumerations intoskos:ConceptSchemeandskos:Conceptresources. - Represents
xsd:patternrestrictions as SHACL constraints. - Models attributes as
owl:DatatypeProperty. - Resolves and recursively processes
xsd:importstatements. - Outputs RDF in:
- Compact JSON-LD
- Pretty Turtle
- N-Triples
Schemas are obtained from: 👉 IC CIO Technical Specifications
Examples include:
IC-ISM.xsdIC-EDH.xsdTetragraph.xsd
Each schema is transformed into:
transformed/
├── standalone/ # Each schema with its own owl:Ontology and owl:imports
├── convenience/ # Merged version with imports inlined
Each directory includes:
*.jsonld: Compact JSON-LD*.ttl: Human-readable Turtle (including pretty RDF lists)*.nt: N-Triples
- 🔁 Recursive
xsd:importresolution - 🔍 Semantic enrichment via:
skos:ConceptSchemeandskos:Conceptsh:patternfor special regex enumeration patternsowl:DatatypePropertywith range and comment
- 📁 Multi-format output
- 🧠 Intelligent prefix mapping and reuse
The Controlled Vocabulary Enumeration (CVE) pattern connects enumerated rdfs:Datatype definitions with SKOS-based concept schemes. This enables:
- ✅ Formal data constraints using
owl:oneOf - ✅ Semantic enrichment via
skos:Concept - ✅ Vocabulary traceability using
dc:sourceandrdfs:seeAlso - ✅ Validatable and machine-readable instance data
- ✅ Alignment between literal values and concept identifiers
This pattern allows an owl:DatatypeProperty to reference a custom datatype whose valid literal values are constrained to match the skos:notation of skos:Concepts from a referenced skos:ConceptScheme.
-
An
owl:DatatypePropertyexists- It has an
rdfs:rangeof a Custom Datatype.
- It has an
-
The Custom Datatype:
- Is an instance of
rdfs:Datatype. - Uses
owl:equivalentClass → owl:oneOfto declare allowed literals. - Has
dc:sourceandrdfs:seeAlsolinking it to askos:ConceptScheme.
- Is an instance of
-
The
skos:ConceptScheme:- Contains multiple
skos:Concepts. - References these concepts via
skos:hasTopConcept.
- Contains multiple
-
Each
skos:Concept:- Belongs to the same
skos:ConceptSchemeviaskos:inScheme. - Has a
skos:notationwith a literal value. - Each literal value matches one value listed in the
owl:oneOfof the custom datatype.
- Belongs to the same
git clone https://github.com/ewrayjohnson/ism2rdf.git
cd ism2rdf
npm installPlace schemas under:
.ciartifacts/schemas/{SchemaGroup}/
Default prefixes go in:
.ciartifacts/config/defaultPrefixes.json
ts-node index.tsOr if configured in package.json:
npm startMIT License © 2025 E. Wray Johnson