@prefix : <https://ontology.inferal.com/modules/advertising-delivery-state/> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix mod: <https://w3id.org/mod#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix prov: <http://www.w3.org/ns/prov#> .
@prefix pubacc: <https://ontology.inferal.com/modules/publication-access/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix rng: <https://ontology.inferal.com/modules/range/> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix vann: <http://purl.org/vocab/vann/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

:
    a owl:Ontology, pubacc:PublicationManagedOntology ;
    dcterms:accessRights pubacc:PublicAccess ;
    owl:imports
        rng: ,
        <http://www.w3.org/2004/02/skos/core> ,
        <http://www.w3.org/ns/prov> ;
    dcterms:title "Advertising Delivery State Ontology" ;
    dcterms:description "Terms separating advertiser intent, legacy provider permission, reported constraints and lifecycle from independent neutral eligibility and provider serving reports. Measured delivery remains a separate observation." ;
    dcterms:license <https://creativecommons.org/licenses/by/4.0/> ;
    dcterms:source rng: , <http://www.w3.org/2004/02/skos/core> , <http://www.w3.org/ns/prov> ;
    vann:preferredNamespacePrefix "adel" ;
    vann:preferredNamespaceUri "https://ontology.inferal.com/modules/advertising-delivery-state/" ;
    mod:status "draft" ;
    rdfs:comment "Status is four independent questions wearing one word: what does the advertiser want, may the entity serve, why not, and does it still exist. One provider answers all four with a single twelve-value enumeration whose members mix an advertiser's intent with a policy verdict, an unpaid invoice, a paused ancestor, and a deleted record. Because the answers are collapsed, the most common operational question in advertising, why is this ad not running, cannot be asked at all. This module separates the four and reifies the reason, so a hold names its kind and the resource it originated from. That last part is what makes an inherited pause traceable to the ancestor responsible rather than leaving an operator to walk the hierarchy by hand." ;
    owl:versionInfo "0.2.0" .


# --- Delivery state ----------------------------------------------------------

:DeliveryState
    a rdfs:Class ;
    rdfs:subClassOf prov:Entity ;
    rdfs:label "delivery state" ;
    rdfs:comment "The delivery situation of one advertising entity: advertiser intent, reported holds and lifecycle standing, and optional legacy provider permission in its producer scope. Omitted permission remains unknown; these states do not establish measured impressions or complete cross-provider eligibility." ;
    dcterms:description "Reified so the four independent answers stay separate and can carry provenance. A state is an observation about an entity at a point in time, not a property of the entity, which is why it can disagree with a later one without contradiction." .

:DeliveryIntent
    a rdfs:Class ;
    rdfs:subClassOf skos:Concept ;
    rdfs:label "delivery intent" ;
    rdfs:comment "What the advertiser wants the entity to do: run, or not run. Intent is a setting, and it is independent of whether delivery actually occurs." ;
    dcterms:description "Deliberately narrow. Archival and deletion are not intents: they describe whether the entity still exists, and folding them in means a query for everything the advertiser switched off silently returns records that are gone." .

:ServingState
    a rdfs:Class ;
    rdfs:subClassOf skos:Concept ;
    rdfs:label "serving state" ;
    rdfs:comment "Whether the provider lets the entity serve, independent of what the advertiser intends. Whether impressions are delivered is measured by advertising-measurement, not stated by a serving state." ;
    dcterms:description "Intending to run and not serving is the normal case in advertising operations, not an anomaly. A model with one status field cannot express it, which is why an entity under review, out of budget, or beneath a paused ancestor all report as though the advertiser had switched them off." .

:ServingHold
    a rdfs:Class ;
    rdfs:label "serving hold" ;
    rdfs:comment "A reported constraint preventing or restricting delivery, naming its kind and the resource it originated from. A hold alone is not an observation of actual serving or non-serving." ;
    dcterms:description "Reified because the reason determines who can act. A policy rejection is the advertiser's to appeal, an unpaid invoice is the account owner's to settle, an exhausted budget is a configuration change, and a paused ancestor is somebody else's entity entirely. Providers expose these as untyped string arrays or fold them into a status enumeration, so none of that is decidable today." .

