@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:ContextShape a sh:NodeShape; sh:targetClass pc:ClassificationContext; sh:targetSubjectsOf pc:selectedOrder; sh:class pc:ClassificationContext; sh:nodeKind sh:IRI; sh:property [ sh:path pc:buyer; sh:minCount 1; sh:maxCount 1; sh:nodeKind sh:IRI ],
    [ sh:path pc:merchant; sh:minCount 1; sh:maxCount 1; sh:nodeKind sh:IRI ],
    [ sh:path pc:policy; sh:minCount 1; sh:maxCount 1; sh:nodeKind sh:IRI; sh:class pc:ClassificationPolicy; sh:node pc:PolicyShape ],
    [ sh:path pc:history; sh:minCount 1; sh:maxCount 1; sh:nodeKind sh:IRI; sh:node pc:HistoryCardinalityShape ],
    [ sh:path pc:identityStanding; sh:minCount 1; sh:maxCount 1; sh:nodeKind sh:IRI ],
    [ sh:path pc:mode; sh:minCount 1; sh:maxCount 1; sh:nodeKind sh:IRI ],
    [ sh:path pc:asOf; sh:minCount 1; sh:maxCount 1; sh:datatype xsd:dateTimeStamp ],
    [ sh:path pc:selectedOrder; sh:minCount 1; sh:maxCount 10000; sh:nodeKind sh:IRI ] .
pc:PolicyShape a sh:NodeShape; sh:targetClass pc:ClassificationPolicy; sh:nodeKind sh:IRI; sh:property [ sh:path pc:eligibilityPolicy; sh:minCount 1; sh:maxCount 1; sh:nodeKind sh:IRI ], [ sh:path pc:refundTreatment; sh:minCount 1; sh:maxCount 1; sh:nodeKind sh:IRI ], [ sh:path pc:monetaryBasis; sh:minCount 1; sh:maxCount 1; sh:nodeKind sh:IRI ] .
pc:HistoryShape a sh:NodeShape; sh:targetClass pc:HistoryDeclaration; sh:nodeKind sh:IRI; sh:property [ sh:path pc:buyer; sh:minCount 1; sh:maxCount 1; sh:nodeKind sh:IRI ], [ sh:path pc:merchant; sh:minCount 1; sh:maxCount 1; sh:nodeKind sh:IRI ], [ sh:path pc:historyCoverage; sh:minCount 1; sh:maxCount 1; sh:nodeKind sh:IRI ], [ sh:path pc:historyStart; sh:minCount 1; sh:maxCount 1; sh:or ([sh:nodeKind sh:IRI] [sh:datatype xsd:dateTimeStamp]) ], [ sh:path pc:historyThrough; sh:minCount 1; sh:maxCount 1; sh:datatype xsd:dateTimeStamp ] .

pc:HistoryCardinalityShape a sh:NodeShape; sh:property [ sh:path pc:buyer; sh:maxCount 1 ], [ sh:path pc:merchant; sh:maxCount 1 ], [ sh:path pc:historyCoverage; sh:maxCount 1 ], [ sh:path pc:historyStart; sh:maxCount 1 ], [ sh:path pc:historyThrough; sh:maxCount 1 ] .
