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 historical Ontology (OWL), SHACL shapes, and Concept taxonomy (SKOS) pages 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 preserve 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…