Overview

Namespace URI:
https://ns.cascadeprotocol.org/core/v1#
Preferred Prefix:
cascade:
Version:
2.2
Status:
Stable
Schema File:
core.ttl (Turtle/RDF)

The Core Vocabulary defines cross-cutting concepts used by all Cascade Protocol health data applications. It provides essential infrastructure for schema versioning, data provenance tracking, and user identity management. Domain-specific vocabularies (e.g., pots:, ecg:) import this core vocabulary.

Download TTL Back to Documentation

Classes

cascade:DataProvenance

owl:Class

Classification of how health data was generated or collected. All data in the Cascade Protocol is tagged with provenance to distinguish consumer-generated wellness data from clinical-grade diagnostics.

Subclass of: prov:Entity

cascade:ConsumerGenerated

owl:Class

Data generated directly by the user through personal devices in a non-clinical setting (e.g., Apple Watch POTS check).

Subclass of: cascade:DataProvenance

Disjoint with: cascade:ClinicalGenerated

cascade:ClinicalGenerated

owl:Class

Data generated in a clinical setting under healthcare provider supervision (e.g., hospital ECG, lab results).

Subclass of: cascade:DataProvenance

Disjoint with: cascade:ConsumerGenerated

cascade:DeviceGenerated v1.2

owl:Class

Data generated by a consumer health device (Apple Watch, blood pressure cuff, etc.) without clinical supervision.

Subclass of: cascade:ConsumerGenerated

cascade:SelfReported v1.2

owl:Class

Data manually entered by the patient (symptom logs, medication adherence, intake form fields).

Subclass of: cascade:ConsumerGenerated

cascade:ConsumerWellness v1.2

owl:Class

Aggregated wellness data from consumer platforms (Apple Health, Google Fit).

Subclass of: cascade:ConsumerGenerated

cascade:EHRVerified v1.2

owl:Class

Data imported from a verified Electronic Health Record system (Epic MyChart, Cerner, etc.).

Subclass of: cascade:ClinicalGenerated

cascade:ScannedDocument v1.2

owl:Class

Data extracted from a scanned or photographed clinical document.

Subclass of: cascade:ClinicalGenerated

cascade:AIExtracted v1.2

owl:Class

Data extracted from clinical documents using AI/NLP processing.

Subclass of: cascade:ClinicalGenerated

Data Source v1.1

cascade:DataSource

owl:Class

Identity and reliability metadata for a data-producing device, app, or system. Examples: Apple Watch, MyChart EHR, manual user entry.

Subclass of: prov:Agent

cascade:sourceName

owl:DatatypeProperty

Human-readable name of the data source (e.g., 'Apple Watch Series 10', 'MyChart', 'Manual Entry').

Domain: cascade:DataSource

Range: xsd:string

cascade:sourceBundleId

owl:DatatypeProperty

App bundle identifier (e.g., 'com.apple.health'). Maps to HKSource.bundleIdentifier on Apple platforms.

Domain: cascade:DataSource

Range: xsd:string

cascade:sourceReliabilityTier

owl:DatatypeProperty

Reliability classification: 'clinical' (lab equipment, EHR), 'medical_device' (FDA-cleared BP cuff), 'consumer_device' (smartwatch, fitness tracker), 'self_reported' (manual entry). Tiers inform display and conflict resolution — they do not imply clinical validity.

Domain: cascade:DataSource

Range: xsd:string

cascade:sourceMetricCoverage

owl:ObjectProperty

A wellness metric this source provides. Use multiple triples for multiple metrics. Preferred over comma-separated strings for proper RDF graph traversal.

Domain: cascade:DataSource

Data Properties

cascade:schemaVersion

owl:DatatypeProperty

Semantic version of the ontology schema used to serialize this data (format: major.minor.patch).

Range: xsd:string

Example: "1.2", "2.0.1"

See also: Semantic Versioning

cascade:dataProvenance

owl:ObjectProperty

Classification of how this data was generated (consumer vs clinical).

Range: cascade:DataProvenance

Example: cascade:ConsumerGenerated

cascade:creatorWebID

owl:ObjectProperty

Solid WebID URI of the user who created this data. Used for access control and data ownership tracking.

Subproperty of: prov:wasAttributedTo