:HoldKind
    a rdfs:Class ;
    rdfs:subClassOf skos:Concept ;
    rdfs:label "hold kind" ;
    rdfs:comment "The category of a serving hold, such as a policy review outcome, a billing problem, an exhausted allowance, or an ancestor that is paused." ;
    dcterms:description "A concept class rather than a fixed enumeration, because providers surface hold reasons at different granularities and profiles need to extend the scheme without minting parallel classes." .

:LifecycleState
    a rdfs:Class ;
    rdfs:subClassOf skos:Concept ;
    rdfs:label "lifecycle state" ;
    rdfs:comment "Whether the entity is live, archived out of the working set, or deleted." ;
    dcterms:description "Separate from delivery intent because it answers a different question. An archived entity is not one the advertiser paused; it is one removed from view whose historical metrics remain valid and must still be readable." .


# --- Object properties -------------------------------------------------------

:stateOf
    a rdf:Property ;
    rdfs:label "state of" ;
    rdfs:comment "The advertising entity this delivery state describes." ;
    rdfs:domain :DeliveryState ;
    rdfs:range rdfs:Resource .

:intendedDelivery
    a rdf:Property ;
    rdfs:label "has intended delivery" ;
    rdfs:comment "What the advertiser wants the entity to do." ;
    rdfs:domain :DeliveryState ;
    rdfs:range :DeliveryIntent .

:observedServing
    a rdf:Property ;
    rdfs:label "has observed serving" ;
    rdfs:comment "Optional legacy report of whether the provider lets the entity serve in the producer scope. Absence remains unknown and establishes neither permission nor its denial. No value establishes measured delivery or aliases the independent neutral eligibility or provider serving-report axes." ;
    rdfs:domain :DeliveryState ;
    rdfs:range :ServingState .

:heldBy
    a rdf:Property ;
    rdfs:label "held by" ;
    rdfs:comment "A reported hold preventing or restricting delivery. A state may carry several; neither the presence nor the absence of reported holds establishes actual serving." ;
    rdfs:domain :DeliveryState ;
    rdfs:range :ServingHold .

:lifecycleStanding
    a rdf:Property ;
    rdfs:label "has lifecycle standing" ;
    rdfs:comment "Whether the entity is live, archived, or deleted." ;
    rdfs:domain :DeliveryState ;
    rdfs:range :LifecycleState .

:holdKind
    a rdf:Property ;
    rdfs:label "has hold kind" ;
    rdfs:comment "The category of the hold, which determines who can act on it." ;
    rdfs:domain :ServingHold ;
    rdfs:range :HoldKind .

:originatingResource
    a rdf:Property ;
    rdfs:label "originating resource" ;
    rdfs:comment "The resource the hold came from. For an inherited hold this is the ancestor that is paused; for a hold arising from the entity itself it is that entity." ;
    dcterms:description "Naming the origin is what makes an inherited pause traceable. A provider enumeration whose value means the parent campaign is paused says an ancestor is responsible but never which one, leaving an operator to walk a four-tier hierarchy by hand." ;
    rdfs:domain :ServingHold ;
    rdfs:range rdfs:Resource .

:effectiveDuring
    a rdf:Property ;
    rdfs:label "effective during" ;
    rdfs:comment "The interval a delivery state was observed to hold over. Open above when the state is current." ;
    rdfs:domain :DeliveryState ;
    rdfs:range rng:Range .


# --- Delivery intent scheme --------------------------------------------------

:DeliveryIntentScheme
    a skos:ConceptScheme ;
    rdfs:label "delivery intent scheme" ;
    rdfs:comment "Controlled vocabulary of what an advertiser intends an entity to do." ;
    skos:prefLabel "Delivery intents" .

:intendToRun
    a :DeliveryIntent, skos:Concept ;
    skos:inScheme :DeliveryIntentScheme ;
    rdfs:label "intend to run" ;
    rdfs:comment "The advertiser wants the entity to deliver." ;
    skos:definition "Delivery is switched on by the advertiser, whatever the platform then does." .

:intendToHold
    a :DeliveryIntent, skos:Concept ;
    skos:inScheme :DeliveryIntentScheme ;
    rdfs:label "intend to hold" ;
    rdfs:comment "The advertiser has switched delivery off." ;
    skos:definition "Delivery is switched off by the advertiser, distinct from being prevented by the platform." .


