OPDA Knowledge base

Physical — ontology

Turtle source, SHACL shapes, SKOS vocabularies, and diagnostic exemplars.

Audience: Ontology engineers, SPARQL consumers

Physical-Ontology tier

Audience: ontology engineers, SHACL implementers, SPARQL consumers, RDF tool authors, regulators interpreting machine-readable artefacts. Fluent in OWL / SHACL / SKOS / Turtle.

This tier documents the OWL / SHACL / SKOS Turtle artefacts that OPDA’s generator emits. Every claim here is backed by a Turtle block copied verbatim from a source TTL at source/03-standards/ontology/.

Ontology version pin

FieldValue
dct:title”OPDA — Open Property Data Association Ontology”@en
dct:creator”OPDA Linked Data Council”
dct:issued2026-05-27
dct:modified2026-05-28
dct:licensehttps://creativecommons.org/publicdomain/zero/1.0/
owl:versionIRIhttps://opda.org.uk/pdtf/harness/release/1.0.0/
owl:versionInfo”1.0.0 — foundation + SKOS vocabularies + UFO meta-classes + module shapes + DPV annotations + overlay profiles + ValidationContext + hasSpecialCategoryData”
vann:preferredNamespacePrefixopda
vann:preferredNamespaceUrihttps://opda.org.uk/pdtf/
Generator versionopda-gen-1.0.0

Source: foundation.ttl.

Load order