Range: rdfs:Resource

Example: <https://id.cascadeprotocol.org/users/abc123>

See also: WebID Specification

Provenance Detail Properties v2.3

Lightweight record-level provenance properties for attribution display in Health Map provenance badges. Applied directly to record instances (not DataSource objects) to enable attribution display without full graph traversal.

cascade:sourceOrganization v2.3

Type: owl:DatatypeProperty

Range: xsd:string

Organization that provided this record (e.g., "Kaiser Permanente", "Mayo Clinic"). Populated from FHIR meta.source or contained Organization reference during clinical record import. Used across all 11 CheckupShared record models for Health Map provenance display.

cascade:sourceDeviceName v2.3

Type: owl:DatatypeProperty

Range: xsd:string

Device or app that recorded this measurement (e.g., "Apple Watch Series 9", "Omron BP Monitor"). Populated from HealthKit HKSource contributing app/device name. Used across all 11 CheckupShared record models for Health Map provenance display.

Vocabulary Organization v1.3

cascade:subConcern

owl:AnnotationProperty

Classifies a vocabulary class by its functional role within a vocabulary. Values are vocabulary-specific documented conventions (e.g., 'summary', 'intake', 'analytics', 'identity', 'app-config', 'structural', 'deprecated'). Used for documentation generation, migration planning, and vocabulary organization.

Domain: owl:Class

Range: xsd:string

Shared Preference Properties v1.3

Cross-app user preferences. These properties are used in /settings/shared/preferences.ttl for preferences that apply across all Cascade apps.

cascade:notificationsEnabled

owl:DatatypeProperty

Whether the user has enabled push notifications across Cascade apps.

Range: xsd:boolean

cascade:preferredUnits

owl:DatatypeProperty

User's preferred unit system: 'metric' or 'imperial'.

Range: xsd:string

Patient Profile v2.0

Health-specific patient demographics and related information. Complements the Solid foaf:Agent profile with structured health data fields for clinical summaries, intake forms, and care coordination.

cascade:PatientProfile v2.0

owl:Class

Health-specific patient demographics that complement the Solid foaf:Agent profile. Contains structured fields for date of birth, gender identity, biological sex, emergency contacts, address, pharmacy, and advance directives.

Subclass of: prov:Entity

cascade:dateOfBirth v2.0

owl:DatatypeProperty

Patient's date of birth.

Domain: cascade:PatientProfile

Range: xsd:date

cascade:genderIdentity v2.0

owl:DatatypeProperty

Patient's self-identified gender.

Domain: cascade:PatientProfile

Range: xsd:string

cascade:biologicalSex v2.0

owl:DatatypeProperty

Patient's biological sex assigned at birth.

Domain: cascade:PatientProfile

Range: xsd:string

cascade:ageGroup v2.0

owl:DatatypeProperty

Patient's age group classification.

Domain: cascade:PatientProfile

Range: xsd:string

cascade:emergencyContactName v2.0

owl:DatatypeProperty

Name of the patient's emergency contact.

Domain: cascade:PatientProfile

Range: xsd:string

cascade:emergencyContactRelationship v2.0

owl:DatatypeProperty

Relationship of the emergency contact to the patient (e.g., 'spouse', 'parent', 'sibling').

Domain: cascade:PatientProfile

Range: xsd:string

cascade:emergencyContactPhone v2.0

owl:DatatypeProperty

Phone number of the patient's emergency contact.

Domain: cascade:PatientProfile

Range: xsd:string

cascade:hasAddress v2.0

owl:ObjectProperty

Links to a structured postal address.

Domain: cascade:PatientProfile

Range: cascade:Address

cascade:maritalStatus v2.0

owl:DatatypeProperty

Patient's marital status.

Domain: cascade:PatientProfile

Range: xsd:string

cascade:raceEthnicity v2.0

owl:DatatypeProperty

Patient's race/ethnicity for demographic and clinical context.

Domain: cascade:PatientProfile

Range: xsd:string

cascade:hasPreferredPharmacy v2.0

owl:ObjectProperty

Links to the patient's preferred pharmacy information.

Domain: cascade:PatientProfile

Range: cascade:PharmacyInfo

cascade:hasAdvanceDirectives v2.0