# --- Serving state scheme ----------------------------------------------------

:ServingStateScheme
    a skos:ConceptScheme ;
    rdfs:label "serving state scheme" ;
    rdfs:comment "Controlled vocabulary of whether the provider lets an entity serve." ;
    skos:prefLabel "Serving states" .

:serving
    a :ServingState, skos:Concept ;
    skos:inScheme :ServingStateScheme ;
    rdfs:label "serving" ;
    rdfs:comment "Nothing the provider reports prevents the entity from serving." ;
    skos:definition "The entity is eligible to serve at the time of observation: the provider reports nothing that prevents delivery. Whether impressions are delivered is measured by advertising-measurement, not stated by this value." .

:limitedServing
    a :ServingState, skos:Concept ;
    skos:inScheme :ServingStateScheme ;
    skos:broader :serving ;
    rdfs:label "limited serving" ;
    rdfs:comment "The entity is eligible to serve, but the provider reports that it serves only in part." ;
    skos:definition "The entity is eligible to serve, while the provider reports that delivery is restricted to part of what is set up: some markets, placements, assets or settings. The limitation is not a hold. A query for entities that can serve follows skos:broader to adel:serving, which includes this value." .

:notServing
    a :ServingState, skos:Concept ;
    skos:inScheme :ServingStateScheme ;
    rdfs:label "not serving" ;
    rdfs:comment "The provider does not let the entity serve, for reasons its intent or its holds record." ;
    skos:definition "The entity cannot serve at the time of observation: the advertiser switched it off, or the provider reports that delivery is prevented, as the state's holds record." .


# --- Hold kind scheme --------------------------------------------------------

:HoldKindScheme
    a skos:ConceptScheme ;
    rdfs:label "hold kind scheme" ;
    rdfs:comment "Controlled vocabulary of reasons delivery is prevented." ;
    skos:prefLabel "Hold kinds" .

:policyReviewHold
    a :HoldKind, skos:Concept ;
    skos:inScheme :HoldKindScheme ;
    rdfs:label "policy review" ;
    rdfs:comment "Delivery is prevented pending or following a platform policy decision. The advertiser's remedy is to amend the entity or appeal." ;
    skos:definition "A hold arising from platform review of the entity's content or targeting." .

:billingHold
    a :HoldKind, skos:Concept ;
    skos:inScheme :HoldKindScheme ;
    rdfs:label "billing" ;
    rdfs:comment "Delivery is prevented by the account's payment standing. The remedy lies with whoever owns the account, not with the entity." ;
    skos:definition "A hold arising from payment method or outstanding balance." .

:allowanceExhaustedHold
    a :HoldKind, skos:Concept ;
    skos:inScheme :HoldKindScheme ;
    rdfs:label "allowance exhausted" ;
    rdfs:comment "Delivery is prevented because the governing budget or spend cap is spent. The remedy is a configuration change." ;
    skos:definition "A hold arising from an exhausted spending allowance." .

:outsideScheduleHold
    a :HoldKind, skos:Concept ;
    skos:inScheme :HoldKindScheme ;
    rdfs:label "outside schedule" ;
    rdfs:comment "Delivery is prevented because the current time falls outside the entity's flight or dayparting. Nothing is wrong." ;
    skos:definition "A hold arising from the entity's schedule rather than from a fault." .

:ancestorHeldHold
    a :HoldKind, skos:Concept ;
    skos:inScheme :HoldKindScheme ;
    rdfs:label "ancestor held" ;
    rdfs:comment "Delivery is prevented by an ancestor that itself cannot serve. The originating resource names which ancestor, which is the part provider enumerations omit." ;
    skos:definition "An inherited hold, whose remedy lies on a different entity." .

:processingHold
    a :HoldKind, skos:Concept ;
    skos:inScheme :HoldKindScheme ;
    rdfs:label "processing" ;
    rdfs:comment "Delivery is prevented while the platform finishes work on a recent change. Transient and requiring no action." ;
    skos:definition "A hold arising from in-flight platform processing." .