Per ADR-0011 (module TBox emission) + ADR-0010 (SKOS vocabulary emission) + ADR-0013 (overlay profile emission), consumers loading the full ontology should follow this order so owl:imports resolves:

  1. foundation.ttl — ontology header (<https://opda.org.uk/pdtf/>, owl:versionIRI <https://opda.org.uk/pdtf/harness/release/1.0.0/>)
  2. opda-classes.ttl — foundation class graph (6 classes + opda:hasSpecialCategoryData)
  3. opda-vocabularies.ttl — 23 SKOS concept schemes (137 concepts)
  4. opda-<module>.ttl × 6 (per-module class graphs):
    • opda-property.ttl (imports <https://opda.org.uk/pdtf/harness/release/1.0.0/> + <https://opda.org.uk/pdtf/scheme/>)
    • opda-agent.ttl
    • opda-transaction.ttl
    • opda-claim.ttl
    • opda-descriptive.ttl
    • opda-governance.ttl
  5. opda-shapes.ttl — foundation meta-shapes + cross-cutting SHACL-AF rules
  6. opda-<module>-shapes.ttl × 6 — per-module SHACL shapes (Cat 1/2 identity-key, IC-breach, succession rules)
  7. opda-annotations.ttl — foundation annotations (header-only)
  8. opda-<module>-annotations.ttl × 6 — DPV co-annotations
  9. profiles/baspi5.ttl — BASPI5 overlay profile (imports <https://opda.org.uk/pdtf/harness/release/1.0.0/> + <https://opda.org.uk/pdtf/scheme/>)

Profiles are loaded after the base ontology + shapes; they compose without modifying upstream graphs.

See also: Modelling section

The Ontology (OWL), SHACL shapes, and Concept taxonomy (SKOS) pages in the Modelling section describe the design intent and authoring approach for the artefacts documented in this tier. This tier is the generator-emitted realisation (verbatim Turtle from source TTLs); those pages are the editorial framing and design rationale.

Tier overview

--- config: layout: elk elk: mergeEdges: false nodePlacementStrategy: BRANDES_KOEPF --- %%{init: {"theme": "base", "themeVariables": {"primaryColor": "#E1BEE7", "primaryTextColor": "#4A148C", "primaryBorderColor": "#6A1B9A", "lineColor": "#37474F"}}}%% flowchart LR accTitle: Physical-Ontology tier file layout and owl:imports chain accDescr: Shows the 24 source TTL files organised by category (foundation, classes, shapes, annotations, vocabularies, profiles, exemplars) and the owl:imports chain that joins them. Foundation + vocabularies are the import roots; per-module class graphs import both; profiles compose over the base. %% @prefix opda: classDef foundation fill:#E1BEE7,stroke:#6A1B9A,stroke-width:2px,color:#4A148C classDef classes fill:#B3E5FC,stroke:#0277BD,stroke-width:2px,color:#01579B classDef shapes fill:#E8F5E9,stroke:#2E7D32,stroke-width:2px,color:#1B5E20 classDef annotations fill:#FFF9C4,stroke:#F57F17,stroke-width:2px,color:#E65100 classDef vocab fill:#F8BBD9,stroke:#AD1457,stroke-width:2px,color:#880E4F classDef profile fill:#FFE0B2,stroke:#E65100,stroke-width:2px,color:#BF360C classDef exemplar fill:#D7CCC8,stroke:#5D4037,stroke-width:2px,color:#3E2723 subgraph FoundationGroup["Foundation"] F1[foundation.ttl
ontology header]:::foundation F2[opda-classes.ttl
6 classes]:::foundation F3[opda-shapes.ttl
5 meta-shapes + 2 rules]:::foundation F4[opda-annotations.ttl
header-only]:::foundation end subgraph Vocab["SKOS substrate"] V1[opda-vocabularies.ttl
23 schemes / 137 concepts]:::vocab end subgraph Modules["Per-module graphs (×6)"] M1[opda-property.ttl]:::classes M2[opda-agent.ttl]:::classes M3[opda-transaction.ttl]:::classes M4[opda-claim.ttl]:::classes M5[opda-descriptive.ttl]:::classes M6[opda-governance.ttl]:::classes S1[opda-property-shapes.ttl]:::shapes S2[opda-agent-shapes.ttl]:::shapes S3[opda-transaction-shapes.ttl]:::shapes S4[opda-claim-shapes.ttl]:::shapes S5[opda-descriptive-shapes.ttl]:::shapes S6[opda-governance-shapes.ttl]:::shapes A1[opda-property-annotations.ttl]:::annotations A2[opda-agent-annotations.ttl]:::annotations A3[opda-transaction-annotations.ttl]:::annotations A4[opda-claim-annotations.ttl]:::annotations A5[opda-descriptive-annotations.ttl]:::annotations A6[opda-governance-annotations.ttl]:::annotations end subgraph Overlay["Overlay profile"] P1[profiles/baspi5.ttl]:::profile end Ex1[exemplars/
15 diagnostic + 15 expected reports]:::exemplar F1 -->|owl:versionIRI| F2 F2 -->|targeted by| F3 F1 -.->|cited by| F4 F1 -->|owl:imports| M1 F1 -->|owl:imports| M2 F1 -->|owl:imports| M3 F1 -->|owl:imports| M4 F1 -->|owl:imports| M5 F1 -->|owl:imports| M6 V1 -->|owl:imports| M1 V1 -->|owl:imports| M2 V1 -->|owl:imports| M3 V1 -->|owl:imports| M4 V1 -->|owl:imports| M5 V1 -->|owl:imports| M6 M1 -.->|targeted by| S1 M2 -.->|targeted by| S2 M3 -.->|targeted by| S3 M4 -.->|targeted by| S4 M5 -.->|targeted by| S5 M6 -.->|targeted by| S6 M1 -.->|annotated by| A1 M2 -.->|annotated by| A2 M3 -.->|annotated by| A3 M4 -.->|annotated by| A4 M5 -.->|annotated by| A5 M6 -.->|annotated by| A6 F1 -->|owl:imports| P1 V1 -->|owl:imports| P1 M1 -.->|exemplified by| Ex1 M2 -.->|exemplified by| Ex1

File layout

docs/manual/physical-ontology/
├── README.md                       Tier overview + class/property/scheme catalogue (this file)
├── three-graph-separation.md       Per ODR-0004 §3a — discipline + 5-part CI test
├── severity-tiers.md               Per ODR-0013 §Q1 — 4-tier framework + 5 sh:Violation categories
├── shacl-af-rules.md               Per ODR-0017 — 11 non-blocking quality rules + citing sites
├── foundation/                     6 foundation classes + 5 meta-shapes + 2 SHACL-AF rules
├── property/                       7 classes + 6 shapes + 2 SHACL-AF rules
├── agent/                          7 classes + 5 shapes + 2 SHACL-AF rules
├── transaction/                    3 classes + 4 shapes + 2 SHACL-AF rules
├── claim/                          10 classes + 5 shapes + 2 SHACL-AF rules
├── descriptive/                    5 classes + 5 shapes
├── governance/                     2 classes + 1 shape
├── vocabularies/                   23 SKOS schemes (137 concepts)
├── profiles/                       BASPI5 overlay (3-rule interface contract)
└── exemplars/                      15 diagnostic exemplars + 15 paired expected reports

Class + property + scheme catalogue

Machine-derivable index of every minted term in OPDA’s emitted ontology.

Classes (40 total)

Foundation (6)

ClassFileUFO category
opda:DiagnosticExemplarfoundation/classes.md#opdadiagnosticexemplarSubstance Kind (informational)
opda:GeneratorRunfoundation/classes.md#opdageneratorrunInformation Particular
opda:Relatorfoundation/classes.md#opdarelatorUFO Relator meta-class
opda:Rolefoundation/classes.md#opdaroleUFO Role meta-class
opda:RoleMixinfoundation/classes.md#opdarolemixinUFO RoleMixin meta-class
opda:ValidationContextfoundation/classes.md#opdavalidationcontextSubstance Kind (informational)

Property (7)

ClassFile
opda:Addressproperty/classes.md#opdaaddress
opda:LeaseExtensionEventproperty/classes.md#opdaleaseextensionevent
opda:LeaseTermproperty/classes.md#opdaleaseterm
opda:LegalEstateproperty/classes.md#opdalegalestate
opda:Propertyproperty/classes.md#opdaproperty
opda:RegisteredTitleproperty/classes.md#opdaregisteredtitle
opda:UPRNSuccessionEventproperty/classes.md#opdauprnsuccessionevent

Agent (7)

ClassFile
opda:Buyeragent/classes.md#opdabuyer
opda:NameChangeEventagent/classes.md#opdanamechangeevent
opda:Organisationagent/classes.md#opdaorganisation
opda:Personagent/classes.md#opdaperson
opda:Proprietoragent/classes.md#opdaproprietor
opda:Proprietorshipagent/classes.md#opdaproprietorship
opda:Selleragent/classes.md#opdaseller

Transaction (3)

ClassFile
opda:Milestonetransaction/classes.md#opdamilestone
opda:Transactiontransaction/classes.md#opdatransaction
opda:TransactionChaintransaction/classes.md#opdatransactionchain

Claim (10)

ClassFile
opda:AssuranceLevelclaim/classes.md#opdaassurancelevel
opda:Claimclaim/classes.md#opdaclaim
opda:Documentclaim/classes.md#opdadocument
opda:DocumentEvidenceclaim/classes.md#opdadocumentevidence
opda:ElectronicRecordclaim/classes.md#opdaelectronicrecord
opda:ElectronicRecordEvidenceclaim/classes.md#opdaelectronicrecordevidence
opda:Evidenceclaim/classes.md#opdaevidence
opda:TrustFrameworkclaim/classes.md#opdatrustframework
opda:VerificationActivityclaim/classes.md#opdaverificationactivity
opda:Vouchclaim/classes.md#opdavouch
opda:VouchEvidenceclaim/classes.md#opdavouchevidence

Descriptive (5)

ClassFile
opda:Comparabledescriptive/classes.md#opdacomparable
opda:EPCCertificatedescriptive/classes.md#opdaepccertificate
opda:Searchdescriptive/classes.md#opdasearch
opda:Surveydescriptive/classes.md#opdasurvey
opda:Valuationdescriptive/classes.md#opdavaluation

Governance (2)

ClassFile
opda:DPVMappingRecordgovernance/classes.md#opdadpvmappingrecord
opda:SpecialCategorySchemegovernance/classes.md#opdaspecialcategoryscheme

SHACL shapes (30 total)

Foundation (5 meta-shapes)

  • opda:NoIdentityOverride_MetaShape (Cat 3)
  • opda:ShInSemantics_MetaShape (Cat 5)
  • opda:ShViolationFloor_MetaShape (Cat 5)
  • opda:MetaShapeOverShapeGraphMetaShape (Cat 5)
  • opda:DeprecationChainRule, opda:PIIWithoutDPVCoAnnotationRule (SHACL-AF rules — see below)

Per-module identity-key + IC-breach shapes

ModuleShapes
PropertyAddressIdentityKeyShape, LegalEstateIdentityKeyShape, PropertyIdentityKeyShape, PropertyICBreachShape
AgentOrganisationIdentityKeyShape, PersonIdentityKeyShape, SpecialCategoryPIIWithoutLawfulBasisShape (Cat 4)
TransactionMilestoneIdentityKeyShape, TransactionIdentityKeyShape
ClaimClaimIdentityKeyShape, EvidenceIdentityKeyShape, UnprovenancedClaimShape
DescriptiveComparableIdentityKeyShape, EPCCertificateIdentityKeyShape, SearchIdentityKeyShape, SurveyIdentityKeyShape, ValuationIdentityKeyShape
GovernanceDPVMappingRecordIdentityKeyShape

See severity-tiers.md for severity classification.

SHACL-AF rules (11 total)

11 non-blocking quality rules per ODR-0017 §1a. Detailed in shacl-af-rules.md.

Citing siteRuleModule
#1opda:UPRNSuccessionRuleproperty
#2opda:DeprecationChainRulefoundation
#3opda:INSPIRESuccessionRuleproperty
#4opda:PROVOClaimsRuleclaim
#5opda:IdentifierSuccessionRuleagent
#6opda:CapacityAuthorityMatchRuleagent
#7opda:LeaseTermSuccessionRuletransaction
#8opda:MilestoneVarianceRuletransaction
#9opda:VerificationActivitySuccessionRuleclaim
#10opda:PIIWithoutDPVCoAnnotationRulefoundation (cross-cutting)
#11(placeholder for future emission)

SKOS schemes (23 total)

See vocabularies/README.md for the 7-category UFO framework.

SchemeUFO categoryMembers
opda:AddressVariantSchemeQuality Value4
opda:AssuranceLevelSchemeQuality Value4
opda:BuiltFormSchemeQuale-in-Region5
opda:CentralHeatingFuelTypeSchemeQuale-in-Region6
opda:CouncilTaxBandSchemeEWQuale-in-Region8
opda:CouncilTaxBandSchemeScotlandQuale-in-Region9
opda:CurrentEnergyRatingSchemeQuale-in-Region7
opda:EvidenceMethodSchemeQuality Value3
opda:HeatingTypeSchemeQuale-in-Region4
opda:MilestoneKindSchemeMethod/plan code5
opda:OffMainsDrainageSystemTypeSchemeQuale-in-Region6
opda:OwnerTypeSchemeSubstance Kind label2
opda:OwnershipTypeSchemeQuale-in-Region4
opda:ParticipantStatusSchemePhase label4
opda:PropertyTypeSchemeSubstance Kind label6
opda:RoleSchemeRole label12
opda:SellersCapacitySchemeMethod/plan code5
opda:TenureKindSchemeSubstance Kind label3
opda:TransactionStatusSchemePhase label5
opda:YesNoNotApplicableSchemeQuale-in-Region3
opda:YesNoNotKnownSchemeQuale-in-Region3
opda:YesNoNotRequiredSchemeQuale-in-Region3
opda:YesNoSchemeQuale-in-Region2

Total members: 137.

Overlay profiles

Diagnostic exemplars (15 paired with expected reports)

See exemplars/README.md for the full catalogue.

Property + identity (S005 + S015):

  • registered-freehold-house, unregistered-pre-first-registration-house, flat-with-split-uprn
  • flat-no-uprn-newly-converted, listed-building-divergent-addresses, rural-plot-inspire-no-uprn

Agent (S006):

  • person-with-name-change, organisation-with-merger, proprietorship-relator-multi-proprietor

Claim (S009):

  • claim-with-document-evidence, claim-with-electronic-record-evidence, claim-with-vouch-evidence

Transaction (S007):

  • simple-transaction-with-milestones, chain-of-transactions, lease-extension-transaction

Three-graph separation

Every module emits three files (classes / shapes / annotations) with strict isolation. See three-graph-separation.md for the discipline + the 5-part CI test.

CRITICAL — content authors MUST NOT:

  • Add sh:* or DPV triples to opda-<module>.ttl (classes file)
  • Add owl:Class or owl:imports to opda-<module>-shapes.ttl (shapes file)
  • Add sh:* or owl:Class to opda-<module>-annotations.ttl (annotations file)

CI-enforced by opda-gen ci-three-graph (ODR-0004 §3a).

Severity tiers

Per ODR-0013 §Q1, every shape carries explicit sh:severity. See severity-tiers.md for the 4-tier framework + the 5 sh:Violation subcategories + each emitted shape grouped by severity.

SHACL-AF rules

11 non-blocking quality rules per ODR-0017 §1a. See shacl-af-rules.md for the citing sites + each rule.

Cross-tier mapping

TierFile path convention
Conceptdocs/manual/concept/<module>/<entity>.md
Logicaldocs/manual/logical/<module>/<entity>.md
Physical-DBdocs/manual/physical-database/<module>/<entity>.md
Physical-Ontologydocs/manual/physical-ontology/<module>/classes.md#<entity>

Physical-Ontology consolidates per-class blocks into one classes.md per module rather than per-entity files (because Turtle blocks are short and the section structure is uniform).

Source ADR + ODR

Comments

Loading comments…