owl:ObjectProperty

Links to the patient's advance directive declarations.

Domain: cascade:PatientProfile

Range: cascade:AdvanceDirectives

Additional PatientProfile Properties v2.2

Properties emitted by the SDK PatientProfileSerializer but not previously defined in the ontology.

cascade:computedAge v2.2

owl:DatatypeProperty

Patient age in years, computed from dateOfBirth at serialization time.

Domain: cascade:PatientProfile

Range: xsd:integer

cascade:profileId v2.2

owl:DatatypeProperty

Unique identifier (UUID) for the patient profile instance. Used for traceability and deduplication.

Domain: cascade:PatientProfile

Range: xsd:string

cascade:preferredLanguage v2.2

owl:DatatypeProperty

Patient's preferred language for medical communication. In the two-document Solid WebID Profile model, this should be emitted as dct:language in /profile/card.ttl. Defined for backward compatibility.

Domain: cascade:PatientProfile

Range: xsd:string

cascade:address v2.2

owl:ObjectProperty

Links an entity to an Address blank node. Used by PatientProfileSerializer.

Domain: cascade:PatientProfile

Range: cascade:Address

cascade:emergencyContact v2.2

owl:ObjectProperty

Links a PatientProfile to an EmergencyContact blank node.

Domain: cascade:PatientProfile

Range: cascade:EmergencyContact

cascade:advanceDirectives v2.2

owl:ObjectProperty

Links a PatientProfile to an AdvanceDirectives blank node.

Domain: cascade:PatientProfile

Range: cascade:AdvanceDirectives

cascade:preferredPharmacy v2.2

owl:ObjectProperty

Links a PatientProfile to a PharmacyInfo blank node.

Domain: cascade:PatientProfile

Range: cascade:PharmacyInfo

Supporting Classes

cascade:Address v2.0

owl:Class

Structured postal address. Used by cascade:PatientProfile and cascade:PharmacyInfo via the cascade:hasAddress property.

cascade:streetAddress v2.0

owl:DatatypeProperty

Street address line (e.g., '123 Main St, Apt 4'). Simplified alias of cascade:addressLine for flat serialization patterns.

Domain: cascade:Address

Range: xsd:string

cascade:city v2.0

owl:DatatypeProperty

City or locality name. Simplified alias of cascade:addressCity for flat serialization patterns.

Domain: cascade:Address

Range: xsd:string

cascade:state v2.0

owl:DatatypeProperty

State, province, or region. Simplified alias of cascade:addressState for flat serialization patterns.

Domain: cascade:Address

Range: xsd:string

cascade:postalCode v2.0

owl:DatatypeProperty

Postal or ZIP code. Simplified alias of cascade:addressPostalCode for flat serialization patterns.

Domain: cascade:Address

Range: xsd:string

cascade:country v2.0

owl:DatatypeProperty

Country name or ISO 3166-1 code. Simplified alias of cascade:addressCountry for flat serialization patterns.

Domain: cascade:Address

Range: xsd:string

FHIR-Aligned Address Properties v2.2

These properties mirror the FHIR Address datatype fields used by the SDK Address struct. The simpler properties above are retained as aliases for backward compatibility.

cascade:addressUse v2.2

owl:DatatypeProperty

Purpose of the address: home, work, temp, old. Aligns with FHIR Address.use.

Domain: cascade:Address

Range: xsd:string

cascade:addressType v2.2

owl:DatatypeProperty

Type of address: postal, physical, both. Aligns with FHIR Address.type.

Domain: cascade:Address

Range: xsd:string

cascade:addressText v2.2

owl:DatatypeProperty

Full address as a single text string. Aligns with FHIR Address.text.

Domain: cascade:Address

Range: xsd:string

cascade:addressLine v2.2

owl:DatatypeProperty

Street address line. Repeatable for multi-line addresses. Aligns with FHIR Address.line.

Domain: cascade:Address

Range: xsd:string

cascade:addressCity v2.2

owl:DatatypeProperty

City name. FHIR-aligned equivalent of cascade:city.

Domain: cascade:Address

Range: xsd:string

cascade:addressDistrict v2.2

owl:DatatypeProperty

District or county. Aligns with FHIR Address.district.

Domain: cascade:Address

Range: xsd:string

