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.
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:Entityinstances cascade:creatorWebIDlinks toprov: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 fieldscascade:AddressShape— Validates Address blank nodes with street, city, state, postal code, and countrycascade:EmergencyContactShape— Validates EmergencyContact blank nodes with name, relationship, and phonecascade:PharmacyInfoShape— Validates PharmacyInfo blank nodes with pharmacy name and phonecascade: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 FHIRmeta.sourceor contained Organization reference during clinical import. - Added
cascade:sourceDeviceName— device or app that recorded a measurement (e.g., "Apple Watch Series 9"). Populated from HealthKitHKSourcecontributing 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:EmergencyContactclass withcontactName,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:addedInSchemaVersionannotation property for recording when a data element was introduced - Added
cascade:cascadeUridatatype property for stable identifier URIs across vocabularies - Part of Schema Refactoring Plan Phase 3 (PF1-R)
Version 2.0 (2026-02-17)
- Added
cascade:PatientProfileclass for health-specific patient demographics, complementing Solidfoaf:Agentprofile - Added
cascade:Addressclass with 5 properties:streetAddress,city,state,postalCode,country - Added
cascade:PharmacyInfoclass with 2 properties:pharmacyName,pharmacyPhone(reuseshasAddress) - Added
cascade:AdvanceDirectivesclass 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:andvcard:prefix declarations
Version 1.3 (2026-02-17)
- Added
cascade:subConcernannotation 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