This file sketches the internal canonical ontology for Atlas.
Atlas is not a facts store and not a domain app. It is the semantic resolver and enricher that normalizes entities into a stable internal model, then persists those mappings and related graph data in Virtuoso via the MCP server.
The ontology below is deliberately small at first. It is meant to support:
A single real-world thing may have many aliases and many external identifiers. Atlas should resolve all of those into one canonical internal entity record, then attach graph evidence around it.
Example:
Trumpatlas:EntityThe canonical internal entity node.
Purpose
Typical fields
atlas:entityIdatlas:canonicalLabelatlas:entityTypeatlas:createdAtatlas:updatedAtatlas:AliasA surface form, nickname, variant label, or query label that can resolve to an entity.
Typical fields
atlas:aliasLabelatlas:aliasLanguageatlas:aliasSourceatlas:ExternalIdentifierAn identifier from another system.
Examples
Typical fields
atlas:identifierValueatlas:identifierSourceatlas:identifierTypeatlas:ProvenanceWhere a mapping or claim came from.
Typical fields
atlas:provenanceSourceatlas:retrievedAtatlas:retrievalMethodatlas:confidenceatlas:ResolvedMappingA record that says: this alias or external identifier points to this canonical entity.
Typical fields
atlas:sourceRefatlas:targetEntityatlas:provenanceatlas:statusatlas:EnrichmentDatasetA computed set of related entities, relations, and evidence produced by Atlas.
This is a function result, not the final domain-facing bundle.
Typical fields
atlas:seedEntityatlas:relatedEntityatlas:relatedRelationatlas:queryContextatlas:generatedAtatlas:EntityTypeCanonical type nodes owned by Atlas.
Purpose
owl:sameAs/skos:exactMatch style links)atlas:ExternalTypeRaw type evidence from sources such as Google Trends, Wikidata, etc.
Purpose
atlas:DomainProjectionThe conceptual bundle consumed by domain apps.
This is the representation a domain-specific app uses after Atlas has resolved and enriched the entity.
Typical fields
atlas:projectionForatlas:sourceEntityatlas:projectionPayloadatlas:projectionContextatlas:canonicalLabelatlas:aliasLabelatlas:entityType (literal fallback when canonical type is unknown)atlas:hasCanonicalType (Entity → EntityType)atlas:hasExternalType (Entity → ExternalType)atlas:externalTypeLabelatlas:equivalentType / owl:sameAs links to external ontologiesatlas:hasAliasatlas:hasExternalIdentifieratlas:resolvedToatlas:preferredIdentifieratlas:hasProvenanceatlas:provenanceSourceatlas:retrievedAtatlas:confidenceatlas:hasEnrichmentatlas:relatedEntityatlas:relatedRelationatlas:enrichmentDepthatlas:hasDomainProjectionatlas:projectionForatlas:projectionPayload@prefix atlas: <http://world.eu.org/atlas_ontology#> .
@prefix atlas_data: <http://world.eu.org/atlas_data#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
atls:entity/trump a atlas:Entity ;
atlas:canonicalLabel "Donald Trump" ;
atlas:hasCanonicalType atls:type/person ;
atlas:entityType "person" ; # literal fallback from resolver
atlas:preferredIdentifier atls:ext/wikidata/Q22686 ;
atlas:hasAlias atls:alias/trump ;
atlas:hasProvenance atls:prov/resolve/google-trends-2026-04-03 .
atls:type/person a atlas:EntityType ;
atlas:canonicalLabel "Person" ;
atlas:equivalentType <http://schema.org/Person> .
atls:alias/trump a atlas:Alias ;
atlas:aliasLabel "Trump" ;
atlas:aliasSource "query" .
atls:ext/wikidata/Q22686 a atlas:ExternalIdentifier ;
atlas:identifierValue "Q22686" ;
atlas:identifierSource "wikidata" ;
atlas:identifierType "wikidata-qid" .
atls:prov/resolve/google-trends-2026-04-03 a atlas:Provenance ;
atlas:provenanceSource "google-trends" ;
atlas:retrievalMethod "entity-resolution" ;
atlas:confidence "0.93"^^xsd:decimal .
atlas:Entity be one node per referent, with aliases and IDs attached as properties, or should aliases and identifiers be fully separate nodes?If a property is unclear, keep the ontology small and make the implementation prove it later.