cascade:addressState v2.2

owl:DatatypeProperty

State or province. FHIR-aligned equivalent of cascade:state.

Domain: cascade:Address

Range: xsd:string

cascade:addressPostalCode v2.2

owl:DatatypeProperty

Postal or ZIP code. FHIR-aligned equivalent of cascade:postalCode.

Domain: cascade:Address

Range: xsd:string

cascade:addressCountry v2.2

owl:DatatypeProperty

Country name or ISO code. FHIR-aligned equivalent of cascade:country.

Domain: cascade:Address

Range: xsd:string

cascade:PharmacyInfo v2.0

owl:Class

Information about the patient's preferred pharmacy. Reuses cascade:hasAddress to link to a structured cascade:Address.

cascade:pharmacyName v2.0

owl:DatatypeProperty

Name of the pharmacy (e.g., 'CVS Pharmacy', 'Walgreens').

Domain: cascade:PharmacyInfo

Range: xsd:string

cascade:pharmacyPhone v2.0

owl:DatatypeProperty

Phone number of the pharmacy.

Domain: cascade:PharmacyInfo

Range: xsd:string

cascade:pharmacyAddress v2.2

owl:DatatypeProperty

Pharmacy address as a single text string. Simplified alternative to using a nested cascade:Address blank node.

Domain: cascade:PharmacyInfo

Range: xsd:string

cascade:EmergencyContact v2.2

owl:Class

A patient's emergency contact person. Used as a blank node within cascade:PatientProfile.

cascade:contactName v2.2

owl:DatatypeProperty

Full name of a contact person.

Domain: cascade:EmergencyContact

Range: xsd:string

cascade:contactRelationship v2.2

owl:DatatypeProperty

Relationship of the contact to the patient: spouse, parent, child, sibling, partner, friend, caregiver, other.

Domain: cascade:EmergencyContact

Range: xsd:string

cascade:contactPhone v2.2

owl:DatatypeProperty

Phone number for a contact person. Used within EmergencyContact blank nodes and also for general contact use on PatientProfile.

Range: xsd:string

cascade:AdvanceDirectives v2.0

owl:Class

Advance directive declarations including living will, power of attorney, and DNR status.

cascade:hasLivingWill v2.0

owl:DatatypeProperty

Whether the patient has a living will on file.

Domain: cascade:AdvanceDirectives

Range: xsd:boolean

cascade:hasPowerOfAttorney v2.0

owl:DatatypeProperty

Whether the patient has designated a healthcare power of attorney.

Domain: cascade:AdvanceDirectives

Range: xsd:boolean

cascade:hasDNR v2.0

owl:DatatypeProperty

Whether the patient has a Do Not Resuscitate order.

Domain: cascade:AdvanceDirectives

Range: xsd:boolean

cascade:advanceDirectiveNotes v2.0

owl:DatatypeProperty

Free-text notes or additional details about the patient's advance directives.

Domain: cascade:AdvanceDirectives

Range: xsd:string

Usage Example

@prefix cascade: <https://ns.cascadeprotocol.org/core/v1#> .
@prefix pots: <https://ns.cascadeprotocol.org/pots/v1#> .
@prefix prov: <http://www.w3.org/ns/prov#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<#pots-check-123> a pots:POTSCheckResult ;
    cascade:schemaVersion "1.2" ;
    cascade:dataProvenance cascade:ConsumerGenerated ;
    prov:wasAttributedTo <https://id.cascadeprotocol.org/users/abc123> ;
    prov:wasGeneratedBy [
        a prov:Activity ;
        prov:wasAssociatedWith <https://id.cascadeprotocol.org/users/abc123> ;
        prov:startedAtTime "2025-10-31T10:00:00Z"^^xsd:dateTime
    ] ;
    pots:date "2025-10-31T10:00:00Z"^^xsd:dateTime ;
    pots:protocol "nasaLean" .

W3C PROV-O Integration

The Cascade Protocol extends the W3C PROV-O (Provenance Ontology) for comprehensive data lineage tracking:

  • All health data entities are prov:Entity instances
  • cascade:creatorWebID links to prov:Agent (the user)
  • Generation activities tracked via prov:wasGeneratedBy
  • Temporal metadata captured with prov:startedAtTime