:accountRestrictionHold
    a :HoldKind, skos:Concept ;
    skos:inScheme :HoldKindScheme ;
    rdfs:label "account restricted" ;
    rdfs:comment "Delivery is prevented because the platform has restricted or suspended the advertiser account as a whole. The remedy lies with the account owner, through the platform's review or appeal process." ;
    skos:definition "A hold arising from a platform restriction on the advertiser account rather than on the content of one entity." .

:configurationHold
    a :HoldKind, skos:Concept ;
    skos:inScheme :HoldKindScheme ;
    rdfs:label "configuration" ;
    rdfs:comment "Delivery is prevented by the setup of the entity where the hold originates, which may be an ancestor of the held entity: a required setting, targeting or asset is missing or misconfigured, or the entities beneath it are missing or all switched off. The remedy is a change to that setup, which the advertiser makes." ;
    skos:definition "A hold arising from how the originating entity, or the entities beneath it, are set up, rather than from review, payment, a spent allowance, the schedule or an ancestor that cannot serve." .

:unclassifiedHold
    a :HoldKind, skos:Concept ;
    skos:inScheme :HoldKindScheme ;
    rdfs:label "unclassified" ;
    rdfs:comment "Delivery is prevented for a reason the provider does not name, or names in terms no other hold kind covers. Who can act is unknown until the provider's own reason is read. Provider profiles place their unmapped hold kinds under this one, so a single query finds them across providers." ;
    skos:definition "A hold that no more specific hold kind classifies." .


# --- Lifecycle state scheme --------------------------------------------------

:LifecycleStateScheme
    a skos:ConceptScheme ;
    rdfs:label "lifecycle state scheme" ;
    rdfs:comment "Controlled vocabulary of whether an entity still exists." ;
    skos:prefLabel "Lifecycle states" .

:liveEntity
    a :LifecycleState, skos:Concept ;
    skos:inScheme :LifecycleStateScheme ;
    rdfs:label "live" ;
    rdfs:comment "The entity exists in the advertiser's working set." ;
    skos:definition "Present and editable." .

:archivedEntity
    a :LifecycleState, skos:Concept ;
    skos:inScheme :LifecycleStateScheme ;
    rdfs:label "archived" ;
    rdfs:comment "The entity is removed from the working set but retained. Its historical metrics remain valid and readable." ;
    skos:definition "Retained out of view, with history intact." .

:removedEntity
    a :LifecycleState, skos:Concept ;
    skos:inScheme :LifecycleStateScheme ;
    rdfs:label "removed" ;
    rdfs:comment "The entity no longer exists. Historical metrics may survive it, and a query joining to the entity will not resolve." ;
    skos:definition "Gone from the platform, though its measurements may persist." .


# --- Delivery evidence contract v1 -------------------------------------------

:DeliveryEvidenceObservation
    a rdfs:Class ;
    rdfs:subClassOf prov:Entity ;
    rdfs:label "delivery evidence observation" ;
    rdfs:comment "Source evidence about independent delivery axes at a retrieval instant. This observation does not establish transition time, latest state, measured delivery or a successful mutation." .

:EligibilityState
    a rdfs:Class ;
    rdfs:subClassOf skos:Concept ;
    rdfs:label "eligibility state" ;
    rdfs:comment "Whether the entity meets one explicitly named native eligibility condition. This value does not establish complete eligibility across account, ancestors, schedule and policy." .

:ServingReportState
    a rdfs:Class ;
    rdfs:subClassOf skos:Concept ;
    rdfs:label "serving report state" ;
    rdfs:comment "A provider report of serving or limited serving at retrieval. A report alone does not establish measured impressions or spend." .

:EvidenceDisposition
    a rdfs:Class ;
    rdfs:subClassOf skos:Concept ;
    rdfs:label "evidence disposition" ;
    rdfs:comment "Whether a selected evidence axis is resolved, missing, unassessed or conflicting. An unresolved disposition supplies no factual eligibility or serving value." .

:EligibilityStateScheme
    a skos:ConceptScheme ;
    rdfs:label "eligibility state scheme" ;
    rdfs:comment "Controlled values for eligibility under a named native condition." .

:ServingReportStateScheme
    a skos:ConceptScheme ;
    rdfs:label "serving report state scheme" ;
    rdfs:comment "Controlled values for provider reports of serving, distinct from measured volume." .

