OPDA Knowledge base
Physical — relational Module: descriptive

Descriptive module — relational schema

Five class-promoted PROV-O Entities — survey, valuation, epc_certificate, search, comparable — each concerns a property and is identified by its issuing activity. They declare no module-local facets at this tier (price, surveyor, energy band, etc. live in overlay profiles), so the tables are intentionally thin: a surrogate key, the uri, the concerns foreign key, and the prov:wasGeneratedBy activity anchor.

Tables

TableRealisesconcernsIdentity anchor
surveySurveypropertywas_generated_by_activity_uri
valuationValuationpropertywas_generated_by_activity_uri
epc_certificateEPCCertificatepropertywas_generated_by_activity_uri
searchSearchpropertywas_generated_by_activity_uri
comparableComparablewas_generated_by_activity_uri
valuation_comparablewasInformedBy M:Njunctionvaluation × comparable

Entity-relationship diagram

erDiagram accTitle: Descriptive module — entity-relationship diagram accDescr: survey, valuation, epc_certificate and search each concern a property; comparable supports a valuation via the valuation_comparable junction. survey { uuid survey_id PK text uri UK uuid property_id FK text was_generated_by_activity_uri } valuation { uuid valuation_id PK text uri UK uuid property_id FK text was_generated_by_activity_uri } epc_certificate { uuid epc_certificate_id PK text uri UK uuid property_id FK text was_generated_by_activity_uri } search { uuid search_id PK text uri UK uuid property_id FK text was_generated_by_activity_uri } comparable { uuid comparable_id PK text uri UK text was_generated_by_activity_uri } valuation_comparable { uuid valuation_id PK,FK uuid comparable_id PK,FK } survey }o--|| property : "concerns" valuation }o--|| property : "concerns" epc_certificate }o--|| property : "concerns" search }o--|| property : "concerns" valuation ||--o{ valuation_comparable : "informed by" comparable ||--o{ valuation_comparable : "supports"

Mapping notes

  • Identity is the issuing activity. Each descriptive Kind’s identity depends on its prov:wasGeneratedBy activity (surveyor + timestamp + registration, etc.), so was_generated_by_activity_uri is NOT NULL. The activity itself is stored as an IRI literal rather than promoted to an invented activity table.
  • No invented facets. Survey price, valuer, EPC band and similar fields are overlay-profile concerns and are not declared at this tier, so they are not columns here.
  • comparable supports valuation through the valuation_comparable junction (prov:wasInformedBy), a many-to-many relationship. (property lives in the property module.)

Cross-tier

Logical tier: descriptive module.

Comments

Loading comments…