@prefix pc: <https://ontology.inferal.com/modules/commerce-purchase-classification/> .
@prefix ctx: <https://ontology.inferal.com/modules/commerce-transaction/> .
@prefix adm: <https://ontology.inferal.com/modules/advertising-measurement/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix prov: <http://www.w3.org/ns/prov#> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .

pc: a owl:Ontology; rdfs:label "Commerce purchase classification"; rdfs:comment "Versioned declared purchase-context classification, preserving historical evidence boundaries."; owl:versionInfo "0.1.0" .
pc:PurchaseClassification a rdfs:Class; rdfs:label "purchase classification"; rdfs:comment "An order-scoped assessment under one merchant, buyer, policy, history declaration and as-of instant. A retained observation does not certify provider completeness or advertising acquisition." .
pc:ClassificationContext a rdfs:Class; rdfs:label "classification context"; rdfs:comment "A supplied selection of orders and the exact declared policy, identity standing and history scope used for classification." .
pc:ClassificationPolicy a rdfs:Class; rdfs:label "classification policy"; rdfs:comment "A declared purchase eligibility, refund treatment and monetary basis. A policy declaration does not assert that a connector implements it." .
pc:HistoryDeclaration a rdfs:Class; rdfs:label "history declaration"; rdfs:comment "A supplied coverage and time declaration for one merchant and buyer. Declared complete coverage is not attested native history." .
pc:ScopedPurchaseEvidence a rdfs:Class; rdfs:label "scoped purchase evidence"; rdfs:comment "Evidence that can carry a merchant or buyer context, including source orders and classification declarations." .
pc:Standing a rdfs:Class; rdfs:label "standing"; rdfs:comment "A bounded classification, evidence, eligibility, monetary or diagnostic standing; a concept does not grant write permission." .
pc:PurchaseClassification rdfs:subClassOf prov:Entity, pc:ScopedPurchaseEvidence .
pc:ClassificationContext rdfs:subClassOf pc:ScopedPurchaseEvidence .
pc:HistoryDeclaration rdfs:subClassOf pc:ScopedPurchaseEvidence .
pc:ClassificationPolicy rdfs:subClassOf pc:ScopedPurchaseEvidence .
pc:context a rdf:Property; rdfs:label "context"; rdfs:comment "The exact supplied classification context retained with this assessment."; rdfs:domain pc:PurchaseClassification; rdfs:range pc:ClassificationContext .
pc:order a rdf:Property; rdfs:label "order"; rdfs:comment "The purchase assessed; the buyer identity remains distinct from this observation."; rdfs:domain pc:PurchaseClassification; rdfs:range ctx:Order .
pc:buyer a rdf:Property; rdfs:label "buyer"; rdfs:comment "The declared buyer role in this evidence scope; possible identity matches do not merge buyers."; rdfs:domain pc:ScopedPurchaseEvidence; rdfs:range ctx:Buyer .
pc:merchant a rdf:Property; rdfs:label "merchant"; rdfs:comment "The named merchant scope. Same order identifier spelling across merchants is not a shared purchase."; rdfs:domain pc:ScopedPurchaseEvidence; rdfs:range prov:Entity .
pc:policy a rdf:Property; rdfs:label "policy"; rdfs:comment "The exact declared policy used by the selected context; also retained on each assessment."; rdfs:domain pc:ScopedPurchaseEvidence; rdfs:range pc:ClassificationPolicy .
pc:history a rdf:Property; rdfs:label "history"; rdfs:comment "The declared retained history scope; also retained on each assessment."; rdfs:domain pc:ScopedPurchaseEvidence; rdfs:range pc:HistoryDeclaration .
pc:selectedOrder a rdf:Property; rdfs:label "selected order"; rdfs:comment "An order selected for an assessment, including orders whose source evidence remains unresolved."; rdfs:domain pc:ClassificationContext; rdfs:range ctx:Order .
pc:asOf a rdf:Property; rdfs:label "as of"; rdfs:comment "The declared as-of instant limiting available captures; also retained on each assessment."; rdfs:domain pc:ScopedPurchaseEvidence; rdfs:range xsd:dateTimeStamp .
pc:identityStanding a rdf:Property; rdfs:label "identity standing"; rdfs:comment "Whether the caller declares a stable buyer identity or retains unresolved possible linkage."; rdfs:domain pc:ClassificationContext; rdfs:range pc:Standing .
pc:mode a rdf:Property; rdfs:label "mode"; rdfs:comment "Selects source-reported or inferred classification without equating their evidence bases."; rdfs:domain pc:ClassificationContext; rdfs:range pc:Standing .
pc:eligibilityPolicy a rdf:Property; rdfs:label "eligibility policy"; rdfs:comment "Explicit purchase lifecycle eligibility. The bounded pipeline supports placed orders only or placed plus cancelled orders."; rdfs:domain pc:ClassificationPolicy; rdfs:range pc:Standing .
pc:refundTreatment a rdf:Property; rdfs:label "refund treatment"; rdfs:comment "Explicit treatment of later refunds. PreservePurchase retains the purchase for newness; reset behavior is unsupported here."; rdfs:domain pc:ClassificationPolicy; rdfs:range pc:Standing .
pc:monetaryBasis a rdf:Property; rdfs:label "monetary basis"; rdfs:comment "The selected monetary basis, retained with assessment amounts. ChargedOrderTotal is not net revenue or profit."; rdfs:domain pc:ScopedPurchaseEvidence; rdfs:range pc:Standing .
pc:historyCoverage a rdf:Property; rdfs:label "history coverage"; rdfs:comment "Caller-declared complete or partial historical coverage, not provider verification."; rdfs:domain pc:HistoryDeclaration; rdfs:range pc:Standing .
pc:historyStart a rdf:Property; rdfs:label "history start"; rdfs:comment "The declared historical start, represented by MerchantInception or an explicit timestamp. A later start cannot justify first-ever classification."; rdfs:domain pc:HistoryDeclaration .
pc:historyThrough a rdf:Property; rdfs:label "history through"; rdfs:comment "The declared history coverage end; it must cover the selected as-of to support the complete-history basis."; rdfs:domain pc:HistoryDeclaration; rdfs:range xsd:dateTimeStamp .
pc:purchaseKey a rdf:Property; rdfs:label "purchase key"; rdfs:comment "A source-declared stable purchase key scoped to merchant and buyer. Different order handles with one key are unresolved rather than automatically merged."; rdfs:domain ctx:Order; rdfs:range xsd:string .
pc:capturedAt a rdf:Property; rdfs:label "captured at"; rdfs:comment "When this retained order record was captured. Later captures are unavailable to an earlier declared as-of."; rdfs:domain ctx:Order; rdfs:range xsd:dateTimeStamp .
pc:reportedStatus a rdf:Property; rdfs:label "reported status"; rdfs:comment "A source-reported purchase status, independent of inferred first-observed or declared-complete-history classification."; rdfs:domain ctx:Order; rdfs:range ctx:BuyerStatus .
pc:reportedPolicy a rdf:Property; rdfs:label "reported policy"; rdfs:comment "The explicit source policy under which a reported purchase status is supplied."; rdfs:domain ctx:Order; rdfs:range pc:ClassificationPolicy .
pc:status a rdf:Property; rdfs:label "status"; rdfs:comment "The assessed purchase status, never broadcast from the legacy Buyer-level buyerStatus relation."; rdfs:domain pc:PurchaseClassification; rdfs:range ctx:BuyerStatus .
pc:basis a rdf:Property; rdfs:label "basis"; rdfs:comment "The evidence basis for the assessed status; SourceReported and FirstObserved do not establish first-ever or advertising acquisition."; rdfs:domain pc:PurchaseClassification; rdfs:range pc:Standing .
pc:reason a rdf:Property; rdfs:label "reason"; rdfs:comment "The exact qualified or unresolved classification reason for this selected purchase."; rdfs:domain pc:PurchaseClassification; rdfs:range pc:Standing .
pc:eligibilityStanding a rdf:Property; rdfs:label "eligibility standing"; rdfs:comment "The eligibility of this purchase under the explicitly selected policy."; rdfs:domain pc:PurchaseClassification; rdfs:range pc:Standing .
pc:monetaryStanding a rdf:Property; rdfs:label "monetary standing"; rdfs:comment "Whether one nonnegative amount and currency support the selected charged-total subtotal; unresolved amounts are not zero."; rdfs:domain pc:PurchaseClassification; rdfs:range pc:Standing .
pc:amountValue a rdf:Property; rdfs:label "amount value"; rdfs:comment "A qualified charged-order amount for the selected monetary basis, preserving decimal arithmetic."; rdfs:domain pc:PurchaseClassification; rdfs:range xsd:decimal .
pc:currency a rdf:Property; rdfs:label "currency"; rdfs:comment "The qualified currency for the selected charged amount; currencies are grouped separately."; rdfs:domain pc:PurchaseClassification; rdfs:range xsd:string .
pc:sourceDigest a rdf:Property; rdfs:label "source digest"; rdfs:comment "SHA256 of the exact retained source bytes used for the assessment."; rdfs:domain pc:PurchaseClassification; rdfs:range xsd:string .
pc:contextDigest a rdf:Property; rdfs:label "context digest"; rdfs:comment "SHA256 of the exact retained supplied context bytes."; rdfs:domain pc:PurchaseClassification; rdfs:range xsd:string .
pc:interpretationDigest a rdf:Property; rdfs:label "interpretation digest"; rdfs:comment "SHA256 of the retained semantic interpretation bytes and executable modes, excluding catalog discovery."; rdfs:domain pc:PurchaseClassification; rdfs:range xsd:string .
pc:defaultClassificationService a rdf:Property; rdfs:label "default classification service"; rdfs:comment "The selected versioned classification service for discovery; it does not change older buyer-level meanings." .
pc:routeStanding a rdf:Property; rdfs:label "route standing"; rdfs:comment "The explicit legacy or qualified discovery standing of a published query route." .
pc:reader a rdf:Property; rdfs:label "reader"; rdfs:comment "An authored reader available through the selected service." .
pc:readerName a rdf:Property; rdfs:label "reader name"; rdfs:comment "The exact reader identifier selected in the generation pipeline."; rdfs:range xsd:string .
pc:Unknown a pc:Standing, ctx:BuyerStatus; rdfs:label "unknown"; rdfs:comment "The selected purchase status is not qualified; absence of evidence is not zero new-customer purchases." .
pc:Excluded a pc:Standing, ctx:BuyerStatus; rdfs:label "excluded"; rdfs:comment "This selected purchase is excluded by the explicitly chosen eligibility policy." .
pc:Inferred a pc:Standing; rdfs:label "inferred"; rdfs:comment "Infer from scoped eligible retained history while preserving the stated coverage and identity bounds." .
pc:SourceReported a pc:Standing; rdfs:label "source reported"; rdfs:comment "Retain the source-reported classification under the same explicit source policy; this is not complete-history inference." .
pc:DeclaredStable a pc:Standing; rdfs:label "declared stable"; rdfs:comment "The caller declares a stable buyer identity in the selected merchant scope; the pipeline does not verify identity." .
pc:PossibleMatch a pc:Standing; rdfs:label "possible match"; rdfs:comment "Identity linkage is uncertain and cannot justify shared purchase history." .
pc:CompleteDeclared a pc:Standing; rdfs:label "complete declared"; rdfs:comment "The caller declares complete coverage for the named buyer and merchant; native completeness remains unverified." .
pc:Partial a pc:Standing; rdfs:label "partial"; rdfs:comment "Only a retained subset of history is declared." .
pc:MerchantInception a pc:Standing; rdfs:label "merchant inception"; rdfs:comment "The caller declares that history covers merchant inception; an absence of prior orders is otherwise not a first-ever proof." .
pc:PlacedOnly a pc:Standing; rdfs:label "placed only"; rdfs:comment "Only placed orders count as qualifying purchase history." .
pc:PlacedAndCancelled a pc:Standing; rdfs:label "placed and cancelled"; rdfs:comment "Placed and cancelled orders count under this explicitly selected policy." .
pc:PreservePurchase a pc:Standing; rdfs:label "preserve purchase"; rdfs:comment "A refund does not remove the purchase from customer-newness history." .
pc:ResetNewness a pc:Standing; rdfs:label "reset newness"; rdfs:comment "A refund-reset policy that this bounded pipeline does not implement." .
pc:ChargedOrderTotal a pc:Standing; rdfs:label "charged order total"; rdfs:comment "The amount charged for the order, without a net-revenue, refund or profit inference." .
pc:NetProfit a pc:Standing; rdfs:label "net profit"; rdfs:comment "A profit basis that this charged-order pipeline does not qualify." .
pc:DeclaredCompleteHistory a pc:Standing; rdfs:label "declared complete history"; rdfs:comment "First eligible purchase under explicit scoped complete-from-inception history covering the as-of instant." .
pc:ObservedPriorPurchase a pc:Standing; rdfs:label "observed prior purchase"; rdfs:comment "A prior eligible retained purchase supports returning status without proving that all merchant history is present." .
pc:FirstObserved a pc:Standing; rdfs:label "first observed"; rdfs:comment "The first eligible purchase observed in retained data; no first-ever or acquired-by-ad meaning follows." .
pc:Unresolved a pc:Standing; rdfs:label "unresolved"; rdfs:comment "The source/context does not qualify the selected purchase status." .
pc:NotEligible a pc:Standing; rdfs:label "not eligible"; rdfs:comment "This order does not count under the selected explicit purchase eligibility." .
pc:Eligible a pc:Standing; rdfs:label "eligible"; rdfs:comment "The order satisfies the selected lifecycle policy." .
pc:Qualified a pc:Standing; rdfs:label "qualified"; rdfs:comment "The declared contract supports the selected status or monetary value within this bounded evidence frame." .
pc:HistoryIncomplete a pc:Standing; rdfs:label "history incomplete"; rdfs:comment "Partial declared history does not establish a first-ever purchase." .
pc:HistoryDoesNotCoverOrigin a pc:Standing; rdfs:label "history does not cover origin"; rdfs:comment "The declared history starts later than merchant inception and cannot prove first-ever status." .
pc:HistoryDoesNotCoverAsOf a pc:Standing; rdfs:label "history does not cover as of"; rdfs:comment "History coverage ends before the selected as-of." .
pc:ExcludedByEligibilityPolicy a pc:Standing; rdfs:label "excluded by eligibility policy"; rdfs:comment "The order lifecycle is excluded by the chosen explicit eligibility policy." .
pc:UnsupportedRefundPolicy a pc:Standing; rdfs:label "unsupported refund policy"; rdfs:comment "The selected refund behavior is unsupported; no automatic newness reset is inferred." .
pc:AmbiguousPurchaseTie a pc:Standing; rdfs:label "ambiguous purchase tie"; rdfs:comment "Independent qualifying purchases have equal first timestamps without a supported tie policy." .
pc:BuyerIdentityUnqualified a pc:Standing; rdfs:label "buyer identity unqualified"; rdfs:comment "Possible buyer linkage does not qualify stable scoped history." .
pc:ConflictingReportedStatus a pc:Standing; rdfs:label "conflicting reported status"; rdfs:comment "Multiple source-reported statuses remain conflicted instead of selecting favorable revenue." .
pc:PurchaseFieldsUnqualified a pc:Standing; rdfs:label "purchase fields unqualified"; rdfs:comment "A required source order/time/identity/key field is absent, malformed or has multiple distinct RDF terms." .
pc:HistoryContainsUnqualifiedPurchase a pc:Standing; rdfs:label "history contains unqualified purchase"; rdfs:comment "An unresolved retained purchase prevents the absence of earlier qualifying purchases from establishing newness." .
pc:PurchaseScopeMismatch a pc:Standing; rdfs:label "purchase scope mismatch"; rdfs:comment "The selected order does not match the context merchant and buyer." .
pc:ConflictingMonetaryValue a pc:Standing; rdfs:label "conflicting monetary value"; rdfs:comment "Multiple distinct RDF scalar terms prevent selecting one favorable monetary value or currency." .
pc:MonetaryValueUnavailable a pc:Standing; rdfs:label "monetary value unavailable"; rdfs:comment "No complete scalar amount/currency pair is available." .
pc:MonetaryValueUnqualified a pc:Standing; rdfs:label "monetary value unqualified"; rdfs:comment "A negative, malformed or unsupported monetary value cannot contribute a qualified subtotal." .
pc:ReportedStatusUnavailable a pc:Standing; rdfs:label "reported status unavailable"; rdfs:comment "No single supported source-reported status under the selected source policy is available." .
pc:CaptureNotAvailableAtAsOf a pc:Standing; rdfs:label "capture not available at as of"; rdfs:comment "The selected record was captured after the declared as-of instant." .
pc:AmbiguousPurchaseKey a pc:Standing; rdfs:label "ambiguous purchase key"; rdfs:comment "Distinct order handles share a source key in one merchant/buyer scope; this route does not infer a merge." .
pc:UnsupportedMonetaryBasis a pc:Standing; rdfs:label "unsupported monetary basis"; rdfs:comment "The selected monetary basis is outside the supported charged-order total contract." .