:EvidenceDispositionScheme
    a skos:ConceptScheme ;
    rdfs:label "evidence disposition scheme" ;
    rdfs:comment "Controlled dispositions that retain missing, unassessed and conflicting evidence." .

:eligibleUnderNativeCondition
    a :EligibilityState, skos:Concept ;
    skos:inScheme :EligibilityStateScheme ;
    rdfs:label "eligible under native condition" ;
    rdfs:comment "The selected native condition permits serving; other conditions remain separately assessed." .

:ineligibleUnderNativeCondition
    a :EligibilityState, skos:Concept ;
    skos:inScheme :EligibilityStateScheme ;
    rdfs:label "ineligible under native condition" ;
    rdfs:comment "The selected native condition does not permit serving; no measured delivery assertion follows." .

:reportedServing
    a :ServingReportState, skos:Concept ;
    skos:inScheme :ServingReportStateScheme ;
    rdfs:label "reported serving" ;
    rdfs:comment "The provider reports serving at retrieval, without establishing measured volume." .

:reportedLimitedServing
    a :ServingReportState, skos:Concept ;
    skos:inScheme :ServingReportStateScheme ;
    rdfs:label "reported limited serving" ;
    rdfs:comment "The provider reports serving in a limited capacity; applicable holds may coexist." .

:reportedNotServing
    a :ServingReportState, skos:Concept ;
    skos:inScheme :ServingReportStateScheme ;
    rdfs:label "reported not serving" ;
    rdfs:comment "Independent provider evidence reports non-serving; absence of evidence or zero measurements do not supply this value." .

:resolvedEvidence
    a :EvidenceDisposition, skos:Concept ;
    skos:inScheme :EvidenceDispositionScheme ;
    rdfs:label "resolved evidence" ;
    rdfs:comment "The selected axis has one supported factual value within its explicitly stated scope." .

:missingEvidence
    a :EvidenceDisposition, skos:Concept ;
    skos:inScheme :EvidenceDispositionScheme ;
    rdfs:label "missing evidence" ;
    rdfs:comment "The selected native evidence surface is absent; no factual value is supplied." .

:unassessedEvidence
    a :EvidenceDisposition, skos:Concept ;
    skos:inScheme :EvidenceDispositionScheme ;
    rdfs:label "unassessed evidence" ;
    rdfs:comment "Present native evidence is retained without a qualified interpretation for this axis." .

:conflictingEvidence
    a :EvidenceDisposition, skos:Concept ;
    skos:inScheme :EvidenceDispositionScheme ;
    rdfs:label "conflicting evidence" ;
    rdfs:comment "Competing native readings prevent resolution of this axis while independent axes remain available." .

:aboutEntity
    a rdf:Property ;
    rdfs:label "about entity" ;
    rdfs:comment "The named native source-record handle for Google and Meta, or qualified campaign identity for Microsoft. This link alone does not establish reconciliation across source records." ;
    rdfs:domain :DeliveryEvidenceObservation ;
    rdfs:range rdfs:Resource .

:observedAt
    a rdf:Property ;
    rdfs:label "observed at" ;
    rdfs:comment "Source retrieval or capture instant, distinct from effective transition time, a measured interval, current or latest state." ;
    rdfs:domain :DeliveryEvidenceObservation ;
    rdfs:range xsd:dateTimeStamp .

:producerContract
    a rdf:Property ;
    rdfs:label "producer contract" ;
    rdfs:comment "The explicitly selected semantic contract under which this evidence was produced." ;
    rdfs:domain :DeliveryEvidenceObservation ;
    rdfs:range rdfs:Resource .

:reportedChannel
    a rdf:Property ;
    rdfs:label "reported channel" ;
    rdfs:comment "The advertising provider channel whose evidence this observation retains." ;
    rdfs:domain :DeliveryEvidenceObservation ;
    rdfs:range rdfs:Resource .

:reportedEligibility
    a rdf:Property ;
    rdfs:label "reported eligibility" ;
    rdfs:comment "The supported eligibility value for the explicitly named native condition; omitted when evidence is unresolved." ;
    rdfs:domain :DeliveryEvidenceObservation ;
    rdfs:range :EligibilityState .