Design Principles

  • Modularity: Core vocabulary is stable; domain vocabularies evolve independently
  • Standards-based: Built on W3C RDF, OWL, and PROV-O recommendations
  • Solid-compatible: Designed for Solid Pod storage with WebID-based access control
  • Future-proof: New health apps can extend without breaking existing data

SHACL Validation Shapes

Validation shapes for this vocabulary are defined in core.shapes.ttl.

Shapes defined:

  • cascade:PatientProfileShape — Validates PatientProfile instances with required demographics fields
  • cascade:AddressShape — Validates Address blank nodes with street, city, state, postal code, and country
  • cascade:EmergencyContactShape — Validates EmergencyContact blank nodes with name, relationship, and phone
  • cascade:PharmacyInfoShape — Validates PharmacyInfo blank nodes with pharmacy name and phone
  • cascade:AdvanceDirectivesShape — Validates AdvanceDirectives blank nodes with living will, POA, and DNR flags

Changelog

Version 2.3 (2026-02-22)

  • Added cascade:sourceOrganization — organization that provided a record (e.g., "Kaiser Permanente"). Populated from FHIR meta.source or contained Organization reference during clinical import.
  • Added cascade:sourceDeviceName — device or app that recorded a measurement (e.g., "Apple Watch Series 9"). Populated from HealthKit HKSource contributing app/device name.
  • Both properties used across all 11 CheckupShared record models for Health Map provenance display. Part of Health Map v3 Pre-Phase Track A (Task A4).

Version 2.2 (2026-02-18)

  • ONT1: Added 9 FHIR-aligned Address properties: addressUse, addressType, addressText, addressLine, addressCity, addressDistrict, addressState, addressPostalCode, addressCountry
  • Updated existing simple Address properties (streetAddress, city, state, postalCode, country) as simplified aliases
  • ONT2: Added PatientProfile properties: computedAge, profileId, preferredLanguage, pharmacyAddress
  • Added cascade:EmergencyContact class with contactName, contactRelationship, contactPhone
  • Added object properties: emergencyContact, advanceDirectives, preferredPharmacy, address (blank-node linking variants)
  • Part of Schema Refactoring Plan Phase 3.5

Version 2.1 (2026-02-17)

  • Added cascade:addedInSchemaVersion annotation property for recording when a data element was introduced
  • Added cascade:cascadeUri datatype property for stable identifier URIs across vocabularies
  • Part of Schema Refactoring Plan Phase 3 (PF1-R)

Version 2.0 (2026-02-17)

  • Added cascade:PatientProfile class for health-specific patient demographics, complementing Solid foaf:Agent profile
  • Added cascade:Address class with 5 properties: streetAddress, city, state, postalCode, country
  • Added cascade:PharmacyInfo class with 2 properties: pharmacyName, pharmacyPhone (reuses hasAddress)
  • Added cascade:AdvanceDirectives class with 4 properties: hasLivingWill, hasPowerOfAttorney, hasDNR, advanceDirectiveNotes
  • Added 12 PatientProfile properties: dateOfBirth, genderIdentity, biologicalSex, ageGroup, emergencyContactName, emergencyContactRelationship, emergencyContactPhone, hasAddress, maritalStatus, raceEthnicity, hasPreferredPharmacy, hasAdvanceDirectives
  • Added foaf: and vcard: prefix declarations

Version 1.3 (2026-02-17)

  • Added cascade:subConcern annotation property for classifying vocabulary classes by functional role
  • Added shared preference properties: notificationsEnabled, preferredUnits
  • Part of Schema Refactoring Plan Phase 1 (WS2 + WS5)

Version 1.2 (2026-02-10)

  • Promoted ConsumerGenerated/ClinicalGenerated from OWL individuals to owl:Class subclasses of DataProvenance
  • Added 6 DataProvenance subclasses:
    • Consumer: DeviceGenerated, SelfReported, ConsumerWellness
    • Clinical: EHRVerified, ScannedDocument, AIExtracted

Version 1.1 (2026-02-01)

  • Added DataSource class for device/app/system identity with reliability tiers

Version 1.0 (2025-10-31)

  • Initial release: schema versioning, data provenance, identity (creatorWebID), W3C PROV-O alignment