@prefix dct: <http://purl.org/dc/terms/> .
pc: dct:title "Commerce purchase classification"; dct:description "Declared order-scoped classification and guarded charged-order totals"; dct:license <https://creativecommons.org/licenses/by/4.0/>; dct:accessRights <https://ontology.inferal.com/modules/publication-access/PublicAccess> .
pc:Unassessed a pc:Standing; rdfs:label "Unassessed"; rdfs:comment "No applicable eligibility or field qualification is established." .
pc:Unspecified a pc:Standing; rdfs:label "Unspecified"; rdfs:comment "No supported eligibility policy is supplied." .
pc:PurchaseAfterAsOf a pc:Standing; rdfs:label "PurchaseAfterAsOf"; rdfs:comment "The order placement is later than the declared as-of." .
pc:UnsupportedEligibilityPolicy a pc:Standing; rdfs:label "UnsupportedEligibilityPolicy"; rdfs:comment "The selected lifecycle eligibility policy is unsupported." .
pc:HistoryDeclarationUnqualified a pc:Standing; rdfs:label "HistoryDeclarationUnqualified"; rdfs:comment "The named history declaration is missing, untyped or not bound to the selected buyer and merchant." .

<https://ontology.inferal.com/modules/commerce-purchase-classification/> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <https://ontology.inferal.com/modules/publication-access/PublicationManagedOntology> .
<https://ontology.inferal.com/modules/commerce-purchase-classification/> <http://purl.org/vocab/vann/preferredNamespacePrefix> "pc" .
<https://ontology.inferal.com/modules/commerce-purchase-classification/> <http://purl.org/vocab/vann/preferredNamespaceUri> "https://ontology.inferal.com/modules/commerce-purchase-classification/" .