:eligibilityScope
    a rdf:Property ;
    rdfs:label "eligibility scope" ;
    rdfs:comment "The native predicate or condition assessed by the eligibility value, rather than a claim of complete eligibility." ;
    rdfs:domain :DeliveryEvidenceObservation ;
    rdfs:range rdfs:Resource .

:eligibilityEvidence
    a rdf:Property ;
    rdfs:label "eligibility evidence disposition" ;
    rdfs:comment "The resolution standing of the selected native eligibility axis." ;
    rdfs:domain :DeliveryEvidenceObservation ;
    rdfs:range :EvidenceDisposition .

:providerReportedServing
    a rdf:Property ;
    rdfs:label "provider reported serving" ;
    rdfs:comment "An independently supported provider serving report, distinct from intent, eligibility, holds and measured volume." ;
    rdfs:domain :DeliveryEvidenceObservation ;
    rdfs:range :ServingReportState .

:servingEvidence
    a rdf:Property ;
    rdfs:label "serving evidence disposition" ;
    rdfs:comment "The resolution standing of the selected native provider serving-report axis." ;
    rdfs:domain :DeliveryEvidenceObservation ;
    rdfs:range :EvidenceDisposition .

:reportedIntent
    a rdf:Property ;
    rdfs:label "reported intent" ;
    rdfs:comment "Partial advertiser intent supported by a configured native control; account status and deletion do not supply intent." ;
    rdfs:domain :DeliveryEvidenceObservation ;
    rdfs:range :DeliveryIntent .

:reportedLifecycle
    a rdf:Property ;
    rdfs:label "reported lifecycle" ;
    rdfs:comment "Lifecycle standing supported by the selected native status, independently of intent and serving." ;
    rdfs:domain :DeliveryEvidenceObservation ;
    rdfs:range :LifecycleState .

:reportedHold
    a rdf:Property ;
    rdfs:label "reported hold" ;
    rdfs:comment "A qualified hold retained from provider evidence. A hold may coexist with limited or unknown serving." ;
    rdfs:domain :DeliveryEvidenceObservation ;
    rdfs:range :ServingHold .

:sourceStatus
    a rdf:Property ;
    rdfs:label "source status" ;
    rdfs:comment "The native status token retained verbatim without conflating independent axes." ;
    rdfs:domain :DeliveryEvidenceObservation ;
    rdfs:range xsd:string .

:sourcePrimaryStatus
    a rdf:Property ;
    rdfs:label "source primary status" ;
    rdfs:comment "The native primary-status token retained even when no shared interpretation is qualified." ;
    rdfs:domain :DeliveryEvidenceObservation ;
    rdfs:range xsd:string .

:sourceServingStatus
    a rdf:Property ;
    rdfs:label "source serving status" ;
    rdfs:comment "The native serving-status token retained even when the pinned source supplies no factual serving report." ;
    rdfs:domain :DeliveryEvidenceObservation ;
    rdfs:range xsd:string .

:sourceEffectiveStatus
    a rdf:Property ;
    rdfs:label "source effective status" ;
    rdfs:comment "The native effective-status token retained independently from configured intent." ;
    rdfs:domain :DeliveryEvidenceObservation ;
    rdfs:range xsd:string .

:sourceAccountStatus
    a rdf:Property ;
    rdfs:label "source account status" ;
    rdfs:comment "The lexical native account-status code retained without inferring account advertiser intent." ;
    rdfs:domain :DeliveryEvidenceObservation ;
    rdfs:range xsd:string .

:controlObservation
    a rdf:Property ;
    rdfs:label "control observation" ;
    rdfs:comment "The existing qualified Microsoft campaign control observation supplying scoped capture evidence." ;
    rdfs:domain :DeliveryEvidenceObservation ;
    rdfs:range rdfs:Resource .

:manualPaused
    a rdf:Property ;
    rdfs:label "manual paused" ;
    rdfs:comment "The separately qualified native manual pause control; omission remains unknown." ;
    rdfs:domain :DeliveryEvidenceObservation ;
    rdfs:range xsd:boolean .

:budgetPaused
    a rdf:Property ;
    rdfs:label "budget paused" ;
    rdfs:comment "The separately qualified native budget pause control; omission remains unknown." ;
    rdfs:domain :DeliveryEvidenceObservation ;
    rdfs:range xsd:boolean .
