# SHACL Shapes generated by @inferal-relay/rdf-emitter

@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix tsps: <https://relay.inferal.com/ontology/typespec/shapes/> .
@prefix tspv: <https://relay.inferal.com/ontology/typespec/versioning/> .
@prefix schema: <https://schema.org/> .
@prefix gr: <http://purl.org/goodrelations/v1#> .
@prefix gs1: <https://www.gs1.org/voc/> .
@prefix woo: <https://relay.inferal.com/ontology/woocommerce/> .
@prefix woocommerce: <https://relay.inferal.com/ontology/woocommerce/> .

# Class hierarchy
woo:SelfLink rdfs:subClassOf schema:URL .
woo:CollectionLink rdfs:subClassOf schema:URL .
woo:Metadata rdfs:subClassOf schema:PropertyValue .
woo:Image rdfs:subClassOf schema:ImageObject .
woo:BillingAddress rdfs:subClassOf schema:PostalAddress .
woo:ShippingAddress rdfs:subClassOf schema:PostalAddress .
woo:Error rdfs:subClassOf schema:Thing .
woo:ProductCategoryRef rdfs:subClassOf schema:CategoryCode .
woo:ProductTagRef rdfs:subClassOf schema:DefinedTerm .
woo:ProductImage rdfs:subClassOf schema:ImageObject .
woo:ProductAttribute rdfs:subClassOf schema:PropertyValue .
woo:DefaultAttribute rdfs:subClassOf schema:PropertyValue .
woo:ProductDownload rdfs:subClassOf schema:DigitalDocument .
woo:ProductDimensions rdfs:subClassOf schema:QuantitativeValue .
woo:ProductMetadata rdfs:subClassOf schema:PropertyValue .
woo:CategoryImage rdfs:subClassOf schema:ImageObject .
woo:ProductCategory rdfs:subClassOf schema:CategoryCode .
woo:ProductTag rdfs:subClassOf schema:DefinedTerm .
woo:Product rdfs:subClassOf gr:ProductOrService, schema:Product .
woo:ProductShippingClass rdfs:subClassOf schema:DefinedTerm .
woo:ProductVariation rdfs:subClassOf schema:ProductModel .
woo:ProductAttributeTaxonomy rdfs:subClassOf schema:PropertyValueSpecification .
woo:ProductAttributeTerm rdfs:subClassOf schema:DefinedTerm .
woo:OrderLineItem rdfs:subClassOf schema:OrderItem .
woo:OrderItemTax rdfs:subClassOf schema:PriceSpecification .
woo:ShippingLine rdfs:subClassOf schema:ParcelDelivery .
woo:TaxLine rdfs:subClassOf schema:PriceSpecification .
woo:TaxRate rdfs:subClassOf schema:PriceSpecification .
woo:FeeLine rdfs:subClassOf schema:PriceSpecification .
woo:CouponLine rdfs:subClassOf schema:Offer .
woo:OrderRefundLine rdfs:subClassOf schema:MonetaryAmount .
woo:Refund rdfs:subClassOf schema:Order .
woo:Order rdfs:subClassOf schema:Order .
woo:Customer rdfs:subClassOf schema:Person .
woo:OrderNote rdfs:subClassOf schema:Comment .
woo:CustomerDownload rdfs:subClassOf schema:DownloadAction .
woo:CustomerDownloadFile rdfs:subClassOf schema:MediaObject .
woo:ProductReview rdfs:subClassOf schema:Review .
woo:ProductReviewInput rdfs:subClassOf schema:Review .
woo:ProductShippingClassInput rdfs:subClassOf schema:DefinedTerm .
woo:Report rdfs:subClassOf schema:Report .
woo:SalesReport rdfs:subClassOf schema:Report .
woo:SalesReportPeriod rdfs:subClassOf schema:QuantitativeValue .
woo:TopSellersReportItem rdfs:subClassOf schema:ListItem .
woo:ReportTotalsItem rdfs:subClassOf schema:QuantitativeValue .
woo:Coupon rdfs:subClassOf schema:Offer .
woo:TaxClass rdfs:subClassOf schema:DefinedTerm .
woo:ShippingMethod rdfs:subClassOf schema:DeliveryMethod .
woo:ShippingZone rdfs:subClassOf schema:DeliveryChargeSpecification .
woo:ShippingZoneLocation rdfs:subClassOf schema:GeoShape .
woo:ShippingZoneMethodSetting rdfs:subClassOf schema:PropertyValue .
woo:ShippingZoneMethod rdfs:subClassOf schema:DeliveryMethod .
woo:SettingOptionsLink rdfs:subClassOf schema:URL .
woo:SettingGroup rdfs:subClassOf schema:Thing .
woo:SettingOption rdfs:subClassOf schema:PropertyValue .
woo:PaymentGatewaySetting rdfs:subClassOf schema:PropertyValue .
woo:PaymentGateway rdfs:subClassOf schema:PaymentMethod .
woo:Webhook rdfs:subClassOf schema:Thing .
woo:WebhookCreateInput rdfs:subClassOf woo:Webhook .
woo:WebhookUpdateInput rdfs:subClassOf woo:Webhook .
woo:SystemStatusEnvironment rdfs:subClassOf schema:SoftwareApplication .
woo:SystemStatusDatabase rdfs:subClassOf schema:DataCatalog .
woo:SystemStatusActivePlugin rdfs:subClassOf schema:SoftwareApplication .
woo:SystemStatusThemeOverride rdfs:subClassOf schema:DigitalDocument .
woo:SystemStatusTheme rdfs:subClassOf schema:SoftwareApplication .
woo:SystemStatusPage rdfs:subClassOf schema:WebPage .
woo:SystemStatus rdfs:subClassOf schema:SoftwareApplication .
woo:SystemStatusTool rdfs:subClassOf schema:Action .
woo:DataEndpoint rdfs:subClassOf schema:EntryPoint .
woo:State rdfs:subClassOf schema:State .
woo:ContinentCountry rdfs:subClassOf schema:Country .
woo:Continent rdfs:subClassOf schema:Continent .
woo:Country rdfs:subClassOf schema:Country .
woo:Currency rdfs:subClassOf schema:Thing .

<https://relay.inferal.com/ontology/woocommerce/shapes> a tsps:ShapeGeneration ;
  tsps:shapeReferenceChainLimit 5 ;
  tsps:omittedShapeReferenceCount 10
  ;
  tsps:omittedShapeReference [
    tsps:referenceFrom woo:OrderCreatedEventShape ;
    tsps:referenceTo woo:OrderLineItemShape ;
    tsps:omittedBecause "over-long"
  ] ;
  tsps:omittedShapeReference [
    tsps:referenceFrom woo:OrderInputShape ;
    tsps:referenceTo woo:OrderLineItemInputShape ;
    tsps:omittedBecause "over-long"
  ] ;
  tsps:omittedShapeReference [
    tsps:referenceFrom woo:OrderRestoredEventShape ;
    tsps:referenceTo woo:OrderLineItemShape ;
    tsps:omittedBecause "over-long"
  ] ;
  tsps:omittedShapeReference [
    tsps:referenceFrom woo:OrderShape ;
    tsps:referenceTo woo:OrderLineItemShape ;
    tsps:omittedBecause "over-long"
  ] ;
  tsps:omittedShapeReference [
    tsps:referenceFrom woo:OrderShape ;
    tsps:referenceTo woo:OrderShape ;
    tsps:omittedBecause "cycle"
  ] ;
  tsps:omittedShapeReference [
    tsps:referenceFrom woo:OrderUpdatedEventShape ;
    tsps:referenceTo woo:OrderLineItemShape ;
    tsps:omittedBecause "over-long"
  ] ;
  tsps:omittedShapeReference [
    tsps:referenceFrom woo:ProductBrandShape ;
    tsps:referenceTo woo:ProductBrandShape ;
    tsps:omittedBecause "cycle"
  ] ;
  tsps:omittedShapeReference [
    tsps:referenceFrom woo:ProductCategoryShape ;
    tsps:referenceTo woo:ProductCategoryShape ;
    tsps:omittedBecause "cycle"
  ] ;
  tsps:omittedShapeReference [
    tsps:referenceFrom woo:ProductShape ;
    tsps:referenceTo woo:ProductShape ;
    tsps:omittedBecause "cycle"
  ] ;
  tsps:omittedShapeReference [
    tsps:referenceFrom woo:RefundShape ;
    tsps:referenceTo woo:OrderLineItemShape ;
    tsps:omittedBecause "over-long"
  ] .

# Shape for Self Link
woo:SelfLinkShape a sh:NodeShape ;
  sh:targetClass woo:SelfLink ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SelfLink/href> ;
    sh:name "href" ;
    sh:description "URL to the resource" ;
    sh:datatype xsd:anyURI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Collection Link
woo:CollectionLinkShape a sh:NodeShape ;
  sh:targetClass woo:CollectionLink ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CollectionLink/href> ;
    sh:name "href" ;
    sh:description "URL to the collection" ;
    sh:datatype xsd:anyURI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Links
woo:LinksShape a sh:NodeShape ;
  sh:targetClass woo:Links ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Links/self> ;
    sh:name "self" ;
    sh:description "Link to this resource" ;
    sh:node woo:SelfLinkShape ;
    sh:class woo:SelfLink ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Links/collection> ;
    sh:name "collection" ;
    sh:description "Link to the collection" ;
    sh:node woo:CollectionLinkShape ;
    sh:class woo:CollectionLink ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Metadata
woo:MetadataShape a sh:NodeShape ;
  sh:targetClass woo:Metadata ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Metadata/metaIdentifier> ;
    sh:name "meta identifier" ;
    sh:description "Metadata ID" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Metadata/key> ;
    sh:name "key" ;
    sh:description "Metadata key" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Metadata/value> ;
    sh:name "value" ;
    sh:description "Metadata value" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Metadata/displayKey> ;
    sh:name "display key" ;
    sh:description "Meta key for UI display" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Metadata/displayValue> ;
    sh:name "display value" ;
    sh:description "Meta value for UI display" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Image
woo:ImageShape a sh:NodeShape ;
  sh:targetClass woo:Image ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Image/imageIdentifier> ;
    sh:name "image identifier" ;
    sh:description "Image ID" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Image/src> ;
    sh:name "src" ;
    sh:description "Image URL" ;
    sh:datatype xsd:anyURI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Image/name> ;
    sh:name "name" ;
    sh:description "Image name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Image/alt> ;
    sh:name "alt" ;
    sh:description "Image alt text" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Image/dateCreated> ;
    sh:name "date created" ;
    sh:description "The date the image was created (in the site's timezone)" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Image/dateModified> ;
    sh:name "date modified" ;
    sh:description "The date the image was last modified (in the site's timezone)" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] .

# Shape for Billing Address
woo:BillingAddressShape a sh:NodeShape ;
  sh:targetClass woo:BillingAddress ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.BillingAddress/firstName> ;
    sh:name "first name" ;
    sh:description "First name" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.BillingAddress/lastName> ;
    sh:name "last name" ;
    sh:description "Last name" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.BillingAddress/company> ;
    sh:name "company" ;
    sh:description "Company name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.BillingAddress/address1> ;
    sh:name "address1" ;
    sh:description "Address line 1" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.BillingAddress/address2> ;
    sh:name "address2" ;
    sh:description "Address line 2" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.BillingAddress/city> ;
    sh:name "city" ;
    sh:description "City" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.BillingAddress/state> ;
    sh:name "state" ;
    sh:description "State/Province code" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.BillingAddress/postcode> ;
    sh:name "postcode" ;
    sh:description "Postal/ZIP code" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.BillingAddress/country> ;
    sh:name "country" ;
    sh:description "Country code (ISO 3166-1 alpha-2)" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.BillingAddress/email> ;
    sh:name "email" ;
    sh:description "Email address" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.BillingAddress/phone> ;
    sh:name "phone" ;
    sh:description "Phone number" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Shipping Address
woo:ShippingAddressShape a sh:NodeShape ;
  sh:targetClass woo:ShippingAddress ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingAddress/firstName> ;
    sh:name "first name" ;
    sh:description "First name" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingAddress/lastName> ;
    sh:name "last name" ;
    sh:description "Last name" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingAddress/company> ;
    sh:name "company" ;
    sh:description "Company name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingAddress/address1> ;
    sh:name "address1" ;
    sh:description "Address line 1" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingAddress/address2> ;
    sh:name "address2" ;
    sh:description "Address line 2" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingAddress/city> ;
    sh:name "city" ;
    sh:description "City" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingAddress/state> ;
    sh:name "state" ;
    sh:description "State/Province code" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingAddress/postcode> ;
    sh:name "postcode" ;
    sh:description "Postal/ZIP code" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingAddress/country> ;
    sh:name "country" ;
    sh:description "Country code (ISO 3166-1 alpha-2)" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingAddress/phone> ;
    sh:name "phone" ;
    sh:description "Phone number" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Woo Commerce Error
woo:ErrorShape a sh:NodeShape ;
  sh:targetClass woo:Error ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.WooCommerceError/code> ;
    sh:name "code" ;
    sh:description "Error code" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.WooCommerceError/message> ;
    sh:name "message" ;
    sh:description "Human-readable error message" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.WooCommerceError/data> ;
    sh:name "data" ;
    sh:description "Additional error data" ;
    sh:node <https://relay.inferal.com/ontology/woocommerce/inline/WooCommerce.WooCommerceError/dataShape> ;
    sh:class <https://relay.inferal.com/ontology/woocommerce/inline/WooCommerce.WooCommerceError/data> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Product Category Ref
woo:ProductCategoryRefShape a sh:NodeShape ;
  sh:targetClass woo:ProductCategoryRef ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductCategoryRef/id> ;
    sh:name "id" ;
    sh:description "Category ID" ;
    sh:datatype xsd:long ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductCategoryRef/name> ;
    sh:name "name" ;
    sh:description "Category name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductCategoryRef/slug> ;
    sh:name "slug" ;
    sh:description "Category slug" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Product Tag Ref
woo:ProductTagRefShape a sh:NodeShape ;
  sh:targetClass woo:ProductTagRef ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductTagRef/id> ;
    sh:name "id" ;
    sh:description "Tag ID" ;
    sh:datatype xsd:long ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductTagRef/name> ;
    sh:name "name" ;
    sh:description "Tag name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductTagRef/slug> ;
    sh:name "slug" ;
    sh:description "Tag slug" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Product Image
woo:ProductImageShape a sh:NodeShape ;
  sh:targetClass woo:ProductImage ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductImage/imageIdentifier> ;
    sh:name "image identifier" ;
    sh:description "Image ID (attachment ID from Media Library)" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductImage/dateCreated> ;
    sh:name "date created" ;
    sh:description "The date the image was created, in the site's timezone" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductImage/dateCreatedGmt> ;
    sh:name "date created gmt" ;
    sh:description "The date the image was created, as GMT" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductImage/dateModified> ;
    sh:name "date modified" ;
    sh:description "The date the image was last modified, in the site's timezone" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductImage/dateModifiedGmt> ;
    sh:name "date modified gmt" ;
    sh:description "The date the image was last modified, as GMT" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductImage/src> ;
    sh:name "src" ;
    sh:description "Image URL" ;
    sh:datatype xsd:anyURI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductImage/name> ;
    sh:name "name" ;
    sh:description "Image name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductImage/alt> ;
    sh:name "alt" ;
    sh:description "Image alternative text" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Product Attribute
woo:ProductAttributeShape a sh:NodeShape ;
  sh:targetClass woo:ProductAttribute ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductAttribute/attributeIdentifier> ;
    sh:name "attribute identifier" ;
    sh:description "Attribute ID (0 for custom product attribute)" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductAttribute/name> ;
    sh:name "name" ;
    sh:description "Attribute name" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductAttribute/position> ;
    sh:name "position" ;
    sh:description "Attribute position in list" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductAttribute/visible> ;
    sh:name "visible" ;
    sh:description "Whether visible on product page" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductAttribute/variation> ;
    sh:name "variation" ;
    sh:description "Whether used for variations" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductAttribute/options> ;
    sh:name "options" ;
    sh:description "List of attribute term values" ;
    sh:datatype xsd:string ;
  ] .

# Shape for Default Attribute
woo:DefaultAttributeShape a sh:NodeShape ;
  sh:targetClass woo:DefaultAttribute ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.DefaultAttribute/attributeIdentifier> ;
    sh:name "attribute identifier" ;
    sh:description "Attribute ID (0 for custom product attribute)" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.DefaultAttribute/name> ;
    sh:name "name" ;
    sh:description "Attribute name" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.DefaultAttribute/option> ;
    sh:name "option" ;
    sh:description "Selected attribute term" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Product Download
woo:ProductDownloadShape a sh:NodeShape ;
  sh:targetClass woo:ProductDownload ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductDownload/downloadIdentifier> ;
    sh:name "download identifier" ;
    sh:description "Download ID (MD5 hash)" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductDownload/name> ;
    sh:name "name" ;
    sh:description "Download file name" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductDownload/file> ;
    sh:name "file" ;
    sh:description "Download file URL" ;
    sh:datatype xsd:anyURI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Product Dimensions
woo:ProductDimensionsShape a sh:NodeShape ;
  sh:targetClass woo:ProductDimensions ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductDimensions/length> ;
    sh:name "length" ;
    sh:description "Length" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductDimensions/width> ;
    sh:name "width" ;
    sh:description "Width" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductDimensions/height> ;
    sh:name "height" ;
    sh:description "Height" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Product Metadata
woo:ProductMetadataShape a sh:NodeShape ;
  sh:targetClass woo:ProductMetadata ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductMetadata/metaIdentifier> ;
    sh:name "meta identifier" ;
    sh:description "Meta ID" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductMetadata/key> ;
    sh:name "key" ;
    sh:description "Meta key" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductMetadata/value> ;
    sh:name "value" ;
    sh:description "Meta value" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Category Image
woo:CategoryImageShape a sh:NodeShape ;
  sh:targetClass woo:CategoryImage ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CategoryImage/imageIdentifier> ;
    sh:name "image identifier" ;
    sh:description "Image ID" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CategoryImage/dateCreated> ;
    sh:name "date created" ;
    sh:description "The date the image was created, in the site's timezone" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CategoryImage/dateCreatedGmt> ;
    sh:name "date created gmt" ;
    sh:description "The date the image was created, as GMT" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CategoryImage/dateModified> ;
    sh:name "date modified" ;
    sh:description "The date the image was last modified, in the site's timezone" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CategoryImage/dateModifiedGmt> ;
    sh:name "date modified gmt" ;
    sh:description "The date the image was last modified, as GMT" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CategoryImage/src> ;
    sh:name "src" ;
    sh:description "Image URL" ;
    sh:datatype xsd:anyURI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CategoryImage/name> ;
    sh:name "name" ;
    sh:description "Image name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CategoryImage/alt> ;
    sh:name "alt" ;
    sh:description "Image alternative text" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Product Category
woo:ProductCategoryShape a sh:NodeShape ;
  sh:targetClass woo:ProductCategory ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductCategory/id> ;
    sh:name "id" ;
    sh:description "Unique identifier for the resource" ;
    sh:datatype xsd:long ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductCategory/name> ;
    sh:name "name" ;
    sh:description "Category name" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductCategory/slug> ;
    sh:name "slug" ;
    sh:description "An alphanumeric identifier for the resource unique to its type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductCategory/parent> ;
    sh:name "parent" ;
    sh:description "The ID for the parent of the resource" ;
    sh:class woo:ProductCategory ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductCategory/description> ;
    sh:name "description" ;
    sh:description "HTML description of the resource" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductCategory/display> ;
    sh:name "display" ;
    sh:description "Category archive display type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "default" "products" "subcategories" "both" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductCategory/image> ;
    sh:name "image" ;
    sh:description "Image data" ;
    sh:node woo:CategoryImageShape ;
    sh:class woo:CategoryImage ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductCategory/menuOrder> ;
    sh:name "menu order" ;
    sh:description "Menu order, used to custom sort the resource" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductCategory/count> ;
    sh:name "count" ;
    sh:description "Number of published products for the resource" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductCategory/links> ;
    sh:name "links" ;
    sh:description "HAL links" ;
    sh:node woo:LinksShape ;
    sh:class woo:Links ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Product Category Input
woo:ProductCategoryInputShape a sh:NodeShape ;
  sh:targetClass woo:ProductCategoryInput ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductCategoryInput/name> ;
    sh:name "name" ;
    sh:description "Category name" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductCategoryInput/slug> ;
    sh:name "slug" ;
    sh:description "An alphanumeric identifier for the resource unique to its type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductCategoryInput/parent> ;
    sh:name "parent" ;
    sh:description "The ID for the parent of the resource" ;
    sh:node woo:ProductCategoryShape ;
    sh:class woo:ProductCategory ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductCategoryInput/description> ;
    sh:name "description" ;
    sh:description "HTML description of the resource" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductCategoryInput/display> ;
    sh:name "display" ;
    sh:description "Category archive display type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "default" "products" "subcategories" "both" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductCategoryInput/image> ;
    sh:name "image" ;
    sh:description "Image data" ;
    sh:node woo:CategoryImageShape ;
    sh:class woo:CategoryImage ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Product Tag
woo:ProductTagShape a sh:NodeShape ;
  sh:targetClass woo:ProductTag ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductTag/id> ;
    sh:name "id" ;
    sh:description "Unique identifier" ;
    sh:datatype xsd:long ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductTag/name> ;
    sh:name "name" ;
    sh:description "Tag name" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductTag/slug> ;
    sh:name "slug" ;
    sh:description "URL-friendly slug" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductTag/description> ;
    sh:name "description" ;
    sh:description "Description" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductTag/count> ;
    sh:name "count" ;
    sh:description "Number of products with this tag" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductTag/links> ;
    sh:name "links" ;
    sh:description "HAL links" ;
    sh:node woo:LinksShape ;
    sh:class woo:Links ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Product Tag Input
woo:ProductTagInputShape a sh:NodeShape ;
  sh:targetClass woo:ProductTagInput ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductTagInput/name> ;
    sh:name "name" ;
    sh:description "Tag name" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductTagInput/slug> ;
    sh:name "slug" ;
    sh:description "URL-friendly slug" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductTagInput/description> ;
    sh:name "description" ;
    sh:description "Description" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Product Brand
woo:ProductBrandShape a sh:NodeShape ;
  sh:targetClass woo:ProductBrand ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductBrand/id> ;
    sh:name "id" ;
    sh:description "Unique identifier for the resource" ;
    sh:datatype xsd:long ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductBrand/name> ;
    sh:name "name" ;
    sh:description "Brand name" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductBrand/slug> ;
    sh:name "slug" ;
    sh:description "An alphanumeric identifier for the resource unique to its type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductBrand/parent> ;
    sh:name "parent" ;
    sh:description "The ID for the parent of the resource" ;
    sh:class woo:ProductBrand ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductBrand/description> ;
    sh:name "description" ;
    sh:description "HTML description of the resource" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductBrand/display> ;
    sh:name "display" ;
    sh:description "Brand archive display type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "default" "products" "subcategories" "both" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductBrand/image> ;
    sh:name "image" ;
    sh:description "Image data" ;
    sh:node woo:CategoryImageShape ;
    sh:class woo:CategoryImage ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductBrand/menuOrder> ;
    sh:name "menu order" ;
    sh:description "Menu order, used to custom sort the resource" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductBrand/count> ;
    sh:name "count" ;
    sh:description "Number of published products for the resource" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductBrand/links> ;
    sh:name "links" ;
    sh:description "HAL links" ;
    sh:node woo:LinksShape ;
    sh:class woo:Links ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Product Brand Input
woo:ProductBrandInputShape a sh:NodeShape ;
  sh:targetClass woo:ProductBrandInput ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductBrandInput/name> ;
    sh:name "name" ;
    sh:description "Brand name" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductBrandInput/slug> ;
    sh:name "slug" ;
    sh:description "An alphanumeric identifier for the resource unique to its type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductBrandInput/parent> ;
    sh:name "parent" ;
    sh:description "The ID for the parent of the resource" ;
    sh:node woo:ProductBrandShape ;
    sh:class woo:ProductBrand ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductBrandInput/description> ;
    sh:name "description" ;
    sh:description "HTML description of the resource" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductBrandInput/display> ;
    sh:name "display" ;
    sh:description "Brand archive display type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "default" "products" "subcategories" "both" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductBrandInput/image> ;
    sh:name "image" ;
    sh:description "Image data" ;
    sh:node woo:CategoryImageShape ;
    sh:class woo:CategoryImage ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductBrandInput/menuOrder> ;
    sh:name "menu order" ;
    sh:description "Menu order, used to custom sort the resource" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Product
woo:ProductShape a sh:NodeShape ;
  sh:targetClass woo:Product ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/id> ;
    sh:name "id" ;
    sh:description "Unique identifier for the resource" ;
    sh:datatype xsd:long ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/name> ;
    sh:name "name" ;
    sh:description "Product name" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/slug> ;
    sh:name "slug" ;
    sh:description "URL-friendly slug" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/permalink> ;
    sh:name "permalink" ;
    sh:description "Product URL" ;
    sh:datatype xsd:anyURI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/dateCreated> ;
    sh:name "date created" ;
    sh:description "The date the product was created, in the site's timezone" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/dateCreatedGmt> ;
    sh:name "date created gmt" ;
    sh:description "The date the product was created, as GMT" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/dateModified> ;
    sh:name "date modified" ;
    sh:description "The date the product was last modified, in the site's timezone" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/dateModifiedGmt> ;
    sh:name "date modified gmt" ;
    sh:description "The date the product was last modified, as GMT" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/type> ;
    sh:name "type" ;
    sh:description "Product type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "simple" "grouped" "external" "variable" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/status> ;
    sh:name "status" ;
    sh:description "Product status (post status)" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "publish" "draft" "pending" "private" "auto-draft" "trash" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/featured> ;
    sh:name "featured" ;
    sh:description "Featured product" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/catalogVisibility> ;
    sh:name "catalog visibility" ;
    sh:description "Catalog visibility" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "visible" "catalog" "search" "hidden" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/description> ;
    sh:name "description" ;
    sh:description "Product description" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/shortDescription> ;
    sh:name "short description" ;
    sh:description "Product short description" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/sku> ;
    sh:name "sku" ;
    sh:description "Unique identifier (Stock Keeping Unit)" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/globalUniqueId> ;
    sh:name "global unique id" ;
    sh:description "Global product identifier" ;
    sh:datatype xsd:string ;
    sh:or (
      [ sh:datatype xsd:string ; sh:pattern "^\\d{8}$|^\\d{12,14}$" ]
      [ sh:datatype xsd:string ; sh:pattern "^\\d{8}$|^\\d{12}$" ]
      [ sh:datatype xsd:string ; sh:pattern "^\\d{8}$|^\\d{13}$" ]
      [ sh:datatype xsd:string ; sh:pattern "^[\\d-]{10,17}$|^\\d{9}[\\dX]$" ]
    ) ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/price> ;
    sh:name "price" ;
    sh:description "Current product price" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/regularPrice> ;
    sh:name "regular price" ;
    sh:description "Product regular price" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/salePrice> ;
    sh:name "sale price" ;
    sh:description "Product sale price" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/dateOnSaleFrom> ;
    sh:name "date on sale from" ;
    sh:description "Start date of sale price, in the site's timezone" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/dateOnSaleFromGmt> ;
    sh:name "date on sale from gmt" ;
    sh:description "Start date of sale price, as GMT" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/dateOnSaleTo> ;
    sh:name "date on sale to" ;
    sh:description "End date of sale price, in the site's timezone" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/dateOnSaleToGmt> ;
    sh:name "date on sale to gmt" ;
    sh:description "End date of sale price, as GMT" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/priceHtml> ;
    sh:name "price html" ;
    sh:description "Price formatted in HTML" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/onSale> ;
    sh:name "on sale" ;
    sh:description "Shows if the product is on sale" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/purchasable> ;
    sh:name "purchasable" ;
    sh:description "Shows if the product can be bought" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/totalSales> ;
    sh:name "total sales" ;
    sh:description "Amount of sales" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/virtual> ;
    sh:name "virtual" ;
    sh:description "If the product is virtual (no shipping)" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/downloadable> ;
    sh:name "downloadable" ;
    sh:description "If the product is downloadable" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/downloads> ;
    sh:name "downloads" ;
    sh:description "List of downloadable files" ;
    sh:node woo:ProductDownloadShape ;
    sh:class woo:ProductDownload ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/downloadLimit> ;
    sh:name "download limit" ;
    sh:description "Number of times downloadable files can be downloaded after purchase. Default is -1." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/downloadExpiry> ;
    sh:name "download expiry" ;
    sh:description "Number of days until access to downloadable files expires. Default is -1." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/externalUrl> ;
    sh:name "external url" ;
    sh:description "Product external URL. Only for external products." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/buttonText> ;
    sh:name "button text" ;
    sh:description "Product external button text. Only for external products." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/taxStatus> ;
    sh:name "tax status" ;
    sh:description "Tax status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "taxable" "shipping" "none" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/taxClass> ;
    sh:name "tax class" ;
    sh:description "Tax class" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/manageStock> ;
    sh:name "manage stock" ;
    sh:description "Stock management at product level" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/stockQuantity> ;
    sh:name "stock quantity" ;
    sh:description "Stock quantity" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/stockStatus> ;
    sh:name "stock status" ;
    sh:description "Controls the stock status of the product" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "instock" "outofstock" "onbackorder" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/backorders> ;
    sh:name "backorders" ;
    sh:description "If managing stock, this controls if backorders are allowed" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "no" "notify" "yes" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/backordersAllowed> ;
    sh:name "backorders allowed" ;
    sh:description "Shows if backorders are allowed" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/backordered> ;
    sh:name "backordered" ;
    sh:description "Shows if the product is on backordered" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/soldIndividually> ;
    sh:name "sold individually" ;
    sh:description "Allow one item to be bought in a single order" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/weight> ;
    sh:name "weight" ;
    sh:description "Product weight" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/dimensions> ;
    sh:name "dimensions" ;
    sh:description "Product dimensions" ;
    sh:node woo:ProductDimensionsShape ;
    sh:class woo:ProductDimensions ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/shippingRequired> ;
    sh:name "shipping required" ;
    sh:description "Shows if the product need to be shipped" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/shippingTaxable> ;
    sh:name "shipping taxable" ;
    sh:description "Shows whether or not the product shipping is taxable" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/shippingClass> ;
    sh:name "shipping class" ;
    sh:description "Shipping class slug" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/shippingClassId> ;
    sh:name "shipping class id" ;
    sh:description "Shipping class ID" ;
    sh:node woo:ProductShippingClassShape ;
    sh:class woo:ProductShippingClass ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/reviewsAllowed> ;
    sh:name "reviews allowed" ;
    sh:description "Allow reviews" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/averageRating> ;
    sh:name "average rating" ;
    sh:description "Reviews average rating" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/ratingCount> ;
    sh:name "rating count" ;
    sh:description "Amount of reviews that the product have" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/relatedProducts> ;
    sh:name "related products" ;
    sh:description "List of related products" ;
    sh:class woo:Product ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/upsellProducts> ;
    sh:name "upsell products" ;
    sh:description "List of up-sell products" ;
    sh:class woo:Product ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/crossSellProducts> ;
    sh:name "cross sell products" ;
    sh:description "List of cross-sell products" ;
    sh:class woo:Product ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/parent> ;
    sh:name "parent" ;
    sh:description "Parent product" ;
    sh:class woo:Product ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/purchaseNote> ;
    sh:name "purchase note" ;
    sh:description "Optional note to send the customer after purchase" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/categories> ;
    sh:name "categories" ;
    sh:description "List of categories" ;
    sh:node woo:ProductCategoryRefShape ;
    sh:class woo:ProductCategoryRef ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/tags> ;
    sh:name "tags" ;
    sh:description "List of tags" ;
    sh:node woo:ProductTagRefShape ;
    sh:class woo:ProductTagRef ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/images> ;
    sh:name "images" ;
    sh:description "List of images" ;
    sh:node woo:ProductImageShape ;
    sh:class woo:ProductImage ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/attributes> ;
    sh:name "attributes" ;
    sh:description "List of attributes" ;
    sh:node woo:ProductAttributeShape ;
    sh:class woo:ProductAttribute ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/defaultAttributes> ;
    sh:name "default attributes" ;
    sh:description "Defaults variation attributes" ;
    sh:node woo:DefaultAttributeShape ;
    sh:class woo:DefaultAttribute ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/variations> ;
    sh:name "variations" ;
    sh:description "List of variation IDs" ;
    sh:node woo:ProductVariationShape ;
    sh:class woo:ProductVariation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/groupedProducts> ;
    sh:name "grouped products" ;
    sh:description "List of grouped product IDs" ;
    sh:class woo:Product ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/menuOrder> ;
    sh:name "menu order" ;
    sh:description "Menu order, used to custom sort products" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/metaData> ;
    sh:name "meta data" ;
    sh:description "Meta data" ;
    sh:node woo:ProductMetadataShape ;
    sh:class woo:ProductMetadata ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Product/links> ;
    sh:name "links" ;
    sh:description "HAL links" ;
    sh:node woo:LinksShape ;
    sh:class woo:Links ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Product Shipping Class
woo:ProductShippingClassShape a sh:NodeShape ;
  sh:targetClass woo:ProductShippingClass ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductShippingClass/id> ;
    sh:name "id" ;
    sh:description "Unique identifier for the resource" ;
    sh:datatype xsd:long ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductShippingClass/name> ;
    sh:name "name" ;
    sh:description "Shipping class name" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductShippingClass/slug> ;
    sh:name "slug" ;
    sh:description "An alphanumeric identifier for the resource unique to its type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductShippingClass/description> ;
    sh:name "description" ;
    sh:description "HTML description of the resource" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductShippingClass/count> ;
    sh:name "count" ;
    sh:description "Number of published products for the resource" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductShippingClass/links> ;
    sh:name "links" ;
    sh:description "HAL links" ;
    sh:node woo:LinksShape ;
    sh:class woo:Links ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Product Variation
woo:ProductVariationShape a sh:NodeShape ;
  sh:targetClass woo:ProductVariation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariation/id> ;
    sh:name "id" ;
    sh:description "Unique identifier" ;
    sh:datatype xsd:long ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariation/dateCreated> ;
    sh:name "date created" ;
    sh:description "The date the variation was created, in the site's timezone" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariation/dateCreatedGmt> ;
    sh:name "date created gmt" ;
    sh:description "The date the variation was created, as GMT" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariation/dateModified> ;
    sh:name "date modified" ;
    sh:description "The date the variation was last modified, in the site's timezone" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariation/dateModifiedGmt> ;
    sh:name "date modified gmt" ;
    sh:description "The date the variation was last modified, as GMT" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariation/description> ;
    sh:name "description" ;
    sh:description "Variation description" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariation/permalink> ;
    sh:name "permalink" ;
    sh:description "Variation URL" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariation/sku> ;
    sh:name "sku" ;
    sh:description "SKU" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariation/globalUniqueId> ;
    sh:name "global unique id" ;
    sh:description "Global product identifier" ;
    sh:datatype xsd:string ;
    sh:or (
      [ sh:datatype xsd:string ; sh:pattern "^\\d{8}$|^\\d{12,14}$" ]
      [ sh:datatype xsd:string ; sh:pattern "^\\d{8}$|^\\d{12}$" ]
      [ sh:datatype xsd:string ; sh:pattern "^\\d{8}$|^\\d{13}$" ]
      [ sh:datatype xsd:string ; sh:pattern "^[\\d-]{10,17}$|^\\d{9}[\\dX]$" ]
    ) ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariation/price> ;
    sh:name "price" ;
    sh:description "Current price" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariation/regularPrice> ;
    sh:name "regular price" ;
    sh:description "Regular price" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariation/salePrice> ;
    sh:name "sale price" ;
    sh:description "Sale price" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariation/dateOnSaleFrom> ;
    sh:name "date on sale from" ;
    sh:description "Start date of sale price, in the site's timezone" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariation/dateOnSaleFromGmt> ;
    sh:name "date on sale from gmt" ;
    sh:description "Start date of sale price, as GMT" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariation/dateOnSaleTo> ;
    sh:name "date on sale to" ;
    sh:description "End date of sale price, in the site's timezone" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariation/dateOnSaleToGmt> ;
    sh:name "date on sale to gmt" ;
    sh:description "End date of sale price, as GMT" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariation/onSale> ;
    sh:name "on sale" ;
    sh:description "Shows if the variation is on sale" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariation/status> ;
    sh:name "status" ;
    sh:description "Variation status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "publish" "draft" "pending" "private" "auto-draft" "trash" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariation/purchasable> ;
    sh:name "purchasable" ;
    sh:description "Shows if the variation can be bought" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariation/virtual> ;
    sh:name "virtual" ;
    sh:description "If the variation is virtual" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariation/downloadable> ;
    sh:name "downloadable" ;
    sh:description "If the variation is downloadable" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariation/downloads> ;
    sh:name "downloads" ;
    sh:description "List of downloadable files" ;
    sh:node woo:ProductDownloadShape ;
    sh:class woo:ProductDownload ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariation/downloadLimit> ;
    sh:name "download limit" ;
    sh:description "Number of times downloadable files can be downloaded after purchase" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariation/downloadExpiry> ;
    sh:name "download expiry" ;
    sh:description "Number of days until access to downloadable files expires" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariation/taxStatus> ;
    sh:name "tax status" ;
    sh:description "Tax status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "taxable" "shipping" "none" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariation/taxClass> ;
    sh:name "tax class" ;
    sh:description "Tax class" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariation/manageStock> ;
    sh:name "manage stock" ;
    sh:description "Stock management at variation level" ;
    sh:maxCount 1 ;
    sh:in ( true false "parent" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariation/stockQuantity> ;
    sh:name "stock quantity" ;
    sh:description "Stock quantity" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariation/stockStatus> ;
    sh:name "stock status" ;
    sh:description "Controls the stock status of the variation" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "instock" "outofstock" "onbackorder" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariation/backorders> ;
    sh:name "backorders" ;
    sh:description "If managing stock, this controls if backorders are allowed" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "no" "notify" "yes" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariation/backordersAllowed> ;
    sh:name "backorders allowed" ;
    sh:description "Shows if backorders are allowed" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariation/backordered> ;
    sh:name "backordered" ;
    sh:description "Shows if the variation is on backordered" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariation/weight> ;
    sh:name "weight" ;
    sh:description "Variation weight" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariation/dimensions> ;
    sh:name "dimensions" ;
    sh:description "Variation dimensions" ;
    sh:node woo:ProductDimensionsShape ;
    sh:class woo:ProductDimensions ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariation/shippingClass> ;
    sh:name "shipping class" ;
    sh:description "Shipping class slug" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariation/shippingClassId> ;
    sh:name "shipping class id" ;
    sh:description "Shipping class ID" ;
    sh:node woo:ProductShippingClassShape ;
    sh:class woo:ProductShippingClass ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariation/image> ;
    sh:name "image" ;
    sh:description "Variation image" ;
    sh:node woo:ProductImageShape ;
    sh:class woo:ProductImage ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariation/attributes> ;
    sh:name "attributes" ;
    sh:description "List of variation attributes" ;
    sh:node woo:DefaultAttributeShape ;
    sh:class woo:DefaultAttribute ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariation/menuOrder> ;
    sh:name "menu order" ;
    sh:description "Menu order" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariation/metaData> ;
    sh:name "meta data" ;
    sh:description "Meta data" ;
    sh:node woo:ProductMetadataShape ;
    sh:class woo:ProductMetadata ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariation/links> ;
    sh:name "links" ;
    sh:description "HAL links" ;
    sh:node woo:LinksShape ;
    sh:class woo:Links ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Product Input
woo:ProductInputShape a sh:NodeShape ;
  sh:targetClass woo:ProductInput ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductInput/name> ;
    sh:name "name" ;
    sh:description "Product name" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductInput/slug> ;
    sh:name "slug" ;
    sh:description "URL-friendly slug" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductInput/type> ;
    sh:name "type" ;
    sh:description "Product type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "simple" "grouped" "external" "variable" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductInput/status> ;
    sh:name "status" ;
    sh:description "Product status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "publish" "draft" "pending" "private" "auto-draft" "trash" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductInput/featured> ;
    sh:name "featured" ;
    sh:description "Featured product" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductInput/catalogVisibility> ;
    sh:name "catalog visibility" ;
    sh:description "Catalog visibility" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "visible" "catalog" "search" "hidden" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductInput/description> ;
    sh:name "description" ;
    sh:description "Product description" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductInput/shortDescription> ;
    sh:name "short description" ;
    sh:description "Product short description" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductInput/sku> ;
    sh:name "sku" ;
    sh:description "SKU" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductInput/globalUniqueId> ;
    sh:name "global unique id" ;
    sh:description "Global product identifier" ;
    sh:datatype xsd:string ;
    sh:or (
      [ sh:datatype xsd:string ; sh:pattern "^\\d{8}$|^\\d{12,14}$" ]
      [ sh:datatype xsd:string ; sh:pattern "^\\d{8}$|^\\d{12}$" ]
      [ sh:datatype xsd:string ; sh:pattern "^\\d{8}$|^\\d{13}$" ]
      [ sh:datatype xsd:string ; sh:pattern "^[\\d-]{10,17}$|^\\d{9}[\\dX]$" ]
    ) ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductInput/regularPrice> ;
    sh:name "regular price" ;
    sh:description "Product regular price" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductInput/salePrice> ;
    sh:name "sale price" ;
    sh:description "Product sale price" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductInput/dateOnSaleFrom> ;
    sh:name "date on sale from" ;
    sh:description "Start date of sale price, in the site's timezone" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductInput/dateOnSaleFromGmt> ;
    sh:name "date on sale from gmt" ;
    sh:description "Start date of sale price, as GMT" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductInput/dateOnSaleTo> ;
    sh:name "date on sale to" ;
    sh:description "End date of sale price, in the site's timezone" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductInput/dateOnSaleToGmt> ;
    sh:name "date on sale to gmt" ;
    sh:description "End date of sale price, as GMT" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductInput/virtual> ;
    sh:name "virtual" ;
    sh:description "If the product is virtual" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductInput/downloadable> ;
    sh:name "downloadable" ;
    sh:description "If the product is downloadable" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductInput/downloads> ;
    sh:name "downloads" ;
    sh:description "List of downloadable files" ;
    sh:node woo:ProductDownloadShape ;
    sh:class woo:ProductDownload ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductInput/downloadLimit> ;
    sh:name "download limit" ;
    sh:description "Download limit" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductInput/downloadExpiry> ;
    sh:name "download expiry" ;
    sh:description "Download expiry in days" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductInput/externalUrl> ;
    sh:name "external url" ;
    sh:description "Product external URL" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductInput/buttonText> ;
    sh:name "button text" ;
    sh:description "Product external button text" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductInput/taxStatus> ;
    sh:name "tax status" ;
    sh:description "Tax status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "taxable" "shipping" "none" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductInput/taxClass> ;
    sh:name "tax class" ;
    sh:description "Tax class" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductInput/manageStock> ;
    sh:name "manage stock" ;
    sh:description "Whether to manage stock" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductInput/stockQuantity> ;
    sh:name "stock quantity" ;
    sh:description "Stock quantity" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductInput/stockStatus> ;
    sh:name "stock status" ;
    sh:description "Stock status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "instock" "outofstock" "onbackorder" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductInput/backorders> ;
    sh:name "backorders" ;
    sh:description "Backorder status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "no" "notify" "yes" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductInput/soldIndividually> ;
    sh:name "sold individually" ;
    sh:description "Allow one item to be bought in a single order" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductInput/weight> ;
    sh:name "weight" ;
    sh:description "Product weight" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductInput/dimensions> ;
    sh:name "dimensions" ;
    sh:description "Product dimensions" ;
    sh:node woo:ProductDimensionsShape ;
    sh:class woo:ProductDimensions ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductInput/shippingClass> ;
    sh:name "shipping class" ;
    sh:description "Shipping class slug" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductInput/reviewsAllowed> ;
    sh:name "reviews allowed" ;
    sh:description "Allow reviews" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductInput/upsellProducts> ;
    sh:name "upsell products" ;
    sh:description "List of up-sell products" ;
    sh:node woo:ProductShape ;
    sh:class woo:Product ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductInput/crossSellProducts> ;
    sh:name "cross sell products" ;
    sh:description "List of cross-sell products" ;
    sh:node woo:ProductShape ;
    sh:class woo:Product ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductInput/parent> ;
    sh:name "parent" ;
    sh:description "Product parent" ;
    sh:node woo:ProductShape ;
    sh:class woo:Product ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductInput/purchaseNote> ;
    sh:name "purchase note" ;
    sh:description "Optional note to send the customer after purchase" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductInput/categories> ;
    sh:name "categories" ;
    sh:description "List of categories" ;
    sh:node woo:ProductCategoryRefShape ;
    sh:class woo:ProductCategoryRef ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductInput/tags> ;
    sh:name "tags" ;
    sh:description "List of tags" ;
    sh:node woo:ProductTagRefShape ;
    sh:class woo:ProductTagRef ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductInput/images> ;
    sh:name "images" ;
    sh:description "List of images" ;
    sh:node woo:ProductImageShape ;
    sh:class woo:ProductImage ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductInput/attributes> ;
    sh:name "attributes" ;
    sh:description "List of attributes" ;
    sh:node woo:ProductAttributeShape ;
    sh:class woo:ProductAttribute ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductInput/defaultAttributes> ;
    sh:name "default attributes" ;
    sh:description "Defaults variation attributes" ;
    sh:node woo:DefaultAttributeShape ;
    sh:class woo:DefaultAttribute ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductInput/groupedProducts> ;
    sh:name "grouped products" ;
    sh:description "List of grouped product IDs" ;
    sh:node woo:ProductShape ;
    sh:class woo:Product ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductInput/menuOrder> ;
    sh:name "menu order" ;
    sh:description "Menu order" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductInput/metaData> ;
    sh:name "meta data" ;
    sh:description "Meta data" ;
    sh:node woo:ProductMetadataShape ;
    sh:class woo:ProductMetadata ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Product Variation Input
woo:ProductVariationInputShape a sh:NodeShape ;
  sh:targetClass woo:ProductVariationInput ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariationInput/description> ;
    sh:name "description" ;
    sh:description "Description" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariationInput/sku> ;
    sh:name "sku" ;
    sh:description "SKU" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariationInput/globalUniqueId> ;
    sh:name "global unique id" ;
    sh:description "Global product identifier" ;
    sh:datatype xsd:string ;
    sh:or (
      [ sh:datatype xsd:string ; sh:pattern "^\\d{8}$|^\\d{12,14}$" ]
      [ sh:datatype xsd:string ; sh:pattern "^\\d{8}$|^\\d{12}$" ]
      [ sh:datatype xsd:string ; sh:pattern "^\\d{8}$|^\\d{13}$" ]
      [ sh:datatype xsd:string ; sh:pattern "^[\\d-]{10,17}$|^\\d{9}[\\dX]$" ]
    ) ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariationInput/regularPrice> ;
    sh:name "regular price" ;
    sh:description "Regular price" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariationInput/salePrice> ;
    sh:name "sale price" ;
    sh:description "Sale price" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariationInput/dateOnSaleFrom> ;
    sh:name "date on sale from" ;
    sh:description "Start date of sale price, in the site's timezone" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariationInput/dateOnSaleFromGmt> ;
    sh:name "date on sale from gmt" ;
    sh:description "Start date of sale price, as GMT" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariationInput/dateOnSaleTo> ;
    sh:name "date on sale to" ;
    sh:description "End date of sale price, in the site's timezone" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariationInput/dateOnSaleToGmt> ;
    sh:name "date on sale to gmt" ;
    sh:description "End date of sale price, as GMT" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariationInput/status> ;
    sh:name "status" ;
    sh:description "Variation status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "publish" "draft" "pending" "private" "auto-draft" "trash" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariationInput/virtual> ;
    sh:name "virtual" ;
    sh:description "If the variation is virtual" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariationInput/downloadable> ;
    sh:name "downloadable" ;
    sh:description "If the variation is downloadable" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariationInput/downloads> ;
    sh:name "downloads" ;
    sh:description "List of downloadable files" ;
    sh:node woo:ProductDownloadShape ;
    sh:class woo:ProductDownload ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariationInput/downloadLimit> ;
    sh:name "download limit" ;
    sh:description "Download limit" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariationInput/downloadExpiry> ;
    sh:name "download expiry" ;
    sh:description "Download expiry in days" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariationInput/taxStatus> ;
    sh:name "tax status" ;
    sh:description "Tax status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "taxable" "shipping" "none" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariationInput/taxClass> ;
    sh:name "tax class" ;
    sh:description "Tax class" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariationInput/manageStock> ;
    sh:name "manage stock" ;
    sh:description "Stock management setting" ;
    sh:maxCount 1 ;
    sh:in ( true false "parent" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariationInput/stockQuantity> ;
    sh:name "stock quantity" ;
    sh:description "Stock quantity" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariationInput/stockStatus> ;
    sh:name "stock status" ;
    sh:description "Stock status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "instock" "outofstock" "onbackorder" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariationInput/backorders> ;
    sh:name "backorders" ;
    sh:description "Backorder status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "no" "notify" "yes" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariationInput/weight> ;
    sh:name "weight" ;
    sh:description "Variation weight" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariationInput/dimensions> ;
    sh:name "dimensions" ;
    sh:description "Variation dimensions" ;
    sh:node woo:ProductDimensionsShape ;
    sh:class woo:ProductDimensions ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariationInput/shippingClass> ;
    sh:name "shipping class" ;
    sh:description "Shipping class slug" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariationInput/image> ;
    sh:name "image" ;
    sh:description "Variation image" ;
    sh:node woo:ProductImageShape ;
    sh:class woo:ProductImage ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariationInput/attributes> ;
    sh:name "attributes" ;
    sh:description "List of variation attributes" ;
    sh:node woo:DefaultAttributeShape ;
    sh:class woo:DefaultAttribute ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariationInput/menuOrder> ;
    sh:name "menu order" ;
    sh:description "Menu order" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductVariationInput/metaData> ;
    sh:name "meta data" ;
    sh:description "Meta data" ;
    sh:node woo:ProductMetadataShape ;
    sh:class woo:ProductMetadata ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Product Attribute Taxonomy
woo:ProductAttributeTaxonomyShape a sh:NodeShape ;
  sh:targetClass woo:ProductAttributeTaxonomy ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductAttributeTaxonomy/id> ;
    sh:name "id" ;
    sh:description "Unique identifier" ;
    sh:datatype xsd:long ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductAttributeTaxonomy/name> ;
    sh:name "name" ;
    sh:description "Attribute name" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductAttributeTaxonomy/slug> ;
    sh:name "slug" ;
    sh:description "Attribute slug" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductAttributeTaxonomy/type> ;
    sh:name "type" ;
    sh:description "Attribute type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductAttributeTaxonomy/orderBy> ;
    sh:name "order by" ;
    sh:description "Default sort order. Options: menu_order, name, name_num and id. Default is menu_order." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "menu_order" "name" "name_num" "id" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductAttributeTaxonomy/hasArchives> ;
    sh:name "has archives" ;
    sh:description "Whether attribute has archives" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductAttributeTaxonomy/links> ;
    sh:name "links" ;
    sh:description "HAL links" ;
    sh:node woo:LinksShape ;
    sh:class woo:Links ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Product Attribute Term
woo:ProductAttributeTermShape a sh:NodeShape ;
  sh:targetClass woo:ProductAttributeTerm ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductAttributeTerm/id> ;
    sh:name "id" ;
    sh:description "Unique identifier" ;
    sh:datatype xsd:long ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductAttributeTerm/name> ;
    sh:name "name" ;
    sh:description "Term name" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductAttributeTerm/slug> ;
    sh:name "slug" ;
    sh:description "Term slug" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductAttributeTerm/description> ;
    sh:name "description" ;
    sh:description "Term description" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductAttributeTerm/menuOrder> ;
    sh:name "menu order" ;
    sh:description "Menu order" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductAttributeTerm/count> ;
    sh:name "count" ;
    sh:description "Number of products with this term" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductAttributeTerm/links> ;
    sh:name "links" ;
    sh:description "HAL links" ;
    sh:node woo:LinksShape ;
    sh:class woo:Links ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Order Line Item
woo:OrderLineItemShape a sh:NodeShape ;
  sh:targetClass woo:OrderLineItem ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderLineItem/id> ;
    sh:name "id" ;
    sh:description "Line item ID" ;
    sh:datatype xsd:long ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderLineItem/name> ;
    sh:name "name" ;
    sh:description "Product name" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderLineItem/product> ;
    sh:name "product" ;
    sh:description "Product" ;
    sh:node woo:ProductShape ;
    sh:class woo:Product ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderLineItem/variation> ;
    sh:name "variation" ;
    sh:description "Variation (0 if not a variation)" ;
    sh:node woo:ProductVariationShape ;
    sh:class woo:ProductVariation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderLineItem/quantity> ;
    sh:name "quantity" ;
    sh:description "Quantity ordered" ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderLineItem/taxClass> ;
    sh:name "tax class" ;
    sh:description "Tax class" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderLineItem/subtotal> ;
    sh:name "subtotal" ;
    sh:description "Line subtotal (before discounts)" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderLineItem/subtotalTax> ;
    sh:name "subtotal tax" ;
    sh:description "Line subtotal tax" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderLineItem/total> ;
    sh:name "total" ;
    sh:description "Line total (after discounts)" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderLineItem/totalTax> ;
    sh:name "total tax" ;
    sh:description "Line total tax" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderLineItem/taxes> ;
    sh:name "taxes" ;
    sh:description "Line taxes" ;
    sh:node woo:OrderItemTaxShape ;
    sh:class woo:OrderItemTax ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderLineItem/metadata> ;
    sh:name "metadata" ;
    sh:description "Meta data" ;
    sh:node woo:MetadataShape ;
    sh:class woo:Metadata ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderLineItem/sku> ;
    sh:name "sku" ;
    sh:description "Product SKU" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderLineItem/price> ;
    sh:name "price" ;
    sh:description "Product price" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderLineItem/image> ;
    sh:name "image" ;
    sh:description "Product image" ;
    sh:node woo:ImageShape ;
    sh:class woo:Image ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderLineItem/parentName> ;
    sh:name "parent name" ;
    sh:description "Parent product name if the product is a variation" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderLineItem/globalUniqueId> ;
    sh:name "global unique id" ;
    sh:description "GTIN, UPC, EAN, or ISBN - global product identifier" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Order Item Tax
woo:OrderItemTaxShape a sh:NodeShape ;
  sh:targetClass woo:OrderItemTax ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderItemTax/taxRateIdentifier> ;
    sh:name "tax rate identifier" ;
    sh:description "Tax rate ID" ;
    sh:datatype xsd:long ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderItemTax/total> ;
    sh:name "total" ;
    sh:description "Tax total" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderItemTax/subtotal> ;
    sh:name "subtotal" ;
    sh:description "Tax subtotal" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Order Line Item Input
woo:OrderLineItemInputShape a sh:NodeShape ;
  sh:targetClass woo:OrderLineItemInput ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderLineItemInput/itemIdentifier> ;
    sh:name "item identifier" ;
    sh:description "Line item ID (for updates)" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderLineItemInput/product> ;
    sh:name "product" ;
    sh:description "Product" ;
    sh:node woo:ProductShape ;
    sh:class woo:Product ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderLineItemInput/variation> ;
    sh:name "variation" ;
    sh:description "Variation" ;
    sh:node woo:ProductVariationShape ;
    sh:class woo:ProductVariation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderLineItemInput/quantity> ;
    sh:name "quantity" ;
    sh:description "Quantity" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderLineItemInput/taxClass> ;
    sh:name "tax class" ;
    sh:description "Tax class" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderLineItemInput/subtotal> ;
    sh:name "subtotal" ;
    sh:description "Line subtotal" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderLineItemInput/total> ;
    sh:name "total" ;
    sh:description "Line total" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderLineItemInput/metadata> ;
    sh:name "metadata" ;
    sh:description "Meta data" ;
    sh:node woo:MetadataShape ;
    sh:class woo:Metadata ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Shipping Line
woo:ShippingLineShape a sh:NodeShape ;
  sh:targetClass woo:ShippingLine ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingLine/id> ;
    sh:name "id" ;
    sh:description "Shipping line ID" ;
    sh:datatype xsd:long ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingLine/methodTitle> ;
    sh:name "method title" ;
    sh:description "Shipping method title" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingLine/methodId> ;
    sh:name "method id" ;
    sh:description "Shipping method ID" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingLine/instanceId> ;
    sh:name "instance id" ;
    sh:description "Shipping instance ID" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingLine/total> ;
    sh:name "total" ;
    sh:description "Shipping total" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingLine/totalTax> ;
    sh:name "total tax" ;
    sh:description "Shipping total tax" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingLine/taxes> ;
    sh:name "taxes" ;
    sh:description "Shipping taxes" ;
    sh:node woo:OrderItemTaxShape ;
    sh:class woo:OrderItemTax ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingLine/metadata> ;
    sh:name "metadata" ;
    sh:description "Meta data" ;
    sh:node woo:MetadataShape ;
    sh:class woo:Metadata ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Shipping Line Input
woo:ShippingLineInputShape a sh:NodeShape ;
  sh:targetClass woo:ShippingLineInput ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingLineInput/itemIdentifier> ;
    sh:name "item identifier" ;
    sh:description "Shipping line ID (for updates)" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingLineInput/methodTitle> ;
    sh:name "method title" ;
    sh:description "Shipping method title" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingLineInput/methodId> ;
    sh:name "method id" ;
    sh:description "Shipping method ID" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingLineInput/total> ;
    sh:name "total" ;
    sh:description "Shipping total" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingLineInput/metadata> ;
    sh:name "metadata" ;
    sh:description "Meta data" ;
    sh:node woo:MetadataShape ;
    sh:class woo:Metadata ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Tax Line
woo:TaxLineShape a sh:NodeShape ;
  sh:targetClass woo:TaxLine ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.TaxLine/id> ;
    sh:name "id" ;
    sh:description "Tax line ID" ;
    sh:datatype xsd:long ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.TaxLine/rateCode> ;
    sh:name "rate code" ;
    sh:description "Tax rate code" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.TaxLine/rate> ;
    sh:name "rate" ;
    sh:description "Tax rate" ;
    sh:node woo:TaxRateShape ;
    sh:class woo:TaxRate ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.TaxLine/label> ;
    sh:name "label" ;
    sh:description "Tax rate label" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.TaxLine/compound> ;
    sh:name "compound" ;
    sh:description "Whether compound tax" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.TaxLine/taxTotal> ;
    sh:name "tax total" ;
    sh:description "Tax total" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.TaxLine/shippingTaxTotal> ;
    sh:name "shipping tax total" ;
    sh:description "Shipping tax total" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.TaxLine/ratePercent> ;
    sh:name "rate percent" ;
    sh:description "Tax rate percentage" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.TaxLine/metadata> ;
    sh:name "metadata" ;
    sh:description "Metadata" ;
    sh:node woo:MetadataShape ;
    sh:class woo:Metadata ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Tax Rate
woo:TaxRateShape a sh:NodeShape ;
  sh:targetClass woo:TaxRate ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.TaxRate/id> ;
    sh:name "id" ;
    sh:description "Unique identifier for the resource" ;
    sh:datatype xsd:long ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.TaxRate/country> ;
    sh:name "country" ;
    sh:description "Country ISO 3166 code" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.TaxRate/state> ;
    sh:name "state" ;
    sh:description "State code" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.TaxRate/postcode> ;
    sh:name "postcode" ;
    sh:description "Postcode/ZIP. Deprecated: use postcodes instead" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.TaxRate/city> ;
    sh:name "city" ;
    sh:description "City name. Deprecated: use cities instead" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.TaxRate/postcodes> ;
    sh:name "postcodes" ;
    sh:description "Postcodes/ZIPs" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.TaxRate/cities> ;
    sh:name "cities" ;
    sh:description "City names" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.TaxRate/rate> ;
    sh:name "rate" ;
    sh:description "Tax rate" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.TaxRate/name> ;
    sh:name "name" ;
    sh:description "Tax rate name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.TaxRate/priority> ;
    sh:name "priority" ;
    sh:description "Tax priority. Only 1 matching rate per priority will be used. Default is 1." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.TaxRate/compound> ;
    sh:name "compound" ;
    sh:description "Whether this is a compound tax rate. Compound rates are applied on top of other tax rates. Default is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.TaxRate/shipping> ;
    sh:name "shipping" ;
    sh:description "Whether this tax rate also gets applied to shipping. Default is true." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.TaxRate/order> ;
    sh:name "order" ;
    sh:description "Indicates the order that will appear in queries" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.TaxRate/taxClass> ;
    sh:name "tax class" ;
    sh:description "Tax class. Default is 'standard'." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.TaxRate/links> ;
    sh:name "links" ;
    sh:description "HAL links" ;
    sh:node woo:LinksShape ;
    sh:class woo:Links ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Fee Line
woo:FeeLineShape a sh:NodeShape ;
  sh:targetClass woo:FeeLine ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.FeeLine/id> ;
    sh:name "id" ;
    sh:description "Fee line ID" ;
    sh:datatype xsd:long ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.FeeLine/name> ;
    sh:name "name" ;
    sh:description "Fee name" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.FeeLine/taxClass> ;
    sh:name "tax class" ;
    sh:description "Tax class" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.FeeLine/taxStatus> ;
    sh:name "tax status" ;
    sh:description "Tax status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "taxable" "shipping" "none" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.FeeLine/amount> ;
    sh:name "amount" ;
    sh:description "Fee amount" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.FeeLine/total> ;
    sh:name "total" ;
    sh:description "Fee total" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.FeeLine/totalTax> ;
    sh:name "total tax" ;
    sh:description "Fee total tax" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.FeeLine/taxes> ;
    sh:name "taxes" ;
    sh:description "Fee taxes" ;
    sh:node woo:OrderItemTaxShape ;
    sh:class woo:OrderItemTax ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.FeeLine/metadata> ;
    sh:name "metadata" ;
    sh:description "Meta data" ;
    sh:node woo:MetadataShape ;
    sh:class woo:Metadata ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Fee Line Input
woo:FeeLineInputShape a sh:NodeShape ;
  sh:targetClass woo:FeeLineInput ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.FeeLineInput/itemIdentifier> ;
    sh:name "item identifier" ;
    sh:description "Fee line ID (for updates)" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.FeeLineInput/name> ;
    sh:name "name" ;
    sh:description "Fee name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.FeeLineInput/taxClass> ;
    sh:name "tax class" ;
    sh:description "Tax class" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.FeeLineInput/taxStatus> ;
    sh:name "tax status" ;
    sh:description "Tax status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "taxable" "shipping" "none" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.FeeLineInput/total> ;
    sh:name "total" ;
    sh:description "Fee total" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.FeeLineInput/metadata> ;
    sh:name "metadata" ;
    sh:description "Meta data" ;
    sh:node woo:MetadataShape ;
    sh:class woo:Metadata ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Coupon Line
woo:CouponLineShape a sh:NodeShape ;
  sh:targetClass woo:CouponLine ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CouponLine/id> ;
    sh:name "id" ;
    sh:description "Coupon line ID" ;
    sh:datatype xsd:long ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CouponLine/code> ;
    sh:name "code" ;
    sh:description "Coupon code" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CouponLine/discount> ;
    sh:name "discount" ;
    sh:description "Discount amount" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CouponLine/discountTax> ;
    sh:name "discount tax" ;
    sh:description "Discount tax amount" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CouponLine/discountType> ;
    sh:name "discount type" ;
    sh:description "Type of discount (percent, fixed_cart, etc.)" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CouponLine/freeShipping> ;
    sh:name "free shipping" ;
    sh:description "Whether coupon grants free shipping" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CouponLine/nominalAmount> ;
    sh:name "nominal amount" ;
    sh:description "Original coupon value before calculation (e.g., 10 for 10% off or $10 off)" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CouponLine/metadata> ;
    sh:name "metadata" ;
    sh:description "Meta data" ;
    sh:node woo:MetadataShape ;
    sh:class woo:Metadata ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Coupon Line Input
woo:CouponLineInputShape a sh:NodeShape ;
  sh:targetClass woo:CouponLineInput ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CouponLineInput/itemIdentifier> ;
    sh:name "item identifier" ;
    sh:description "Coupon line ID (for updates)" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CouponLineInput/code> ;
    sh:name "code" ;
    sh:description "Coupon code" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CouponLineInput/metadata> ;
    sh:name "metadata" ;
    sh:description "Meta data" ;
    sh:node woo:MetadataShape ;
    sh:class woo:Metadata ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Order Refund Line
woo:OrderRefundLineShape a sh:NodeShape ;
  sh:targetClass woo:OrderRefundLine ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderRefundLine/id> ;
    sh:name "id" ;
    sh:description "Refund ID" ;
    sh:datatype xsd:long ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderRefundLine/reason> ;
    sh:name "reason" ;
    sh:description "Refund reason" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderRefundLine/total> ;
    sh:name "total" ;
    sh:description "Refund total" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Refund
woo:RefundShape a sh:NodeShape ;
  sh:targetClass woo:Refund ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Refund/id> ;
    sh:name "id" ;
    sh:description "Refund ID" ;
    sh:datatype xsd:long ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Refund/parent> ;
    sh:name "parent" ;
    sh:description "The order the refund is associated with. Only present in standalone refunds endpoint." ;
    sh:node woo:OrderShape ;
    sh:class woo:Order ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Refund/dateCreated> ;
    sh:name "date created" ;
    sh:description "The date the refund was created, in the site's timezone" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Refund/dateCreatedGmt> ;
    sh:name "date created gmt" ;
    sh:description "The date the refund was created, as GMT" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Refund/amount> ;
    sh:name "amount" ;
    sh:description "Total refund amount. If provided, takes precedence over line item totals." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Refund/reason> ;
    sh:name "reason" ;
    sh:description "Refund reason" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Refund/refundedBy> ;
    sh:name "refunded by" ;
    sh:description "User ID who performed the refund" ;
    sh:node woo:CustomerShape ;
    sh:class woo:Customer ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Refund/refundedPayment> ;
    sh:name "refunded payment" ;
    sh:description "Whether the payment was refunded via the API. See api_refund." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Refund/metadata> ;
    sh:name "metadata" ;
    sh:description "Meta data" ;
    sh:node woo:MetadataShape ;
    sh:class woo:Metadata ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Refund/lineItems> ;
    sh:name "line items" ;
    sh:description "Refund line items" ;
    sh:class woo:OrderLineItem ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Refund/taxLines> ;
    sh:name "tax lines" ;
    sh:description "Tax lines data" ;
    sh:node woo:TaxLineShape ;
    sh:class woo:TaxLine ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Refund/shippingLines> ;
    sh:name "shipping lines" ;
    sh:description "Shipping lines data" ;
    sh:node woo:ShippingLineShape ;
    sh:class woo:ShippingLine ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Refund/feeLines> ;
    sh:name "fee lines" ;
    sh:description "Fee lines data" ;
    sh:node woo:FeeLineShape ;
    sh:class woo:FeeLine ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Refund/links> ;
    sh:name "links" ;
    sh:description "HAL links" ;
    sh:node woo:LinksShape ;
    sh:class woo:Links ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Order
woo:OrderShape a sh:NodeShape ;
  sh:targetClass woo:Order ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Order/id> ;
    sh:name "id" ;
    sh:description "Unique identifier" ;
    sh:datatype xsd:long ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Order/parent> ;
    sh:name "parent" ;
    sh:description "Parent order (for order parts)" ;
    sh:class woo:Order ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Order/number> ;
    sh:name "number" ;
    sh:description "Order number (may differ from ID)" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Order/orderKey> ;
    sh:name "order key" ;
    sh:description "Order key (for guest checkout links)" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Order/createdVia> ;
    sh:name "created via" ;
    sh:description "Shows where the order was created. Can only be set during creation." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Order/version> ;
    sh:name "version" ;
    sh:description "Version of WooCommerce which last updated the order" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Order/status> ;
    sh:name "status" ;
    sh:description "Order status" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "pending" "processing" "on-hold" "completed" "cancelled" "refunded" "failed" "trash" "auto-draft" "checkout-draft" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Order/currency> ;
    sh:name "currency" ;
    sh:description "Currency code (ISO 4217)" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Order/currencySymbol> ;
    sh:name "currency symbol" ;
    sh:description "Currency symbol" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Order/dateCreated> ;
    sh:name "date created" ;
    sh:description "The date the order was created, in the site's timezone" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Order/dateCreatedGmt> ;
    sh:name "date created gmt" ;
    sh:description "The date the order was created, as GMT" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Order/dateModified> ;
    sh:name "date modified" ;
    sh:description "The date the order was last modified, in the site's timezone" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Order/dateModifiedGmt> ;
    sh:name "date modified gmt" ;
    sh:description "The date the order was last modified, as GMT" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Order/discountTotal> ;
    sh:name "discount total" ;
    sh:description "Total discount amount" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Order/discountTax> ;
    sh:name "discount tax" ;
    sh:description "Total discount tax" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Order/shippingTotal> ;
    sh:name "shipping total" ;
    sh:description "Total shipping amount" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Order/shippingTax> ;
    sh:name "shipping tax" ;
    sh:description "Total shipping tax" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Order/cartTax> ;
    sh:name "cart tax" ;
    sh:description "Sum of line item taxes only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Order/total> ;
    sh:name "total" ;
    sh:description "Grand total" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Order/totalTax> ;
    sh:name "total tax" ;
    sh:description "Sum of all taxes" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Order/pricesIncludeTax> ;
    sh:name "prices include tax" ;
    sh:description "True if prices included tax during checkout" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Order/customer> ;
    sh:name "customer" ;
    sh:description "Customer who owns the order. 0 for guests." ;
    sh:node woo:CustomerShape ;
    sh:class woo:Customer ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Order/customerIpAddress> ;
    sh:name "customer ip address" ;
    sh:description "Customer's IP address" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Order/customerUserAgent> ;
    sh:name "customer user agent" ;
    sh:description "User agent of the customer" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Order/customerNote> ;
    sh:name "customer note" ;
    sh:description "Note left by customer during checkout" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Order/billing> ;
    sh:name "billing" ;
    sh:description "Billing address" ;
    sh:node woo:BillingAddressShape ;
    sh:class woo:BillingAddress ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Order/shipping> ;
    sh:name "shipping" ;
    sh:description "Shipping address" ;
    sh:node woo:ShippingAddressShape ;
    sh:class woo:ShippingAddress ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Order/paymentMethod> ;
    sh:name "payment method" ;
    sh:description "Payment method ID" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Order/paymentMethodTitle> ;
    sh:name "payment method title" ;
    sh:description "Payment method title" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Order/transactionId> ;
    sh:name "transaction id" ;
    sh:description "Unique transaction ID" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Order/datePaid> ;
    sh:name "date paid" ;
    sh:description "The date the order was paid, in the site's timezone" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Order/datePaidGmt> ;
    sh:name "date paid gmt" ;
    sh:description "The date the order was paid, as GMT" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Order/dateCompleted> ;
    sh:name "date completed" ;
    sh:description "The date the order was completed, in the site's timezone" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Order/dateCompletedGmt> ;
    sh:name "date completed gmt" ;
    sh:description "The date the order was completed, as GMT" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Order/cartHash> ;
    sh:name "cart hash" ;
    sh:description "MD5 hash of cart items to ensure orders are not modified" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Order/lineItems> ;
    sh:name "line items" ;
    sh:description "Line items" ;
    sh:class woo:OrderLineItem ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Order/taxLines> ;
    sh:name "tax lines" ;
    sh:description "Tax lines" ;
    sh:node woo:TaxLineShape ;
    sh:class woo:TaxLine ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Order/shippingLines> ;
    sh:name "shipping lines" ;
    sh:description "Shipping lines" ;
    sh:node woo:ShippingLineShape ;
    sh:class woo:ShippingLine ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Order/feeLines> ;
    sh:name "fee lines" ;
    sh:description "Fee lines" ;
    sh:node woo:FeeLineShape ;
    sh:class woo:FeeLine ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Order/couponLines> ;
    sh:name "coupon lines" ;
    sh:description "Coupon lines" ;
    sh:node woo:CouponLineShape ;
    sh:class woo:CouponLine ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Order/refunds> ;
    sh:name "refunds" ;
    sh:description "List of refunds" ;
    sh:node woo:OrderRefundLineShape ;
    sh:class woo:OrderRefundLine ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Order/needsPayment> ;
    sh:name "needs payment" ;
    sh:description "Whether order needs payment" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Order/needsProcessing> ;
    sh:name "needs processing" ;
    sh:description "Whether order needs processing" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Order/paymentUrl> ;
    sh:name "payment url" ;
    sh:description "Payment URL" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Order/isEditable> ;
    sh:name "is editable" ;
    sh:description "Whether order is editable" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Order/metadata> ;
    sh:name "metadata" ;
    sh:description "Meta data" ;
    sh:node woo:MetadataShape ;
    sh:class woo:Metadata ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Order/links> ;
    sh:name "links" ;
    sh:description "HAL links" ;
    sh:node woo:LinksShape ;
    sh:class woo:Links ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer
woo:CustomerShape a sh:NodeShape ;
  sh:targetClass woo:Customer ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Customer/id> ;
    sh:name "id" ;
    sh:description "Unique identifier for the resource" ;
    sh:datatype xsd:long ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Customer/dateCreated> ;
    sh:name "date created" ;
    sh:description "The date the customer was created, in the site's timezone" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Customer/dateCreatedGmt> ;
    sh:name "date created gmt" ;
    sh:description "The date the customer was created, as GMT" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Customer/dateModified> ;
    sh:name "date modified" ;
    sh:description "The date the customer was last modified, in the site's timezone" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Customer/dateModifiedGmt> ;
    sh:name "date modified gmt" ;
    sh:description "The date the customer was last modified, as GMT" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Customer/email> ;
    sh:name "email" ;
    sh:description "The email address for the customer" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Customer/firstName> ;
    sh:name "first name" ;
    sh:description "Customer first name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Customer/lastName> ;
    sh:name "last name" ;
    sh:description "Customer last name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Customer/role> ;
    sh:name "role" ;
    sh:description "Customer role" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Customer/username> ;
    sh:name "username" ;
    sh:description "Customer login name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Customer/billing> ;
    sh:name "billing" ;
    sh:description "List of billing address data" ;
    sh:node woo:BillingAddressShape ;
    sh:class woo:BillingAddress ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Customer/shipping> ;
    sh:name "shipping" ;
    sh:description "List of shipping address data" ;
    sh:node woo:ShippingAddressShape ;
    sh:class woo:ShippingAddress ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Customer/isPayingCustomer> ;
    sh:name "is paying customer" ;
    sh:description "Is the customer a paying customer?" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Customer/avatarUrl> ;
    sh:name "avatar url" ;
    sh:description "Avatar URL" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Customer/metadata> ;
    sh:name "metadata" ;
    sh:description "Meta data" ;
    sh:node woo:MetadataShape ;
    sh:class woo:Metadata ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Customer/links> ;
    sh:name "links" ;
    sh:description "HAL links" ;
    sh:node woo:LinksShape ;
    sh:class woo:Links ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Refund Input
woo:RefundInputShape a sh:NodeShape ;
  sh:targetClass woo:RefundInput ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.RefundInput/amount> ;
    sh:name "amount" ;
    sh:description "Total refund amount. If provided, takes precedence over line item totals." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.RefundInput/reason> ;
    sh:name "reason" ;
    sh:description "Refund reason" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.RefundInput/refundedBy> ;
    sh:name "refunded by" ;
    sh:description "User ID who performed the refund" ;
    sh:node woo:CustomerShape ;
    sh:class woo:Customer ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.RefundInput/metadata> ;
    sh:name "metadata" ;
    sh:description "Meta data" ;
    sh:node woo:MetadataShape ;
    sh:class woo:Metadata ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.RefundInput/lineItems> ;
    sh:name "line items" ;
    sh:description "Line items to refund" ;
    sh:node woo:RefundLineItemInputShape ;
    sh:class woo:RefundLineItemInput ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.RefundInput/shippingLines> ;
    sh:name "shipping lines" ;
    sh:description "Shipping lines data" ;
    sh:node woo:ShippingLineInputShape ;
    sh:class woo:ShippingLineInput ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.RefundInput/feeLines> ;
    sh:name "fee lines" ;
    sh:description "Fee lines data" ;
    sh:node woo:FeeLineInputShape ;
    sh:class woo:FeeLineInput ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.RefundInput/apiRefund> ;
    sh:name "api refund" ;
    sh:description "When true, the payment gateway API is used to generate the refund. Default is true." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.RefundInput/apiRestock> ;
    sh:name "api restock" ;
    sh:description "When true, the selected line items are restocked. Default is true." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Refund Line Item Input
woo:RefundLineItemInputShape a sh:NodeShape ;
  sh:targetClass woo:RefundLineItemInput ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.RefundLineItemInput/lineItemIdentifier> ;
    sh:name "line item identifier" ;
    sh:description "Line item ID" ;
    sh:datatype xsd:long ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.RefundLineItemInput/quantity> ;
    sh:name "quantity" ;
    sh:description "Quantity to refund" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.RefundLineItemInput/refundTotal> ;
    sh:name "refund total" ;
    sh:description "Refund total for this item" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.RefundLineItemInput/refundTax> ;
    sh:name "refund tax" ;
    sh:description "Refund tax totals" ;
    sh:node woo:RefundTaxInputShape ;
    sh:class woo:RefundTaxInput ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Refund Tax Input
woo:RefundTaxInputShape a sh:NodeShape ;
  sh:targetClass woo:RefundTaxInput ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.RefundTaxInput/taxRateIdentifier> ;
    sh:name "tax rate identifier" ;
    sh:description "Tax rate ID" ;
    sh:datatype xsd:long ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.RefundTaxInput/refundTotal> ;
    sh:name "refund total" ;
    sh:description "Refund amount" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Order Note
woo:OrderNoteShape a sh:NodeShape ;
  sh:targetClass woo:OrderNote ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderNote/id> ;
    sh:name "id" ;
    sh:description "Note ID" ;
    sh:datatype xsd:long ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderNote/author> ;
    sh:name "author" ;
    sh:description "Note author" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderNote/dateCreated> ;
    sh:name "date created" ;
    sh:description "The date the note was created, in the site's timezone" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderNote/dateCreatedGmt> ;
    sh:name "date created gmt" ;
    sh:description "The date the note was created, as GMT" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderNote/note> ;
    sh:name "note" ;
    sh:description "Note content" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderNote/customerNote> ;
    sh:name "customer note" ;
    sh:description "Whether note is for customer (visible to customer). Default is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderNote/addedByUser> ;
    sh:name "added by user" ;
    sh:description "Whether added by user (not system). Default is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderNote/links> ;
    sh:name "links" ;
    sh:description "HAL links" ;
    sh:node woo:LinksShape ;
    sh:class woo:Links ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Order Note Input
woo:OrderNoteInputShape a sh:NodeShape ;
  sh:targetClass woo:OrderNoteInput ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderNoteInput/note> ;
    sh:name "note" ;
    sh:description "Note content" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderNoteInput/customerNote> ;
    sh:name "customer note" ;
    sh:description "Whether note is for customer" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderNoteInput/addedByUser> ;
    sh:name "added by user" ;
    sh:description "Whether added by user (not system)" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Order Input
woo:OrderInputShape a sh:NodeShape ;
  sh:targetClass woo:OrderInput ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderInput/parent> ;
    sh:name "parent" ;
    sh:description "Parent order ID" ;
    sh:node woo:OrderShape ;
    sh:class woo:Order ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderInput/status> ;
    sh:name "status" ;
    sh:description "Order status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "pending" "processing" "on-hold" "completed" "cancelled" "refunded" "failed" "trash" "auto-draft" "checkout-draft" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderInput/currency> ;
    sh:name "currency" ;
    sh:description "Currency code" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderInput/customer> ;
    sh:name "customer" ;
    sh:description "Customer ID" ;
    sh:node woo:CustomerShape ;
    sh:class woo:Customer ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderInput/customerNote> ;
    sh:name "customer note" ;
    sh:description "Customer note" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderInput/billing> ;
    sh:name "billing" ;
    sh:description "Billing address" ;
    sh:node woo:BillingAddressShape ;
    sh:class woo:BillingAddress ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderInput/shipping> ;
    sh:name "shipping" ;
    sh:description "Shipping address" ;
    sh:node woo:ShippingAddressShape ;
    sh:class woo:ShippingAddress ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderInput/paymentMethod> ;
    sh:name "payment method" ;
    sh:description "Payment method ID" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderInput/paymentMethodTitle> ;
    sh:name "payment method title" ;
    sh:description "Payment method title" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderInput/transactionId> ;
    sh:name "transaction id" ;
    sh:description "Transaction ID" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderInput/lineItems> ;
    sh:name "line items" ;
    sh:description "Line items" ;
    sh:class woo:OrderLineItemInput ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderInput/shippingLines> ;
    sh:name "shipping lines" ;
    sh:description "Shipping lines" ;
    sh:node woo:ShippingLineInputShape ;
    sh:class woo:ShippingLineInput ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderInput/feeLines> ;
    sh:name "fee lines" ;
    sh:description "Fee lines" ;
    sh:node woo:FeeLineInputShape ;
    sh:class woo:FeeLineInput ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderInput/couponLines> ;
    sh:name "coupon lines" ;
    sh:description "Coupon lines" ;
    sh:node woo:CouponLineInputShape ;
    sh:class woo:CouponLineInput ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderInput/setPaid> ;
    sh:name "set paid" ;
    sh:description "Define if the order is paid. Will set status to processing and reduce stock." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderInput/metadata> ;
    sh:name "metadata" ;
    sh:description "Meta data" ;
    sh:node woo:MetadataShape ;
    sh:class woo:Metadata ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Customer Input
woo:CustomerInputShape a sh:NodeShape ;
  sh:targetClass woo:CustomerInput ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CustomerInput/email> ;
    sh:name "email" ;
    sh:description "The email address for the customer" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CustomerInput/firstName> ;
    sh:name "first name" ;
    sh:description "Customer first name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CustomerInput/lastName> ;
    sh:name "last name" ;
    sh:description "Customer last name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CustomerInput/username> ;
    sh:name "username" ;
    sh:description "Customer login name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CustomerInput/password> ;
    sh:name "password" ;
    sh:description "Customer password" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CustomerInput/billing> ;
    sh:name "billing" ;
    sh:description "List of billing address data" ;
    sh:node woo:BillingAddressShape ;
    sh:class woo:BillingAddress ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CustomerInput/shipping> ;
    sh:name "shipping" ;
    sh:description "List of shipping address data" ;
    sh:node woo:ShippingAddressShape ;
    sh:class woo:ShippingAddress ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CustomerInput/metadata> ;
    sh:name "metadata" ;
    sh:description "Meta data" ;
    sh:node woo:MetadataShape ;
    sh:class woo:Metadata ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Customer Download
woo:CustomerDownloadShape a sh:NodeShape ;
  sh:targetClass woo:CustomerDownload ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CustomerDownload/downloadId> ;
    sh:name "download id" ;
    sh:description "Download ID (MD5)" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CustomerDownload/downloadUrl> ;
    sh:name "download url" ;
    sh:description "Download file URL" ;
    sh:datatype xsd:anyURI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CustomerDownload/product> ;
    sh:name "product" ;
    sh:description "Downloadable product" ;
    sh:node woo:ProductShape ;
    sh:class woo:Product ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CustomerDownload/productName> ;
    sh:name "product name" ;
    sh:description "Product name" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CustomerDownload/downloadName> ;
    sh:name "download name" ;
    sh:description "Downloadable file name" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CustomerDownload/order> ;
    sh:name "order" ;
    sh:description "Order" ;
    sh:node woo:OrderShape ;
    sh:class woo:Order ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CustomerDownload/orderKey> ;
    sh:name "order key" ;
    sh:description "Order key" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CustomerDownload/downloadsRemaining> ;
    sh:name "downloads remaining" ;
    sh:description "Number of downloads remaining" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CustomerDownload/accessExpires> ;
    sh:name "access expires" ;
    sh:description "The date when download access expires, in the site's timezone. Can be 'never'." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CustomerDownload/accessExpiresGmt> ;
    sh:name "access expires gmt" ;
    sh:description "The date when download access expires, as GMT. Can be 'never'." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CustomerDownload/file> ;
    sh:name "file" ;
    sh:description "File details" ;
    sh:node woo:CustomerDownloadFileShape ;
    sh:class woo:CustomerDownloadFile ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CustomerDownload/links> ;
    sh:name "links" ;
    sh:description "HAL links" ;
    sh:node woo:LinksShape ;
    sh:class woo:Links ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Download File
woo:CustomerDownloadFileShape a sh:NodeShape ;
  sh:targetClass woo:CustomerDownloadFile ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CustomerDownloadFile/name> ;
    sh:name "name" ;
    sh:description "File name" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CustomerDownloadFile/file> ;
    sh:name "file" ;
    sh:description "File URL" ;
    sh:datatype xsd:anyURI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Product Review
woo:ProductReviewShape a sh:NodeShape ;
  sh:targetClass woo:ProductReview ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductReview/id> ;
    sh:name "id" ;
    sh:description "Unique identifier" ;
    sh:datatype xsd:long ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductReview/dateCreated> ;
    sh:name "date created" ;
    sh:description "The date the review was created (in the site's timezone)" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductReview/dateCreatedGmt> ;
    sh:name "date created gmt" ;
    sh:description "The date the review was created (GMT)" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductReview/product> ;
    sh:name "product" ;
    sh:description "Product the review belongs to" ;
    sh:node woo:ProductShape ;
    sh:class woo:Product ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductReview/status> ;
    sh:name "status" ;
    sh:description "Status of the review" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "approved" "hold" "spam" "trash" "unspam" "untrash" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductReview/reviewer> ;
    sh:name "reviewer" ;
    sh:description "Reviewer name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductReview/reviewerEmail> ;
    sh:name "reviewer email" ;
    sh:description "Reviewer email" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductReview/review> ;
    sh:name "review" ;
    sh:description "Review content" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductReview/rating> ;
    sh:name "rating" ;
    sh:description "Review rating (0 to 5)" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
    sh:minInclusive "0"^^xsd:int ;
    sh:maxInclusive "5"^^xsd:int ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductReview/verified> ;
    sh:name "verified" ;
    sh:description "Whether reviewer purchased the product" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductReview/reviewerAvatarUrls> ;
    sh:name "reviewer avatar urls" ;
    sh:description "Avatar URLs for the reviewer" ;
    sh:node <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ProductReview/reviewerAvatarUrls/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ProductReview/reviewerAvatarUrls/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductReview/links> ;
    sh:name "links" ;
    sh:description "HAL links" ;
    sh:node woo:LinksShape ;
    sh:class woo:Links ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Product Review Input
woo:ProductReviewInputShape a sh:NodeShape ;
  sh:targetClass woo:ProductReviewInput ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductReviewInput/product> ;
    sh:name "product" ;
    sh:description "Product the review belongs to" ;
    sh:node woo:ProductShape ;
    sh:class woo:Product ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductReviewInput/status> ;
    sh:name "status" ;
    sh:description "Status of the review" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "approved" "hold" "spam" "trash" "unspam" "untrash" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductReviewInput/reviewer> ;
    sh:name "reviewer" ;
    sh:description "Reviewer name" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductReviewInput/reviewerEmail> ;
    sh:name "reviewer email" ;
    sh:description "Reviewer email" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductReviewInput/review> ;
    sh:name "review" ;
    sh:description "Review content" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductReviewInput/rating> ;
    sh:name "rating" ;
    sh:description "Review rating (0 to 5)" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
    sh:minInclusive "0"^^xsd:int ;
    sh:maxInclusive "5"^^xsd:int ;
  ] .

# Shape for Product Shipping Class Input
woo:ProductShippingClassInputShape a sh:NodeShape ;
  sh:targetClass woo:ProductShippingClassInput ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductShippingClassInput/name> ;
    sh:name "name" ;
    sh:description "Shipping class name" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductShippingClassInput/slug> ;
    sh:name "slug" ;
    sh:description "An alphanumeric identifier for the shipping class (slug)" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductShippingClassInput/description> ;
    sh:name "description" ;
    sh:description "Shipping class description" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Report
woo:ReportShape a sh:NodeShape ;
  sh:targetClass woo:Report ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Report/slug> ;
    sh:name "slug" ;
    sh:description "Report slug/identifier" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Report/description> ;
    sh:name "description" ;
    sh:description "Report description" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Report/links> ;
    sh:name "links" ;
    sh:description "HAL links" ;
    sh:node woo:LinksShape ;
    sh:class woo:Links ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Sales Report
woo:SalesReportShape a sh:NodeShape ;
  sh:targetClass woo:SalesReport ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SalesReport/totalSales> ;
    sh:name "total sales" ;
    sh:description "Gross sales in the period" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SalesReport/netSales> ;
    sh:name "net sales" ;
    sh:description "Net sales in the period" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SalesReport/averageSales> ;
    sh:name "average sales" ;
    sh:description "Average net daily sales" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SalesReport/totalOrders> ;
    sh:name "total orders" ;
    sh:description "Total number of orders placed" ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SalesReport/totalItems> ;
    sh:name "total items" ;
    sh:description "Total number of items purchased" ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SalesReport/totalTax> ;
    sh:name "total tax" ;
    sh:description "Total charged for taxes" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SalesReport/totalShipping> ;
    sh:name "total shipping" ;
    sh:description "Total charged for shipping" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SalesReport/totalRefunds> ;
    sh:name "total refunds" ;
    sh:description "Total of refunded orders" ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SalesReport/totalDiscount> ;
    sh:name "total discount" ;
    sh:description "Total of coupons used" ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SalesReport/totalsGroupedBy> ;
    sh:name "totals grouped by" ;
    sh:description "Group type (day, month, etc.)" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SalesReport/totals> ;
    sh:name "totals" ;
    sh:description "Totals breakdown by date" ;
    sh:node <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SalesReport/totals/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SalesReport/totals/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SalesReport/totalCustomers> ;
    sh:name "total customers" ;
    sh:description "Total number of customers" ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SalesReport/links> ;
    sh:name "links" ;
    sh:description "HAL links" ;
    sh:node woo:LinksShape ;
    sh:class woo:Links ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Sales Report Period
woo:SalesReportPeriodShape a sh:NodeShape ;
  sh:targetClass woo:SalesReportPeriod ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SalesReportPeriod/sales> ;
    sh:name "sales" ;
    sh:description "Sales amount" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SalesReportPeriod/orders> ;
    sh:name "orders" ;
    sh:description "Number of orders" ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SalesReportPeriod/items> ;
    sh:name "items" ;
    sh:description "Number of items" ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SalesReportPeriod/tax> ;
    sh:name "tax" ;
    sh:description "Tax amount" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SalesReportPeriod/shipping> ;
    sh:name "shipping" ;
    sh:description "Shipping amount" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SalesReportPeriod/discount> ;
    sh:name "discount" ;
    sh:description "Discount amount" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SalesReportPeriod/customers> ;
    sh:name "customers" ;
    sh:description "Number of customers" ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Top Sellers Report Item
woo:TopSellersReportItemShape a sh:NodeShape ;
  sh:targetClass woo:TopSellersReportItem ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.TopSellersReportItem/title> ;
    sh:name "title" ;
    sh:description "Product title" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.TopSellersReportItem/product> ;
    sh:name "product" ;
    sh:description "Product" ;
    sh:node woo:ProductShape ;
    sh:class woo:Product ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.TopSellersReportItem/quantity> ;
    sh:name "quantity" ;
    sh:description "Total number of purchases" ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.TopSellersReportItem/links> ;
    sh:name "links" ;
    sh:description "HAL links" ;
    sh:node woo:LinksShape ;
    sh:class woo:Links ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Report Totals Item
woo:ReportTotalsItemShape a sh:NodeShape ;
  sh:targetClass woo:ReportTotalsItem ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ReportTotalsItem/slug> ;
    sh:name "slug" ;
    sh:description "An alphanumeric identifier for the resource" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ReportTotalsItem/name> ;
    sh:name "name" ;
    sh:description "Item type name" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ReportTotalsItem/total> ;
    sh:name "total" ;
    sh:description "Total count" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Coupon
woo:CouponShape a sh:NodeShape ;
  sh:targetClass woo:Coupon ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Coupon/id> ;
    sh:name "id" ;
    sh:description "Unique identifier for the object" ;
    sh:datatype xsd:long ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Coupon/code> ;
    sh:name "code" ;
    sh:description "Coupon code" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Coupon/amount> ;
    sh:name "amount" ;
    sh:description "The amount of discount. Should always be numeric, even if setting a percentage." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Coupon/dateCreated> ;
    sh:name "date created" ;
    sh:description "The date the coupon was created, in the site's timezone" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Coupon/dateCreatedGmt> ;
    sh:name "date created gmt" ;
    sh:description "The date the coupon was created, as GMT" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Coupon/dateModified> ;
    sh:name "date modified" ;
    sh:description "The date the coupon was last modified, in the site's timezone" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Coupon/dateModifiedGmt> ;
    sh:name "date modified gmt" ;
    sh:description "The date the coupon was last modified, as GMT" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Coupon/discountType> ;
    sh:name "discount type" ;
    sh:description "Determines the type of discount that will be applied" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "percent" "fixed_cart" "fixed_product" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Coupon/description> ;
    sh:name "description" ;
    sh:description "Coupon description" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Coupon/status> ;
    sh:name "status" ;
    sh:description "Coupon publication status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Coupon/dateExpires> ;
    sh:name "date expires" ;
    sh:description "The date the coupon expires, in the site's timezone" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Coupon/dateExpiresGmt> ;
    sh:name "date expires gmt" ;
    sh:description "The date the coupon expires, as GMT" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Coupon/usageCount> ;
    sh:name "usage count" ;
    sh:description "Number of times the coupon has been used already" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Coupon/individualUse> ;
    sh:name "individual use" ;
    sh:description "If true, the coupon can only be used individually. Other applied coupons will be removed from the cart." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Coupon/products> ;
    sh:name "products" ;
    sh:description "List of products the coupon can be used on" ;
    sh:node woo:ProductShape ;
    sh:class woo:Product ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Coupon/excludedProducts> ;
    sh:name "excluded products" ;
    sh:description "List of products the coupon cannot be used on" ;
    sh:node woo:ProductShape ;
    sh:class woo:Product ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Coupon/usageLimit> ;
    sh:name "usage limit" ;
    sh:description "How many times the coupon can be used in total" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Coupon/usageLimitPerUser> ;
    sh:name "usage limit per user" ;
    sh:description "How many times the coupon can be used per customer" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Coupon/limitUsageToXItems> ;
    sh:name "limit usage to xitems" ;
    sh:description "Max number of items in the cart the coupon can be applied to" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Coupon/freeShipping> ;
    sh:name "free shipping" ;
    sh:description "If true and if the free shipping method requires a coupon, this coupon will enable free shipping" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Coupon/productCategories> ;
    sh:name "product categories" ;
    sh:description "List of category IDs the coupon applies to" ;
    sh:node woo:ProductCategoryShape ;
    sh:class woo:ProductCategory ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Coupon/excludedProductCategories> ;
    sh:name "excluded product categories" ;
    sh:description "List of category IDs the coupon does not apply to" ;
    sh:node woo:ProductCategoryShape ;
    sh:class woo:ProductCategory ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Coupon/excludeSaleItems> ;
    sh:name "exclude sale items" ;
    sh:description "If true, this coupon will not be applied to items that have sale prices" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Coupon/minimumAmount> ;
    sh:name "minimum amount" ;
    sh:description "Minimum order amount that needs to be in the cart before coupon applies" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Coupon/maximumAmount> ;
    sh:name "maximum amount" ;
    sh:description "Maximum order amount allowed when using the coupon" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Coupon/emailRestrictions> ;
    sh:name "email restrictions" ;
    sh:description "List of email addresses that can use this coupon" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Coupon/usedBy> ;
    sh:name "used by" ;
    sh:description "List of user IDs (or guest email addresses) that have used the coupon" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Coupon/metadata> ;
    sh:name "metadata" ;
    sh:description "Meta data" ;
    sh:node woo:MetadataShape ;
    sh:class woo:Metadata ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Coupon/links> ;
    sh:name "links" ;
    sh:description "HAL links" ;
    sh:node woo:LinksShape ;
    sh:class woo:Links ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Coupon Input
woo:CouponInputShape a sh:NodeShape ;
  sh:targetClass woo:CouponInput ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CouponInput/code> ;
    sh:name "code" ;
    sh:description "Coupon code" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CouponInput/amount> ;
    sh:name "amount" ;
    sh:description "The amount of discount. Should always be numeric, even if setting a percentage." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CouponInput/discountType> ;
    sh:name "discount type" ;
    sh:description "Determines the type of discount that will be applied" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "percent" "fixed_cart" "fixed_product" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CouponInput/description> ;
    sh:name "description" ;
    sh:description "Coupon description" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CouponInput/status> ;
    sh:name "status" ;
    sh:description "Coupon publication status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CouponInput/dateExpires> ;
    sh:name "date expires" ;
    sh:description "The date the coupon expires, in the site's timezone" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CouponInput/dateExpiresGmt> ;
    sh:name "date expires gmt" ;
    sh:description "The date the coupon expires, as GMT" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CouponInput/individualUse> ;
    sh:name "individual use" ;
    sh:description "If true, the coupon can only be used individually" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CouponInput/products> ;
    sh:name "products" ;
    sh:description "List of products the coupon can be used on" ;
    sh:node woo:ProductShape ;
    sh:class woo:Product ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CouponInput/excludedProducts> ;
    sh:name "excluded products" ;
    sh:description "List of products the coupon cannot be used on" ;
    sh:node woo:ProductShape ;
    sh:class woo:Product ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CouponInput/usageLimit> ;
    sh:name "usage limit" ;
    sh:description "How many times the coupon can be used in total" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CouponInput/usageLimitPerUser> ;
    sh:name "usage limit per user" ;
    sh:description "How many times the coupon can be used per customer" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CouponInput/limitUsageToXItems> ;
    sh:name "limit usage to xitems" ;
    sh:description "Max number of items in the cart the coupon can be applied to" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CouponInput/freeShipping> ;
    sh:name "free shipping" ;
    sh:description "If true, this coupon grants free shipping" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CouponInput/productCategories> ;
    sh:name "product categories" ;
    sh:description "List of category IDs the coupon applies to" ;
    sh:node woo:ProductCategoryShape ;
    sh:class woo:ProductCategory ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CouponInput/excludedProductCategories> ;
    sh:name "excluded product categories" ;
    sh:description "List of category IDs the coupon does not apply to" ;
    sh:node woo:ProductCategoryShape ;
    sh:class woo:ProductCategory ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CouponInput/excludeSaleItems> ;
    sh:name "exclude sale items" ;
    sh:description "If true, this coupon will not be applied to items that have sale prices" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CouponInput/minimumAmount> ;
    sh:name "minimum amount" ;
    sh:description "Minimum order amount that needs to be in the cart before coupon applies" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CouponInput/maximumAmount> ;
    sh:name "maximum amount" ;
    sh:description "Maximum order amount allowed when using the coupon" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CouponInput/emailRestrictions> ;
    sh:name "email restrictions" ;
    sh:description "List of email addresses that can use this coupon" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.CouponInput/metadata> ;
    sh:name "metadata" ;
    sh:description "Meta data" ;
    sh:node woo:MetadataShape ;
    sh:class woo:Metadata ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Tax Rate Input
woo:TaxRateInputShape a sh:NodeShape ;
  sh:targetClass woo:TaxRateInput ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.TaxRateInput/country> ;
    sh:name "country" ;
    sh:description "Country ISO 3166 code" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.TaxRateInput/state> ;
    sh:name "state" ;
    sh:description "State code" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.TaxRateInput/postcode> ;
    sh:name "postcode" ;
    sh:description "Postcode/ZIP. Deprecated: use postcodes instead" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.TaxRateInput/city> ;
    sh:name "city" ;
    sh:description "City name. Deprecated: use cities instead" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.TaxRateInput/postcodes> ;
    sh:name "postcodes" ;
    sh:description "Postcodes/ZIPs" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.TaxRateInput/cities> ;
    sh:name "cities" ;
    sh:description "City names" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.TaxRateInput/rate> ;
    sh:name "rate" ;
    sh:description "Tax rate" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.TaxRateInput/name> ;
    sh:name "name" ;
    sh:description "Tax rate name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.TaxRateInput/priority> ;
    sh:name "priority" ;
    sh:description "Tax priority. Only 1 matching rate per priority will be used. Default is 1." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.TaxRateInput/compound> ;
    sh:name "compound" ;
    sh:description "Whether this is a compound tax rate. Compound rates are applied on top of other tax rates. Default is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.TaxRateInput/shipping> ;
    sh:name "shipping" ;
    sh:description "Whether this tax rate also gets applied to shipping. Default is true." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.TaxRateInput/order> ;
    sh:name "order" ;
    sh:description "Indicates the order that will appear in queries" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.TaxRateInput/taxClass> ;
    sh:name "tax class" ;
    sh:description "Tax class. Default is 'standard'." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Tax Class
woo:TaxClassShape a sh:NodeShape ;
  sh:targetClass woo:TaxClass ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.TaxClass/slug> ;
    sh:name "slug" ;
    sh:description "Unique identifier for the resource" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.TaxClass/name> ;
    sh:name "name" ;
    sh:description "Tax class name" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.TaxClass/links> ;
    sh:name "links" ;
    sh:description "HAL links" ;
    sh:node woo:LinksShape ;
    sh:class woo:Links ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Tax Class Input
woo:TaxClassInputShape a sh:NodeShape ;
  sh:targetClass woo:TaxClassInput ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.TaxClassInput/name> ;
    sh:name "name" ;
    sh:description "Tax class name" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Shipping Method
woo:ShippingMethodShape a sh:NodeShape ;
  sh:targetClass woo:ShippingMethod ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingMethod/id> ;
    sh:name "id" ;
    sh:description "Method ID" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingMethod/title> ;
    sh:name "title" ;
    sh:description "Shipping method title" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingMethod/description> ;
    sh:name "description" ;
    sh:description "Shipping method description" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingMethod/links> ;
    sh:name "links" ;
    sh:description "HAL links" ;
    sh:node woo:LinksShape ;
    sh:class woo:Links ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Shipping Zone
woo:ShippingZoneShape a sh:NodeShape ;
  sh:targetClass woo:ShippingZone ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingZone/id> ;
    sh:name "id" ;
    sh:description "Unique identifier for the resource" ;
    sh:datatype xsd:long ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingZone/name> ;
    sh:name "name" ;
    sh:description "Shipping zone name" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingZone/order> ;
    sh:name "order" ;
    sh:description "Shipping zone order" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingZone/links> ;
    sh:name "links" ;
    sh:description "HAL links" ;
    sh:node woo:LinksShape ;
    sh:class woo:Links ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Shipping Zone Input
woo:ShippingZoneInputShape a sh:NodeShape ;
  sh:targetClass woo:ShippingZoneInput ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingZoneInput/name> ;
    sh:name "name" ;
    sh:description "Shipping zone name" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingZoneInput/order> ;
    sh:name "order" ;
    sh:description "Shipping zone order" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Shipping Zone Location
woo:ShippingZoneLocationShape a sh:NodeShape ;
  sh:targetClass woo:ShippingZoneLocation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingZoneLocation/code> ;
    sh:name "code" ;
    sh:description "Shipping zone location code" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingZoneLocation/type> ;
    sh:name "type" ;
    sh:description "Shipping zone location type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "postcode" "state" "country" "continent" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingZoneLocation/links> ;
    sh:name "links" ;
    sh:description "HAL links" ;
    sh:node woo:LinksShape ;
    sh:class woo:Links ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Shipping Zone Location Input
woo:ShippingZoneLocationInputShape a sh:NodeShape ;
  sh:targetClass woo:ShippingZoneLocationInput ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingZoneLocationInput/code> ;
    sh:name "code" ;
    sh:description "Shipping zone location code" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingZoneLocationInput/type> ;
    sh:name "type" ;
    sh:description "Shipping zone location type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "postcode" "state" "country" "continent" ) ;
  ] .

# Shape for Shipping Zone Method Setting
woo:ShippingZoneMethodSettingShape a sh:NodeShape ;
  sh:targetClass woo:ShippingZoneMethodSetting ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingZoneMethodSetting/settingIdentifier> ;
    sh:name "setting identifier" ;
    sh:description "A unique identifier for the setting" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingZoneMethodSetting/label> ;
    sh:name "label" ;
    sh:description "A human readable label for the setting used in interfaces" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingZoneMethodSetting/description> ;
    sh:name "description" ;
    sh:description "A human readable description for the setting used in interfaces" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingZoneMethodSetting/type> ;
    sh:name "type" ;
    sh:description "Type of setting" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "text" "email" "number" "color" "password" "textarea" "select" "multiselect" "radio" "image_width" "checkbox" "title" "price" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingZoneMethodSetting/value> ;
    sh:name "value" ;
    sh:description "Setting value" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingZoneMethodSetting/default> ;
    sh:name "default" ;
    sh:description "Default value for the setting" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingZoneMethodSetting/tip> ;
    sh:name "tip" ;
    sh:description "Additional help text shown to the user about the setting" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingZoneMethodSetting/placeholder> ;
    sh:name "placeholder" ;
    sh:description "Placeholder text to be displayed in text inputs" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingZoneMethodSetting/options> ;
    sh:name "options" ;
    sh:description "Options for select/multiselect types. Keys are option values, values are display labels." ;
    sh:node <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ShippingZoneMethodSetting/options/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ShippingZoneMethodSetting/options/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Shipping Zone Method
woo:ShippingZoneMethodShape a sh:NodeShape ;
  sh:targetClass woo:ShippingZoneMethod ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingZoneMethod/instance> ;
    sh:name "instance" ;
    sh:description "Shipping method instance ID" ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingZoneMethod/title> ;
    sh:name "title" ;
    sh:description "Shipping method customer facing title" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingZoneMethod/order> ;
    sh:name "order" ;
    sh:description "Shipping method sort order" ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingZoneMethod/enabled> ;
    sh:name "enabled" ;
    sh:description "Shipping method enabled status" ;
    sh:datatype xsd:boolean ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingZoneMethod/methodId> ;
    sh:name "method id" ;
    sh:description "Shipping method ID" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingZoneMethod/methodTitle> ;
    sh:name "method title" ;
    sh:description "Shipping method title" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingZoneMethod/methodDescription> ;
    sh:name "method description" ;
    sh:description "Shipping method description" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingZoneMethod/settings> ;
    sh:name "settings" ;
    sh:description "Shipping method settings. Keys are setting IDs." ;
    sh:node <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ShippingZoneMethod/settings/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ShippingZoneMethod/settings/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingZoneMethod/links> ;
    sh:name "links" ;
    sh:description "HAL links" ;
    sh:node woo:LinksShape ;
    sh:class woo:Links ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Shipping Zone Method Create Input
woo:ShippingZoneMethodCreateInputShape a sh:NodeShape ;
  sh:targetClass woo:ShippingZoneMethodCreateInput ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingZoneMethodCreateInput/methodId> ;
    sh:name "method id" ;
    sh:description "Shipping method ID (e.g., 'flat_rate', 'free_shipping', 'local_pickup')" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingZoneMethodCreateInput/order> ;
    sh:name "order" ;
    sh:description "Shipping method sort order" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingZoneMethodCreateInput/enabled> ;
    sh:name "enabled" ;
    sh:description "Shipping method enabled status" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Shipping Zone Method Update Input
woo:ShippingZoneMethodUpdateInputShape a sh:NodeShape ;
  sh:targetClass woo:ShippingZoneMethodUpdateInput ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingZoneMethodUpdateInput/order> ;
    sh:name "order" ;
    sh:description "Shipping method sort order" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingZoneMethodUpdateInput/enabled> ;
    sh:name "enabled" ;
    sh:description "Shipping method enabled status" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingZoneMethodUpdateInput/settings> ;
    sh:name "settings" ;
    sh:description "Settings to update. Keys are setting IDs, values are the new setting values." ;
    sh:node <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ShippingZoneMethodUpdateInput/settings/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ShippingZoneMethodUpdateInput/settings/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Setting Options Link
woo:SettingOptionsLinkShape a sh:NodeShape ;
  sh:targetClass woo:SettingOptionsLink ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SettingOptionsLink/href> ;
    sh:name "href" ;
    sh:description "URL to the setting options" ;
    sh:datatype xsd:anyURI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Setting Group Links
woo:SettingGroupLinksShape a sh:NodeShape ;
  sh:targetClass woo:SettingGroupLinks ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SettingGroupLinks/options> ;
    sh:name "options" ;
    sh:description "Link to the setting options for this group" ;
    sh:node woo:SettingOptionsLinkShape ;
    sh:class woo:SettingOptionsLink ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Setting Group
woo:SettingGroupShape a sh:NodeShape ;
  sh:targetClass woo:SettingGroup ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SettingGroup/id> ;
    sh:name "id" ;
    sh:description "A unique identifier that can be used to link settings together" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SettingGroup/label> ;
    sh:name "label" ;
    sh:description "A human readable label for the setting used in interfaces" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SettingGroup/description> ;
    sh:name "description" ;
    sh:description "A human readable description for the setting used in interfaces" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SettingGroup/parentId> ;
    sh:name "parent id" ;
    sh:description "ID of parent grouping" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SettingGroup/subGroups> ;
    sh:name "sub groups" ;
    sh:description "IDs for settings sub groups" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SettingGroup/links> ;
    sh:name "links" ;
    sh:description "HAL links" ;
    sh:node woo:SettingGroupLinksShape ;
    sh:class woo:SettingGroupLinks ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Setting Option
woo:SettingOptionShape a sh:NodeShape ;
  sh:targetClass woo:SettingOption ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SettingOption/id> ;
    sh:name "id" ;
    sh:description "A unique identifier for the setting" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SettingOption/label> ;
    sh:name "label" ;
    sh:description "A human readable label for the setting used in interfaces" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SettingOption/description> ;
    sh:name "description" ;
    sh:description "A human readable description for the setting used in interfaces" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SettingOption/value> ;
    sh:name "value" ;
    sh:description "Setting value. String for most types, array of strings for multiselect." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SettingOption/default> ;
    sh:name "default" ;
    sh:description "Default value for the setting. String for most types, array of strings for multiselect." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SettingOption/tip> ;
    sh:name "tip" ;
    sh:description "Additional help text shown to the user about the setting" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SettingOption/placeholder> ;
    sh:name "placeholder" ;
    sh:description "Placeholder text to be displayed in text inputs" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SettingOption/type> ;
    sh:name "type" ;
    sh:description "Type of setting control" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "text" "email" "number" "color" "password" "textarea" "select" "multiselect" "radio" "image_width" "checkbox" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SettingOption/options> ;
    sh:name "options" ;
    sh:description "Array of options (key value pairs) for inputs such as select, multiselect, and radio buttons" ;
    sh:node <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SettingOption/options/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SettingOption/options/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SettingOption/groupId> ;
    sh:name "group id" ;
    sh:description "An identifier for the group this setting belongs to" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SettingOption/links> ;
    sh:name "links" ;
    sh:description "HAL links" ;
    sh:node woo:LinksShape ;
    sh:class woo:Links ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Setting Option Input
woo:SettingOptionInputShape a sh:NodeShape ;
  sh:targetClass woo:SettingOptionInput ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SettingOptionInput/value> ;
    sh:name "value" ;
    sh:description "Setting value to update. String for most types, array of strings for multiselect." ;
    sh:datatype xsd:string ;
  ] .

# Shape for Setting Option Batch Input
woo:SettingOptionBatchInputShape a sh:NodeShape ;
  sh:targetClass woo:SettingOptionBatchInput ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SettingOptionBatchInput/settingIdentifier> ;
    sh:name "setting identifier" ;
    sh:description "Setting ID" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SettingOptionBatchInput/value> ;
    sh:name "value" ;
    sh:description "Setting value to update. String for most types, array of strings for multiselect." ;
    sh:datatype xsd:string ;
  ] .

# Shape for Setting Option Batch Request
woo:SettingOptionBatchRequestShape a sh:NodeShape ;
  sh:targetClass woo:SettingOptionBatchRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SettingOptionBatchRequest/update> ;
    sh:name "update" ;
    sh:description "Settings to update" ;
    sh:node woo:SettingOptionBatchInputShape ;
    sh:class woo:SettingOptionBatchInput ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Setting Option Batch Response
woo:SettingOptionBatchResponseShape a sh:NodeShape ;
  sh:targetClass woo:SettingOptionBatchResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SettingOptionBatchResponse/update> ;
    sh:name "update" ;
    sh:description "Updated settings" ;
    sh:node woo:SettingOptionShape ;
    sh:class woo:SettingOption ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Payment Gateway Setting
woo:PaymentGatewaySettingShape a sh:NodeShape ;
  sh:targetClass woo:PaymentGatewaySetting ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.PaymentGatewaySetting/settingIdentifier> ;
    sh:name "setting identifier" ;
    sh:description "A unique identifier for the setting" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.PaymentGatewaySetting/label> ;
    sh:name "label" ;
    sh:description "A human readable label for the setting used in interfaces" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.PaymentGatewaySetting/description> ;
    sh:name "description" ;
    sh:description "A human readable description for the setting used in interfaces" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.PaymentGatewaySetting/type> ;
    sh:name "type" ;
    sh:description "Type of setting control" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "text" "email" "number" "color" "password" "textarea" "select" "multiselect" "radio" "image_width" "checkbox" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.PaymentGatewaySetting/value> ;
    sh:name "value" ;
    sh:description "Setting value" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.PaymentGatewaySetting/default> ;
    sh:name "default" ;
    sh:description "Default value for the setting" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.PaymentGatewaySetting/tip> ;
    sh:name "tip" ;
    sh:description "Additional help text shown to the user about the setting" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.PaymentGatewaySetting/placeholder> ;
    sh:name "placeholder" ;
    sh:description "Placeholder text to be displayed in text inputs" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.PaymentGatewaySetting/options> ;
    sh:name "options" ;
    sh:description "Array of options (key value pairs) for inputs such as select, multiselect, and radio buttons" ;
    sh:node <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.PaymentGatewaySetting/options/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.PaymentGatewaySetting/options/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Payment Gateway
woo:PaymentGatewayShape a sh:NodeShape ;
  sh:targetClass woo:PaymentGateway ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.PaymentGateway/id> ;
    sh:name "id" ;
    sh:description "Payment gateway ID" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.PaymentGateway/title> ;
    sh:name "title" ;
    sh:description "Payment gateway title on checkout" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.PaymentGateway/description> ;
    sh:name "description" ;
    sh:description "Payment gateway description on checkout" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.PaymentGateway/order> ;
    sh:name "order" ;
    sh:description "Payment gateway sort order" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.PaymentGateway/enabled> ;
    sh:name "enabled" ;
    sh:description "Payment gateway enabled status" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.PaymentGateway/methodTitle> ;
    sh:name "method title" ;
    sh:description "Payment gateway method title" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.PaymentGateway/methodDescription> ;
    sh:name "method description" ;
    sh:description "Payment gateway method description" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.PaymentGateway/methodSupports> ;
    sh:name "method supports" ;
    sh:description "Supported features for this payment gateway" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.PaymentGateway/settings> ;
    sh:name "settings" ;
    sh:description "Payment gateway settings, keyed by setting ID" ;
    sh:node <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.PaymentGateway/settings/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.PaymentGateway/settings/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.PaymentGateway/links> ;
    sh:name "links" ;
    sh:description "HAL links" ;
    sh:node woo:LinksShape ;
    sh:class woo:Links ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Payment Gateway Input
woo:PaymentGatewayInputShape a sh:NodeShape ;
  sh:targetClass woo:PaymentGatewayInput ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.PaymentGatewayInput/title> ;
    sh:name "title" ;
    sh:description "Payment gateway title on checkout" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.PaymentGatewayInput/description> ;
    sh:name "description" ;
    sh:description "Payment gateway description on checkout" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.PaymentGatewayInput/order> ;
    sh:name "order" ;
    sh:description "Payment gateway sort order" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.PaymentGatewayInput/enabled> ;
    sh:name "enabled" ;
    sh:description "Payment gateway enabled status" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.PaymentGatewayInput/settings> ;
    sh:name "settings" ;
    sh:description "Settings values to update, keyed by setting ID" ;
    sh:node <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.PaymentGatewayInput/settings/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.PaymentGatewayInput/settings/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Webhook
woo:WebhookShape a sh:NodeShape ;
  sh:targetClass woo:Webhook ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Webhook/id> ;
    sh:name "id" ;
    sh:description "Unique identifier for the resource" ;
    sh:datatype xsd:long ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Webhook/name> ;
    sh:name "name" ;
    sh:description "A friendly name for the webhook" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Webhook/status> ;
    sh:name "status" ;
    sh:description "Webhook status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "active" "paused" "disabled" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Webhook/topic> ;
    sh:name "topic" ;
    sh:description "Webhook topic (e.g., order.updated)" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Webhook/resource> ;
    sh:name "resource" ;
    sh:description "Webhook resource (derived from topic)" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Webhook/event> ;
    sh:name "event" ;
    sh:description "Webhook event (derived from topic)" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Webhook/hooks> ;
    sh:name "hooks" ;
    sh:description "WooCommerce action names associated with the webhook" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Webhook/deliveryUrl> ;
    sh:name "delivery url" ;
    sh:description "The URL where the webhook payload is delivered" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Webhook/secret> ;
    sh:name "secret" ;
    sh:description "Secret key used to generate a hash of the delivered webhook (HMAC-SHA256)" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Webhook/dateCreated> ;
    sh:name "date created" ;
    sh:description "The date the webhook was created, in the site's timezone" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Webhook/dateCreatedGmt> ;
    sh:name "date created gmt" ;
    sh:description "The date the webhook was created, as GMT" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Webhook/dateModified> ;
    sh:name "date modified" ;
    sh:description "The date the webhook was last modified, in the site's timezone" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Webhook/dateModifiedGmt> ;
    sh:name "date modified gmt" ;
    sh:description "The date the webhook was last modified, as GMT" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Webhook/links> ;
    sh:name "links" ;
    sh:description "HAL links" ;
    sh:node woo:LinksShape ;
    sh:class woo:Links ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Webhook Create Input
woo:WebhookCreateInputShape a sh:NodeShape ;
  sh:targetClass woo:WebhookCreateInput ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.WebhookCreateInput/name> ;
    sh:name "name" ;
    sh:description "A friendly name for the webhook" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.WebhookCreateInput/status> ;
    sh:name "status" ;
    sh:description "Webhook status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "active" "paused" "disabled" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.WebhookCreateInput/topic> ;
    sh:name "topic" ;
    sh:description "Webhook topic (e.g., order.updated)" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.WebhookCreateInput/deliveryUrl> ;
    sh:name "delivery url" ;
    sh:description "The URL where the webhook payload is delivered" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.WebhookCreateInput/secret> ;
    sh:name "secret" ;
    sh:description "Secret key used to generate a hash of the delivered webhook" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Webhook Update Input
woo:WebhookUpdateInputShape a sh:NodeShape ;
  sh:targetClass woo:WebhookUpdateInput ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.WebhookUpdateInput/name> ;
    sh:name "name" ;
    sh:description "A friendly name for the webhook" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.WebhookUpdateInput/status> ;
    sh:name "status" ;
    sh:description "Webhook status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "active" "paused" "disabled" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.WebhookUpdateInput/topic> ;
    sh:name "topic" ;
    sh:description "Webhook topic (e.g., order.updated)" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.WebhookUpdateInput/secret> ;
    sh:name "secret" ;
    sh:description "Secret key used to generate a hash of the delivered webhook" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for System Status Environment
woo:SystemStatusEnvironmentShape a sh:NodeShape ;
  sh:targetClass woo:SystemStatusEnvironment ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusEnvironment/homeUrl> ;
    sh:name "home url" ;
    sh:description "Home URL" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusEnvironment/siteUrl> ;
    sh:name "site url" ;
    sh:description "Site URL" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusEnvironment/version> ;
    sh:name "version" ;
    sh:description "WooCommerce version" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusEnvironment/logDirectory> ;
    sh:name "log directory" ;
    sh:description "Log directory" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusEnvironment/logDirectoryWritable> ;
    sh:name "log directory writable" ;
    sh:description "Is log directory writable?" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusEnvironment/wpVersion> ;
    sh:name "wp version" ;
    sh:description "WordPress version" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusEnvironment/wpMultisite> ;
    sh:name "wp multisite" ;
    sh:description "Is WordPress multisite?" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusEnvironment/wpMemoryLimit> ;
    sh:name "wp memory limit" ;
    sh:description "WordPress memory limit" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusEnvironment/wpDebugMode> ;
    sh:name "wp debug mode" ;
    sh:description "Is WordPress debug mode active?" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusEnvironment/wpCron> ;
    sh:name "wp cron" ;
    sh:description "Are WordPress cron jobs enabled?" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusEnvironment/wpEnvironmentType> ;
    sh:name "wp environment type" ;
    sh:description "WordPress environment type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusEnvironment/language> ;
    sh:name "language" ;
    sh:description "WordPress language" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusEnvironment/serverInfo> ;
    sh:name "server info" ;
    sh:description "Server info" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusEnvironment/phpVersion> ;
    sh:name "php version" ;
    sh:description "PHP version" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusEnvironment/phpPostMaxSize> ;
    sh:name "php post max size" ;
    sh:description "PHP post max size" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusEnvironment/phpMaxExecutionTime> ;
    sh:name "php max execution time" ;
    sh:description "PHP max execution time" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusEnvironment/phpMaxInputVars> ;
    sh:name "php max input vars" ;
    sh:description "PHP max input vars" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusEnvironment/curlVersion> ;
    sh:name "curl version" ;
    sh:description "cURL version" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusEnvironment/suhosinInstalled> ;
    sh:name "suhosin installed" ;
    sh:description "Is SUHOSIN installed?" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusEnvironment/maxUploadSize> ;
    sh:name "max upload size" ;
    sh:description "Max upload size" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusEnvironment/mysqlVersion> ;
    sh:name "mysql version" ;
    sh:description "MySQL version" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusEnvironment/defaultTimezone> ;
    sh:name "default timezone" ;
    sh:description "Default timezone" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusEnvironment/fsockopenOrCurlEnabled> ;
    sh:name "fsockopen or curl enabled" ;
    sh:description "Is fsockopen/cURL enabled?" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusEnvironment/soapclientEnabled> ;
    sh:name "soapclient enabled" ;
    sh:description "Is SoapClient class enabled?" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusEnvironment/domdocumentEnabled> ;
    sh:name "domdocument enabled" ;
    sh:description "Is DomDocument class enabled?" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusEnvironment/gzipEnabled> ;
    sh:name "gzip enabled" ;
    sh:description "Is GZip enabled?" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusEnvironment/mbstringEnabled> ;
    sh:name "mbstring enabled" ;
    sh:description "Is mbstring enabled?" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusEnvironment/remotePostSuccessful> ;
    sh:name "remote post successful" ;
    sh:description "Remote POST successful?" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusEnvironment/remotePostResponse> ;
    sh:name "remote post response" ;
    sh:description "Remote POST response" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusEnvironment/remoteGetSuccessful> ;
    sh:name "remote get successful" ;
    sh:description "Remote GET successful?" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusEnvironment/remoteGetResponse> ;
    sh:name "remote get response" ;
    sh:description "Remote GET response" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for System Status Database
woo:SystemStatusDatabaseShape a sh:NodeShape ;
  sh:targetClass woo:SystemStatusDatabase ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusDatabase/wcDatabaseVersion> ;
    sh:name "wc database version" ;
    sh:description "WooCommerce database version" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusDatabase/databasePrefix> ;
    sh:name "database prefix" ;
    sh:description "Database prefix" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusDatabase/maxmindGeoipDatabase> ;
    sh:name "maxmind geoip database" ;
    sh:description "MaxMind GeoIP database" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusDatabase/databaseTables> ;
    sh:name "database tables" ;
    sh:description "Database tables (table name to existence status)" ;
    sh:node <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SystemStatusDatabase/databaseTables/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SystemStatusDatabase/databaseTables/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for System Status Active Plugin
woo:SystemStatusActivePluginShape a sh:NodeShape ;
  sh:targetClass woo:SystemStatusActivePlugin ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusActivePlugin/plugin> ;
    sh:name "plugin" ;
    sh:description "Plugin path" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusActivePlugin/name> ;
    sh:name "name" ;
    sh:description "Plugin name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusActivePlugin/version> ;
    sh:name "version" ;
    sh:description "Plugin version" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusActivePlugin/versionLatest> ;
    sh:name "version latest" ;
    sh:description "Latest version of the plugin" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusActivePlugin/url> ;
    sh:name "url" ;
    sh:description "Plugin URL" ;
    sh:datatype xsd:anyURI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusActivePlugin/authorName> ;
    sh:name "author name" ;
    sh:description "Plugin author name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusActivePlugin/authorUrl> ;
    sh:name "author url" ;
    sh:description "Plugin author URL" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusActivePlugin/networkActivated> ;
    sh:name "network activated" ;
    sh:description "Is the plugin network activated?" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for System Status Theme Override
woo:SystemStatusThemeOverrideShape a sh:NodeShape ;
  sh:targetClass woo:SystemStatusThemeOverride ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusThemeOverride/file> ;
    sh:name "file" ;
    sh:description "Template file path" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusThemeOverride/version> ;
    sh:name "version" ;
    sh:description "Version of the template" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusThemeOverride/coreVersion> ;
    sh:name "core version" ;
    sh:description "Core version of the template" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for System Status Theme
woo:SystemStatusThemeShape a sh:NodeShape ;
  sh:targetClass woo:SystemStatusTheme ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusTheme/name> ;
    sh:name "name" ;
    sh:description "Theme name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusTheme/version> ;
    sh:name "version" ;
    sh:description "Theme version" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusTheme/versionLatest> ;
    sh:name "version latest" ;
    sh:description "Latest version of the theme" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusTheme/authorUrl> ;
    sh:name "author url" ;
    sh:description "Theme author URL" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusTheme/isChildTheme> ;
    sh:name "is child theme" ;
    sh:description "Is this theme a child theme?" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusTheme/hasWoocommerceSupport> ;
    sh:name "has woocommerce support" ;
    sh:description "Does the theme declare WooCommerce support?" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusTheme/hasWoocommerceFile> ;
    sh:name "has woocommerce file" ;
    sh:description "Does the theme have a woocommerce.php file?" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusTheme/hasOutdatedTemplates> ;
    sh:name "has outdated templates" ;
    sh:description "Does this theme have outdated templates?" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusTheme/overrides> ;
    sh:name "overrides" ;
    sh:description "Template overrides" ;
    sh:node woo:SystemStatusThemeOverrideShape ;
    sh:class woo:SystemStatusThemeOverride ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusTheme/parentName> ;
    sh:name "parent name" ;
    sh:description "Parent theme name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusTheme/parentVersion> ;
    sh:name "parent version" ;
    sh:description "Parent theme version" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusTheme/parentVersionLatest> ;
    sh:name "parent version latest" ;
    sh:description "Latest version of the parent theme" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusTheme/parentAuthorUrl> ;
    sh:name "parent author url" ;
    sh:description "Parent theme author URL" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for System Status Settings
woo:SystemStatusSettingsShape a sh:NodeShape ;
  sh:targetClass woo:SystemStatusSettings ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusSettings/apiEnabled> ;
    sh:name "api enabled" ;
    sh:description "REST API enabled?" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusSettings/forceSsl> ;
    sh:name "force ssl" ;
    sh:description "SSL forced?" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusSettings/currency> ;
    sh:name "currency" ;
    sh:description "Currency" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusSettings/currencySymbol> ;
    sh:name "currency symbol" ;
    sh:description "Currency symbol" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusSettings/currencyPosition> ;
    sh:name "currency position" ;
    sh:description "Currency position" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusSettings/thousandSeparator> ;
    sh:name "thousand separator" ;
    sh:description "Thousand separator" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusSettings/decimalSeparator> ;
    sh:name "decimal separator" ;
    sh:description "Decimal separator" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusSettings/numberOfDecimals> ;
    sh:name "number of decimals" ;
    sh:description "Number of decimals" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusSettings/geolocationEnabled> ;
    sh:name "geolocation enabled" ;
    sh:description "Geolocation enabled?" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusSettings/taxonomies> ;
    sh:name "taxonomies" ;
    sh:description "Taxonomy terms for product/order statuses" ;
    sh:node <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SystemStatusSettings/taxonomies/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SystemStatusSettings/taxonomies/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for System Status Security
woo:SystemStatusSecurityShape a sh:NodeShape ;
  sh:targetClass woo:SystemStatusSecurity ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusSecurity/secureConnection> ;
    sh:name "secure connection" ;
    sh:description "Is the connection to your store secure?" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusSecurity/hideErrors> ;
    sh:name "hide errors" ;
    sh:description "Hide errors from visitors?" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for System Status Page
woo:SystemStatusPageShape a sh:NodeShape ;
  sh:targetClass woo:SystemStatusPage ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusPage/pageName> ;
    sh:name "page name" ;
    sh:description "Page name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusPage/pageId> ;
    sh:name "page id" ;
    sh:description "Page ID" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusPage/pageSet> ;
    sh:name "page set" ;
    sh:description "Is the page set?" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusPage/pageExists> ;
    sh:name "page exists" ;
    sh:description "Does the page exist?" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusPage/pageVisible> ;
    sh:name "page visible" ;
    sh:description "Is the page visible?" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusPage/shortcode> ;
    sh:name "shortcode" ;
    sh:description "Shortcode for the page" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusPage/shortcodeRequired> ;
    sh:name "shortcode required" ;
    sh:description "Is the shortcode required?" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusPage/shortcodePresent> ;
    sh:name "shortcode present" ;
    sh:description "Is the shortcode present?" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for System Status
woo:SystemStatusShape a sh:NodeShape ;
  sh:targetClass woo:SystemStatus ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatus/environment> ;
    sh:name "environment" ;
    sh:description "Environment properties" ;
    sh:node woo:SystemStatusEnvironmentShape ;
    sh:class woo:SystemStatusEnvironment ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatus/database> ;
    sh:name "database" ;
    sh:description "Database properties" ;
    sh:node woo:SystemStatusDatabaseShape ;
    sh:class woo:SystemStatusDatabase ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatus/activePlugins> ;
    sh:name "active plugins" ;
    sh:description "Active plugins" ;
    sh:node woo:SystemStatusActivePluginShape ;
    sh:class woo:SystemStatusActivePlugin ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatus/theme> ;
    sh:name "theme" ;
    sh:description "Theme properties" ;
    sh:node woo:SystemStatusThemeShape ;
    sh:class woo:SystemStatusTheme ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatus/settings> ;
    sh:name "settings" ;
    sh:description "Settings properties" ;
    sh:node woo:SystemStatusSettingsShape ;
    sh:class woo:SystemStatusSettings ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatus/security> ;
    sh:name "security" ;
    sh:description "Security properties" ;
    sh:node woo:SystemStatusSecurityShape ;
    sh:class woo:SystemStatusSecurity ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatus/pages> ;
    sh:name "pages" ;
    sh:description "WooCommerce pages" ;
    sh:node woo:SystemStatusPageShape ;
    sh:class woo:SystemStatusPage ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatus/links> ;
    sh:name "links" ;
    sh:description "HAL links" ;
    sh:node woo:LinksShape ;
    sh:class woo:Links ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for System Status Tool
woo:SystemStatusToolShape a sh:NodeShape ;
  sh:targetClass woo:SystemStatusTool ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusTool/id> ;
    sh:name "id" ;
    sh:description "A unique identifier for the tool" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusTool/name> ;
    sh:name "name" ;
    sh:description "Tool name" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusTool/action> ;
    sh:name "action" ;
    sh:description "What running the tool will do" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusTool/description> ;
    sh:name "description" ;
    sh:description "Tool description" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusTool/success> ;
    sh:name "success" ;
    sh:description "Did the tool run successfully?" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusTool/message> ;
    sh:name "message" ;
    sh:description "Tool return message" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusTool/links> ;
    sh:name "links" ;
    sh:description "HAL links" ;
    sh:node woo:LinksShape ;
    sh:class woo:Links ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for System Status Tool Run Input
woo:SystemStatusToolRunInputShape a sh:NodeShape ;
  sh:targetClass woo:SystemStatusToolRunInput ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusToolRunInput/confirm> ;
    sh:name "confirm" ;
    sh:description "Confirm execution of the tool" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Data Endpoint
woo:DataEndpointShape a sh:NodeShape ;
  sh:targetClass woo:DataEndpoint ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.DataEndpoint/slug> ;
    sh:name "slug" ;
    sh:description "Data resource ID" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.DataEndpoint/description> ;
    sh:name "description" ;
    sh:description "Data resource description" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.DataEndpoint/links> ;
    sh:name "links" ;
    sh:description "HAL links" ;
    sh:node woo:LinksShape ;
    sh:class woo:Links ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for State
woo:StateShape a sh:NodeShape ;
  sh:targetClass woo:State ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.State/code> ;
    sh:name "code" ;
    sh:description "State code" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.State/name> ;
    sh:name "name" ;
    sh:description "Full name of state" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Continent Country
woo:ContinentCountryShape a sh:NodeShape ;
  sh:targetClass woo:ContinentCountry ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ContinentCountry/code> ;
    sh:name "code" ;
    sh:description "ISO3166 alpha-2 country code" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ContinentCountry/name> ;
    sh:name "name" ;
    sh:description "Full name of country" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ContinentCountry/currencyCode> ;
    sh:name "currency code" ;
    sh:description "Default ISO4217 alpha-3 currency code for the country" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ContinentCountry/currencyPos> ;
    sh:name "currency pos" ;
    sh:description "Currency symbol position for this country" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ContinentCountry/decimalSep> ;
    sh:name "decimal sep" ;
    sh:description "Decimal separator for displayed prices for this country" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ContinentCountry/dimensionUnit> ;
    sh:name "dimension unit" ;
    sh:description "The unit lengths are defined in for this country" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ContinentCountry/numDecimals> ;
    sh:name "num decimals" ;
    sh:description "Number of decimal points shown in displayed prices for this country" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ContinentCountry/thousandSep> ;
    sh:name "thousand sep" ;
    sh:description "Thousands separator for displayed prices in this country" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ContinentCountry/weightUnit> ;
    sh:name "weight unit" ;
    sh:description "The unit weights are defined in for this country" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ContinentCountry/states> ;
    sh:name "states" ;
    sh:description "List of states in this country" ;
    sh:node woo:StateShape ;
    sh:class woo:State ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Continent
woo:ContinentShape a sh:NodeShape ;
  sh:targetClass woo:Continent ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Continent/code> ;
    sh:name "code" ;
    sh:description "2 character continent code" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Continent/name> ;
    sh:name "name" ;
    sh:description "Full name of continent" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Continent/countries> ;
    sh:name "countries" ;
    sh:description "List of countries on this continent" ;
    sh:node woo:ContinentCountryShape ;
    sh:class woo:ContinentCountry ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Continent/links> ;
    sh:name "links" ;
    sh:description "HAL links" ;
    sh:node woo:LinksShape ;
    sh:class woo:Links ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Country
woo:CountryShape a sh:NodeShape ;
  sh:targetClass woo:Country ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Country/code> ;
    sh:name "code" ;
    sh:description "ISO3166 alpha-2 country code" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Country/name> ;
    sh:name "name" ;
    sh:description "Full name of country" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Country/states> ;
    sh:name "states" ;
    sh:description "List of states in this country" ;
    sh:node woo:StateShape ;
    sh:class woo:State ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Country/links> ;
    sh:name "links" ;
    sh:description "HAL links" ;
    sh:node woo:LinksShape ;
    sh:class woo:Links ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Currency
woo:CurrencyShape a sh:NodeShape ;
  sh:targetClass woo:Currency ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Currency/code> ;
    sh:name "code" ;
    sh:description "ISO4217 currency code" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Currency/name> ;
    sh:name "name" ;
    sh:description "Full name of currency" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Currency/symbol> ;
    sh:name "symbol" ;
    sh:description "Currency symbol" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Currency/links> ;
    sh:name "links" ;
    sh:description "HAL links" ;
    sh:node woo:LinksShape ;
    sh:class woo:Links ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Order Receipt Request
woo:OrderReceiptRequestShape a sh:NodeShape ;
  sh:targetClass woo:OrderReceiptRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderReceiptRequest/expirationDate> ;
    sh:name "expiration date" ;
    sh:description "Receipt expiration date in yyyy-mm-dd format" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderReceiptRequest/expirationDays> ;
    sh:name "expiration days" ;
    sh:description "Number of days until receipt expires" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.OrderReceiptRequest/forceNew> ;
    sh:name "force new" ;
    sh:description "Force generation of a new receipt URL even if one exists" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Send Order Details Request
woo:SendOrderDetailsRequestShape a sh:NodeShape ;
  sh:targetClass woo:SendOrderDetailsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SendOrderDetailsRequest/email> ;
    sh:name "email" ;
    sh:description "Email address to send to. Required if order has no billing email." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SendOrderDetailsRequest/forceEmailUpdate> ;
    sh:name "force email update" ;
    sh:description "If true, update the order's billing email with the provided email address." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Send Email Request
woo:SendEmailRequestShape a sh:NodeShape ;
  sh:targetClass woo:SendEmailRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SendEmailRequest/templateId> ;
    sh:name "template id" ;
    sh:description "The email template to use. If omitted (10.7.0+), the best template is auto-selected based on order status." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SendEmailRequest/email> ;
    sh:name "email" ;
    sh:description "Email address to send to. Required if order has no billing email." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SendEmailRequest/forceEmailUpdate> ;
    sh:name "force email update" ;
    sh:description "If true, update the order's billing email with the provided email address." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Action Message Response
woo:ActionMessageResponseShape a sh:NodeShape ;
  sh:targetClass woo:ActionMessageResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ActionMessageResponse/message> ;
    sh:name "message" ;
    sh:description "Success message describing the action taken." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Email Template
woo:EmailTemplateShape a sh:NodeShape ;
  sh:targetClass woo:EmailTemplate ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.EmailTemplate/templateIdentifier> ;
    sh:name "template identifier" ;
    sh:description "Template identifier (e.g., 'customer_completed_order', 'customer_invoice')." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.EmailTemplate/title> ;
    sh:name "title" ;
    sh:description "Display title of the template." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.EmailTemplate/description> ;
    sh:name "description" ;
    sh:description "Description of when this template is used." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Product Created Event
woo:ProductCreatedEventShape a sh:NodeShape ;
  sh:targetClass woo:ProductCreatedEvent ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/id> ;
    sh:name "id" ;
    sh:description "Unique identifier for the resource" ;
    sh:datatype xsd:long ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/name> ;
    sh:name "name" ;
    sh:description "Product name" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/slug> ;
    sh:name "slug" ;
    sh:description "URL-friendly slug" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/permalink> ;
    sh:name "permalink" ;
    sh:description "Product URL" ;
    sh:datatype xsd:anyURI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/dateCreated> ;
    sh:name "date created" ;
    sh:description "The date the product was created, in the site's timezone" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/dateCreatedGmt> ;
    sh:name "date created gmt" ;
    sh:description "The date the product was created, as GMT" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/dateModified> ;
    sh:name "date modified" ;
    sh:description "The date the product was last modified, in the site's timezone" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/dateModifiedGmt> ;
    sh:name "date modified gmt" ;
    sh:description "The date the product was last modified, as GMT" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/type> ;
    sh:name "type" ;
    sh:description "Product type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "simple" "grouped" "external" "variable" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/status> ;
    sh:name "status" ;
    sh:description "Product status (post status)" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "publish" "draft" "pending" "private" "auto-draft" "trash" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/featured> ;
    sh:name "featured" ;
    sh:description "Featured product" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/catalogVisibility> ;
    sh:name "catalog visibility" ;
    sh:description "Catalog visibility" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "visible" "catalog" "search" "hidden" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/description> ;
    sh:name "description" ;
    sh:description "Product description" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/shortDescription> ;
    sh:name "short description" ;
    sh:description "Product short description" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/sku> ;
    sh:name "sku" ;
    sh:description "Unique identifier (Stock Keeping Unit)" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/globalUniqueId> ;
    sh:name "global unique id" ;
    sh:description "Global product identifier" ;
    sh:datatype xsd:string ;
    sh:or (
      [ sh:datatype xsd:string ; sh:pattern "^\\d{8}$|^\\d{12,14}$" ]
      [ sh:datatype xsd:string ; sh:pattern "^\\d{8}$|^\\d{12}$" ]
      [ sh:datatype xsd:string ; sh:pattern "^\\d{8}$|^\\d{13}$" ]
      [ sh:datatype xsd:string ; sh:pattern "^[\\d-]{10,17}$|^\\d{9}[\\dX]$" ]
    ) ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/price> ;
    sh:name "price" ;
    sh:description "Current product price" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/regularPrice> ;
    sh:name "regular price" ;
    sh:description "Product regular price" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/salePrice> ;
    sh:name "sale price" ;
    sh:description "Product sale price" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/dateOnSaleFrom> ;
    sh:name "date on sale from" ;
    sh:description "Start date of sale price, in the site's timezone" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/dateOnSaleFromGmt> ;
    sh:name "date on sale from gmt" ;
    sh:description "Start date of sale price, as GMT" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/dateOnSaleTo> ;
    sh:name "date on sale to" ;
    sh:description "End date of sale price, in the site's timezone" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/dateOnSaleToGmt> ;
    sh:name "date on sale to gmt" ;
    sh:description "End date of sale price, as GMT" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/priceHtml> ;
    sh:name "price html" ;
    sh:description "Price formatted in HTML" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/onSale> ;
    sh:name "on sale" ;
    sh:description "Shows if the product is on sale" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/purchasable> ;
    sh:name "purchasable" ;
    sh:description "Shows if the product can be bought" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/totalSales> ;
    sh:name "total sales" ;
    sh:description "Amount of sales" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/virtual> ;
    sh:name "virtual" ;
    sh:description "If the product is virtual (no shipping)" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/downloadable> ;
    sh:name "downloadable" ;
    sh:description "If the product is downloadable" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/downloads> ;
    sh:name "downloads" ;
    sh:description "List of downloadable files" ;
    sh:node woo:ProductDownloadShape ;
    sh:class woo:ProductDownload ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/downloadLimit> ;
    sh:name "download limit" ;
    sh:description "Number of times downloadable files can be downloaded after purchase. Default is -1." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/downloadExpiry> ;
    sh:name "download expiry" ;
    sh:description "Number of days until access to downloadable files expires. Default is -1." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/externalUrl> ;
    sh:name "external url" ;
    sh:description "Product external URL. Only for external products." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/buttonText> ;
    sh:name "button text" ;
    sh:description "Product external button text. Only for external products." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/taxStatus> ;
    sh:name "tax status" ;
    sh:description "Tax status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "taxable" "shipping" "none" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/taxClass> ;
    sh:name "tax class" ;
    sh:description "Tax class" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/manageStock> ;
    sh:name "manage stock" ;
    sh:description "Stock management at product level" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/stockQuantity> ;
    sh:name "stock quantity" ;
    sh:description "Stock quantity" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/stockStatus> ;
    sh:name "stock status" ;
    sh:description "Controls the stock status of the product" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "instock" "outofstock" "onbackorder" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/backorders> ;
    sh:name "backorders" ;
    sh:description "If managing stock, this controls if backorders are allowed" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "no" "notify" "yes" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/backordersAllowed> ;
    sh:name "backorders allowed" ;
    sh:description "Shows if backorders are allowed" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/backordered> ;
    sh:name "backordered" ;
    sh:description "Shows if the product is on backordered" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/soldIndividually> ;
    sh:name "sold individually" ;
    sh:description "Allow one item to be bought in a single order" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/weight> ;
    sh:name "weight" ;
    sh:description "Product weight" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/dimensions> ;
    sh:name "dimensions" ;
    sh:description "Product dimensions" ;
    sh:node woo:ProductDimensionsShape ;
    sh:class woo:ProductDimensions ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/shippingRequired> ;
    sh:name "shipping required" ;
    sh:description "Shows if the product need to be shipped" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/shippingTaxable> ;
    sh:name "shipping taxable" ;
    sh:description "Shows whether or not the product shipping is taxable" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/shippingClass> ;
    sh:name "shipping class" ;
    sh:description "Shipping class slug" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/shippingClassId> ;
    sh:name "shipping class id" ;
    sh:description "Shipping class ID" ;
    sh:node woo:ProductShippingClassShape ;
    sh:class woo:ProductShippingClass ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/reviewsAllowed> ;
    sh:name "reviews allowed" ;
    sh:description "Allow reviews" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/averageRating> ;
    sh:name "average rating" ;
    sh:description "Reviews average rating" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/ratingCount> ;
    sh:name "rating count" ;
    sh:description "Amount of reviews that the product have" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/relatedProducts> ;
    sh:name "related products" ;
    sh:description "List of related products" ;
    sh:node woo:ProductShape ;
    sh:class woo:Product ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/upsellProducts> ;
    sh:name "upsell products" ;
    sh:description "List of up-sell products" ;
    sh:node woo:ProductShape ;
    sh:class woo:Product ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/crossSellProducts> ;
    sh:name "cross sell products" ;
    sh:description "List of cross-sell products" ;
    sh:node woo:ProductShape ;
    sh:class woo:Product ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/parent> ;
    sh:name "parent" ;
    sh:description "Parent product" ;
    sh:node woo:ProductShape ;
    sh:class woo:Product ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/purchaseNote> ;
    sh:name "purchase note" ;
    sh:description "Optional note to send the customer after purchase" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/categories> ;
    sh:name "categories" ;
    sh:description "List of categories" ;
    sh:node woo:ProductCategoryRefShape ;
    sh:class woo:ProductCategoryRef ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/tags> ;
    sh:name "tags" ;
    sh:description "List of tags" ;
    sh:node woo:ProductTagRefShape ;
    sh:class woo:ProductTagRef ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/images> ;
    sh:name "images" ;
    sh:description "List of images" ;
    sh:node woo:ProductImageShape ;
    sh:class woo:ProductImage ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/attributes> ;
    sh:name "attributes" ;
    sh:description "List of attributes" ;
    sh:node woo:ProductAttributeShape ;
    sh:class woo:ProductAttribute ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/defaultAttributes> ;
    sh:name "default attributes" ;
    sh:description "Defaults variation attributes" ;
    sh:node woo:DefaultAttributeShape ;
    sh:class woo:DefaultAttribute ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/variations> ;
    sh:name "variations" ;
    sh:description "List of variation IDs" ;
    sh:node woo:ProductVariationShape ;
    sh:class woo:ProductVariation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/groupedProducts> ;
    sh:name "grouped products" ;
    sh:description "List of grouped product IDs" ;
    sh:node woo:ProductShape ;
    sh:class woo:Product ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/menuOrder> ;
    sh:name "menu order" ;
    sh:description "Menu order, used to custom sort products" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/metaData> ;
    sh:name "meta data" ;
    sh:description "Meta data" ;
    sh:node woo:ProductMetadataShape ;
    sh:class woo:ProductMetadata ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductCreatedEvent/links> ;
    sh:name "links" ;
    sh:description "HAL links" ;
    sh:node woo:LinksShape ;
    sh:class woo:Links ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Product Updated Event
woo:ProductUpdatedEventShape a sh:NodeShape ;
  sh:targetClass woo:ProductUpdatedEvent ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/id> ;
    sh:name "id" ;
    sh:description "Unique identifier for the resource" ;
    sh:datatype xsd:long ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/name> ;
    sh:name "name" ;
    sh:description "Product name" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/slug> ;
    sh:name "slug" ;
    sh:description "URL-friendly slug" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/permalink> ;
    sh:name "permalink" ;
    sh:description "Product URL" ;
    sh:datatype xsd:anyURI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/dateCreated> ;
    sh:name "date created" ;
    sh:description "The date the product was created, in the site's timezone" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/dateCreatedGmt> ;
    sh:name "date created gmt" ;
    sh:description "The date the product was created, as GMT" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/dateModified> ;
    sh:name "date modified" ;
    sh:description "The date the product was last modified, in the site's timezone" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/dateModifiedGmt> ;
    sh:name "date modified gmt" ;
    sh:description "The date the product was last modified, as GMT" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/type> ;
    sh:name "type" ;
    sh:description "Product type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "simple" "grouped" "external" "variable" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/status> ;
    sh:name "status" ;
    sh:description "Product status (post status)" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "publish" "draft" "pending" "private" "auto-draft" "trash" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/featured> ;
    sh:name "featured" ;
    sh:description "Featured product" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/catalogVisibility> ;
    sh:name "catalog visibility" ;
    sh:description "Catalog visibility" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "visible" "catalog" "search" "hidden" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/description> ;
    sh:name "description" ;
    sh:description "Product description" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/shortDescription> ;
    sh:name "short description" ;
    sh:description "Product short description" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/sku> ;
    sh:name "sku" ;
    sh:description "Unique identifier (Stock Keeping Unit)" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/globalUniqueId> ;
    sh:name "global unique id" ;
    sh:description "Global product identifier" ;
    sh:datatype xsd:string ;
    sh:or (
      [ sh:datatype xsd:string ; sh:pattern "^\\d{8}$|^\\d{12,14}$" ]
      [ sh:datatype xsd:string ; sh:pattern "^\\d{8}$|^\\d{12}$" ]
      [ sh:datatype xsd:string ; sh:pattern "^\\d{8}$|^\\d{13}$" ]
      [ sh:datatype xsd:string ; sh:pattern "^[\\d-]{10,17}$|^\\d{9}[\\dX]$" ]
    ) ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/price> ;
    sh:name "price" ;
    sh:description "Current product price" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/regularPrice> ;
    sh:name "regular price" ;
    sh:description "Product regular price" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/salePrice> ;
    sh:name "sale price" ;
    sh:description "Product sale price" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/dateOnSaleFrom> ;
    sh:name "date on sale from" ;
    sh:description "Start date of sale price, in the site's timezone" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/dateOnSaleFromGmt> ;
    sh:name "date on sale from gmt" ;
    sh:description "Start date of sale price, as GMT" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/dateOnSaleTo> ;
    sh:name "date on sale to" ;
    sh:description "End date of sale price, in the site's timezone" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/dateOnSaleToGmt> ;
    sh:name "date on sale to gmt" ;
    sh:description "End date of sale price, as GMT" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/priceHtml> ;
    sh:name "price html" ;
    sh:description "Price formatted in HTML" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/onSale> ;
    sh:name "on sale" ;
    sh:description "Shows if the product is on sale" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/purchasable> ;
    sh:name "purchasable" ;
    sh:description "Shows if the product can be bought" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/totalSales> ;
    sh:name "total sales" ;
    sh:description "Amount of sales" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/virtual> ;
    sh:name "virtual" ;
    sh:description "If the product is virtual (no shipping)" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/downloadable> ;
    sh:name "downloadable" ;
    sh:description "If the product is downloadable" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/downloads> ;
    sh:name "downloads" ;
    sh:description "List of downloadable files" ;
    sh:node woo:ProductDownloadShape ;
    sh:class woo:ProductDownload ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/downloadLimit> ;
    sh:name "download limit" ;
    sh:description "Number of times downloadable files can be downloaded after purchase. Default is -1." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/downloadExpiry> ;
    sh:name "download expiry" ;
    sh:description "Number of days until access to downloadable files expires. Default is -1." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/externalUrl> ;
    sh:name "external url" ;
    sh:description "Product external URL. Only for external products." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/buttonText> ;
    sh:name "button text" ;
    sh:description "Product external button text. Only for external products." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/taxStatus> ;
    sh:name "tax status" ;
    sh:description "Tax status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "taxable" "shipping" "none" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/taxClass> ;
    sh:name "tax class" ;
    sh:description "Tax class" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/manageStock> ;
    sh:name "manage stock" ;
    sh:description "Stock management at product level" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/stockQuantity> ;
    sh:name "stock quantity" ;
    sh:description "Stock quantity" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/stockStatus> ;
    sh:name "stock status" ;
    sh:description "Controls the stock status of the product" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "instock" "outofstock" "onbackorder" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/backorders> ;
    sh:name "backorders" ;
    sh:description "If managing stock, this controls if backorders are allowed" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "no" "notify" "yes" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/backordersAllowed> ;
    sh:name "backorders allowed" ;
    sh:description "Shows if backorders are allowed" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/backordered> ;
    sh:name "backordered" ;
    sh:description "Shows if the product is on backordered" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/soldIndividually> ;
    sh:name "sold individually" ;
    sh:description "Allow one item to be bought in a single order" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/weight> ;
    sh:name "weight" ;
    sh:description "Product weight" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/dimensions> ;
    sh:name "dimensions" ;
    sh:description "Product dimensions" ;
    sh:node woo:ProductDimensionsShape ;
    sh:class woo:ProductDimensions ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/shippingRequired> ;
    sh:name "shipping required" ;
    sh:description "Shows if the product need to be shipped" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/shippingTaxable> ;
    sh:name "shipping taxable" ;
    sh:description "Shows whether or not the product shipping is taxable" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/shippingClass> ;
    sh:name "shipping class" ;
    sh:description "Shipping class slug" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/shippingClassId> ;
    sh:name "shipping class id" ;
    sh:description "Shipping class ID" ;
    sh:node woo:ProductShippingClassShape ;
    sh:class woo:ProductShippingClass ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/reviewsAllowed> ;
    sh:name "reviews allowed" ;
    sh:description "Allow reviews" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/averageRating> ;
    sh:name "average rating" ;
    sh:description "Reviews average rating" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/ratingCount> ;
    sh:name "rating count" ;
    sh:description "Amount of reviews that the product have" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/relatedProducts> ;
    sh:name "related products" ;
    sh:description "List of related products" ;
    sh:node woo:ProductShape ;
    sh:class woo:Product ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/upsellProducts> ;
    sh:name "upsell products" ;
    sh:description "List of up-sell products" ;
    sh:node woo:ProductShape ;
    sh:class woo:Product ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/crossSellProducts> ;
    sh:name "cross sell products" ;
    sh:description "List of cross-sell products" ;
    sh:node woo:ProductShape ;
    sh:class woo:Product ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/parent> ;
    sh:name "parent" ;
    sh:description "Parent product" ;
    sh:node woo:ProductShape ;
    sh:class woo:Product ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/purchaseNote> ;
    sh:name "purchase note" ;
    sh:description "Optional note to send the customer after purchase" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/categories> ;
    sh:name "categories" ;
    sh:description "List of categories" ;
    sh:node woo:ProductCategoryRefShape ;
    sh:class woo:ProductCategoryRef ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/tags> ;
    sh:name "tags" ;
    sh:description "List of tags" ;
    sh:node woo:ProductTagRefShape ;
    sh:class woo:ProductTagRef ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/images> ;
    sh:name "images" ;
    sh:description "List of images" ;
    sh:node woo:ProductImageShape ;
    sh:class woo:ProductImage ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/attributes> ;
    sh:name "attributes" ;
    sh:description "List of attributes" ;
    sh:node woo:ProductAttributeShape ;
    sh:class woo:ProductAttribute ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/defaultAttributes> ;
    sh:name "default attributes" ;
    sh:description "Defaults variation attributes" ;
    sh:node woo:DefaultAttributeShape ;
    sh:class woo:DefaultAttribute ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/variations> ;
    sh:name "variations" ;
    sh:description "List of variation IDs" ;
    sh:node woo:ProductVariationShape ;
    sh:class woo:ProductVariation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/groupedProducts> ;
    sh:name "grouped products" ;
    sh:description "List of grouped product IDs" ;
    sh:node woo:ProductShape ;
    sh:class woo:Product ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/menuOrder> ;
    sh:name "menu order" ;
    sh:description "Menu order, used to custom sort products" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/metaData> ;
    sh:name "meta data" ;
    sh:description "Meta data" ;
    sh:node woo:ProductMetadataShape ;
    sh:class woo:ProductMetadata ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductUpdatedEvent/links> ;
    sh:name "links" ;
    sh:description "HAL links" ;
    sh:node woo:LinksShape ;
    sh:class woo:Links ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Product Deleted Event
woo:ProductDeletedEventShape a sh:NodeShape ;
  sh:targetClass woo:ProductDeletedEvent ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductDeletedEvent/id> ;
    sh:name "id" ;
    sh:description "Deleted product ID" ;
    sh:datatype xsd:long ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Product Restored Event
woo:ProductRestoredEventShape a sh:NodeShape ;
  sh:targetClass woo:ProductRestoredEvent ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/id> ;
    sh:name "id" ;
    sh:description "Unique identifier for the resource" ;
    sh:datatype xsd:long ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/name> ;
    sh:name "name" ;
    sh:description "Product name" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/slug> ;
    sh:name "slug" ;
    sh:description "URL-friendly slug" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/permalink> ;
    sh:name "permalink" ;
    sh:description "Product URL" ;
    sh:datatype xsd:anyURI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/dateCreated> ;
    sh:name "date created" ;
    sh:description "The date the product was created, in the site's timezone" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/dateCreatedGmt> ;
    sh:name "date created gmt" ;
    sh:description "The date the product was created, as GMT" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/dateModified> ;
    sh:name "date modified" ;
    sh:description "The date the product was last modified, in the site's timezone" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/dateModifiedGmt> ;
    sh:name "date modified gmt" ;
    sh:description "The date the product was last modified, as GMT" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/type> ;
    sh:name "type" ;
    sh:description "Product type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "simple" "grouped" "external" "variable" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/status> ;
    sh:name "status" ;
    sh:description "Product status (post status)" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "publish" "draft" "pending" "private" "auto-draft" "trash" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/featured> ;
    sh:name "featured" ;
    sh:description "Featured product" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/catalogVisibility> ;
    sh:name "catalog visibility" ;
    sh:description "Catalog visibility" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "visible" "catalog" "search" "hidden" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/description> ;
    sh:name "description" ;
    sh:description "Product description" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/shortDescription> ;
    sh:name "short description" ;
    sh:description "Product short description" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/sku> ;
    sh:name "sku" ;
    sh:description "Unique identifier (Stock Keeping Unit)" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/globalUniqueId> ;
    sh:name "global unique id" ;
    sh:description "Global product identifier" ;
    sh:datatype xsd:string ;
    sh:or (
      [ sh:datatype xsd:string ; sh:pattern "^\\d{8}$|^\\d{12,14}$" ]
      [ sh:datatype xsd:string ; sh:pattern "^\\d{8}$|^\\d{12}$" ]
      [ sh:datatype xsd:string ; sh:pattern "^\\d{8}$|^\\d{13}$" ]
      [ sh:datatype xsd:string ; sh:pattern "^[\\d-]{10,17}$|^\\d{9}[\\dX]$" ]
    ) ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/price> ;
    sh:name "price" ;
    sh:description "Current product price" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/regularPrice> ;
    sh:name "regular price" ;
    sh:description "Product regular price" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/salePrice> ;
    sh:name "sale price" ;
    sh:description "Product sale price" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/dateOnSaleFrom> ;
    sh:name "date on sale from" ;
    sh:description "Start date of sale price, in the site's timezone" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/dateOnSaleFromGmt> ;
    sh:name "date on sale from gmt" ;
    sh:description "Start date of sale price, as GMT" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/dateOnSaleTo> ;
    sh:name "date on sale to" ;
    sh:description "End date of sale price, in the site's timezone" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/dateOnSaleToGmt> ;
    sh:name "date on sale to gmt" ;
    sh:description "End date of sale price, as GMT" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/priceHtml> ;
    sh:name "price html" ;
    sh:description "Price formatted in HTML" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/onSale> ;
    sh:name "on sale" ;
    sh:description "Shows if the product is on sale" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/purchasable> ;
    sh:name "purchasable" ;
    sh:description "Shows if the product can be bought" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/totalSales> ;
    sh:name "total sales" ;
    sh:description "Amount of sales" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/virtual> ;
    sh:name "virtual" ;
    sh:description "If the product is virtual (no shipping)" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/downloadable> ;
    sh:name "downloadable" ;
    sh:description "If the product is downloadable" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/downloads> ;
    sh:name "downloads" ;
    sh:description "List of downloadable files" ;
    sh:node woo:ProductDownloadShape ;
    sh:class woo:ProductDownload ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/downloadLimit> ;
    sh:name "download limit" ;
    sh:description "Number of times downloadable files can be downloaded after purchase. Default is -1." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/downloadExpiry> ;
    sh:name "download expiry" ;
    sh:description "Number of days until access to downloadable files expires. Default is -1." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/externalUrl> ;
    sh:name "external url" ;
    sh:description "Product external URL. Only for external products." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/buttonText> ;
    sh:name "button text" ;
    sh:description "Product external button text. Only for external products." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/taxStatus> ;
    sh:name "tax status" ;
    sh:description "Tax status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "taxable" "shipping" "none" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/taxClass> ;
    sh:name "tax class" ;
    sh:description "Tax class" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/manageStock> ;
    sh:name "manage stock" ;
    sh:description "Stock management at product level" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/stockQuantity> ;
    sh:name "stock quantity" ;
    sh:description "Stock quantity" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/stockStatus> ;
    sh:name "stock status" ;
    sh:description "Controls the stock status of the product" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "instock" "outofstock" "onbackorder" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/backorders> ;
    sh:name "backorders" ;
    sh:description "If managing stock, this controls if backorders are allowed" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "no" "notify" "yes" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/backordersAllowed> ;
    sh:name "backorders allowed" ;
    sh:description "Shows if backorders are allowed" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/backordered> ;
    sh:name "backordered" ;
    sh:description "Shows if the product is on backordered" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/soldIndividually> ;
    sh:name "sold individually" ;
    sh:description "Allow one item to be bought in a single order" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/weight> ;
    sh:name "weight" ;
    sh:description "Product weight" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/dimensions> ;
    sh:name "dimensions" ;
    sh:description "Product dimensions" ;
    sh:node woo:ProductDimensionsShape ;
    sh:class woo:ProductDimensions ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/shippingRequired> ;
    sh:name "shipping required" ;
    sh:description "Shows if the product need to be shipped" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/shippingTaxable> ;
    sh:name "shipping taxable" ;
    sh:description "Shows whether or not the product shipping is taxable" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/shippingClass> ;
    sh:name "shipping class" ;
    sh:description "Shipping class slug" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/shippingClassId> ;
    sh:name "shipping class id" ;
    sh:description "Shipping class ID" ;
    sh:node woo:ProductShippingClassShape ;
    sh:class woo:ProductShippingClass ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/reviewsAllowed> ;
    sh:name "reviews allowed" ;
    sh:description "Allow reviews" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/averageRating> ;
    sh:name "average rating" ;
    sh:description "Reviews average rating" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/ratingCount> ;
    sh:name "rating count" ;
    sh:description "Amount of reviews that the product have" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/relatedProducts> ;
    sh:name "related products" ;
    sh:description "List of related products" ;
    sh:node woo:ProductShape ;
    sh:class woo:Product ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/upsellProducts> ;
    sh:name "upsell products" ;
    sh:description "List of up-sell products" ;
    sh:node woo:ProductShape ;
    sh:class woo:Product ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/crossSellProducts> ;
    sh:name "cross sell products" ;
    sh:description "List of cross-sell products" ;
    sh:node woo:ProductShape ;
    sh:class woo:Product ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/parent> ;
    sh:name "parent" ;
    sh:description "Parent product" ;
    sh:node woo:ProductShape ;
    sh:class woo:Product ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/purchaseNote> ;
    sh:name "purchase note" ;
    sh:description "Optional note to send the customer after purchase" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/categories> ;
    sh:name "categories" ;
    sh:description "List of categories" ;
    sh:node woo:ProductCategoryRefShape ;
    sh:class woo:ProductCategoryRef ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/tags> ;
    sh:name "tags" ;
    sh:description "List of tags" ;
    sh:node woo:ProductTagRefShape ;
    sh:class woo:ProductTagRef ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/images> ;
    sh:name "images" ;
    sh:description "List of images" ;
    sh:node woo:ProductImageShape ;
    sh:class woo:ProductImage ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/attributes> ;
    sh:name "attributes" ;
    sh:description "List of attributes" ;
    sh:node woo:ProductAttributeShape ;
    sh:class woo:ProductAttribute ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/defaultAttributes> ;
    sh:name "default attributes" ;
    sh:description "Defaults variation attributes" ;
    sh:node woo:DefaultAttributeShape ;
    sh:class woo:DefaultAttribute ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/variations> ;
    sh:name "variations" ;
    sh:description "List of variation IDs" ;
    sh:node woo:ProductVariationShape ;
    sh:class woo:ProductVariation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/groupedProducts> ;
    sh:name "grouped products" ;
    sh:description "List of grouped product IDs" ;
    sh:node woo:ProductShape ;
    sh:class woo:Product ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/menuOrder> ;
    sh:name "menu order" ;
    sh:description "Menu order, used to custom sort products" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/metaData> ;
    sh:name "meta data" ;
    sh:description "Meta data" ;
    sh:node woo:ProductMetadataShape ;
    sh:class woo:ProductMetadata ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.ProductRestoredEvent/links> ;
    sh:name "links" ;
    sh:description "HAL links" ;
    sh:node woo:LinksShape ;
    sh:class woo:Links ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Order Created Event
woo:OrderCreatedEventShape a sh:NodeShape ;
  sh:targetClass woo:OrderCreatedEvent ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderCreatedEvent/id> ;
    sh:name "id" ;
    sh:description "Unique identifier" ;
    sh:datatype xsd:long ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderCreatedEvent/parent> ;
    sh:name "parent" ;
    sh:description "Parent order (for order parts)" ;
    sh:node woo:OrderShape ;
    sh:class woo:Order ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderCreatedEvent/number> ;
    sh:name "number" ;
    sh:description "Order number (may differ from ID)" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderCreatedEvent/orderKey> ;
    sh:name "order key" ;
    sh:description "Order key (for guest checkout links)" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderCreatedEvent/createdVia> ;
    sh:name "created via" ;
    sh:description "Shows where the order was created. Can only be set during creation." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderCreatedEvent/version> ;
    sh:name "version" ;
    sh:description "Version of WooCommerce which last updated the order" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderCreatedEvent/status> ;
    sh:name "status" ;
    sh:description "Order status" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "pending" "processing" "on-hold" "completed" "cancelled" "refunded" "failed" "trash" "auto-draft" "checkout-draft" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderCreatedEvent/currency> ;
    sh:name "currency" ;
    sh:description "Currency code (ISO 4217)" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderCreatedEvent/currencySymbol> ;
    sh:name "currency symbol" ;
    sh:description "Currency symbol" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderCreatedEvent/dateCreated> ;
    sh:name "date created" ;
    sh:description "The date the order was created, in the site's timezone" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderCreatedEvent/dateCreatedGmt> ;
    sh:name "date created gmt" ;
    sh:description "The date the order was created, as GMT" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderCreatedEvent/dateModified> ;
    sh:name "date modified" ;
    sh:description "The date the order was last modified, in the site's timezone" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderCreatedEvent/dateModifiedGmt> ;
    sh:name "date modified gmt" ;
    sh:description "The date the order was last modified, as GMT" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderCreatedEvent/discountTotal> ;
    sh:name "discount total" ;
    sh:description "Total discount amount" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderCreatedEvent/discountTax> ;
    sh:name "discount tax" ;
    sh:description "Total discount tax" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderCreatedEvent/shippingTotal> ;
    sh:name "shipping total" ;
    sh:description "Total shipping amount" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderCreatedEvent/shippingTax> ;
    sh:name "shipping tax" ;
    sh:description "Total shipping tax" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderCreatedEvent/cartTax> ;
    sh:name "cart tax" ;
    sh:description "Sum of line item taxes only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderCreatedEvent/total> ;
    sh:name "total" ;
    sh:description "Grand total" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderCreatedEvent/totalTax> ;
    sh:name "total tax" ;
    sh:description "Sum of all taxes" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderCreatedEvent/pricesIncludeTax> ;
    sh:name "prices include tax" ;
    sh:description "True if prices included tax during checkout" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderCreatedEvent/customer> ;
    sh:name "customer" ;
    sh:description "Customer who owns the order. 0 for guests." ;
    sh:node woo:CustomerShape ;
    sh:class woo:Customer ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderCreatedEvent/customerIpAddress> ;
    sh:name "customer ip address" ;
    sh:description "Customer's IP address" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderCreatedEvent/customerUserAgent> ;
    sh:name "customer user agent" ;
    sh:description "User agent of the customer" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderCreatedEvent/customerNote> ;
    sh:name "customer note" ;
    sh:description "Note left by customer during checkout" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderCreatedEvent/billing> ;
    sh:name "billing" ;
    sh:description "Billing address" ;
    sh:node woo:BillingAddressShape ;
    sh:class woo:BillingAddress ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderCreatedEvent/shipping> ;
    sh:name "shipping" ;
    sh:description "Shipping address" ;
    sh:node woo:ShippingAddressShape ;
    sh:class woo:ShippingAddress ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderCreatedEvent/paymentMethod> ;
    sh:name "payment method" ;
    sh:description "Payment method ID" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderCreatedEvent/paymentMethodTitle> ;
    sh:name "payment method title" ;
    sh:description "Payment method title" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderCreatedEvent/transactionId> ;
    sh:name "transaction id" ;
    sh:description "Unique transaction ID" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderCreatedEvent/datePaid> ;
    sh:name "date paid" ;
    sh:description "The date the order was paid, in the site's timezone" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderCreatedEvent/datePaidGmt> ;
    sh:name "date paid gmt" ;
    sh:description "The date the order was paid, as GMT" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderCreatedEvent/dateCompleted> ;
    sh:name "date completed" ;
    sh:description "The date the order was completed, in the site's timezone" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderCreatedEvent/dateCompletedGmt> ;
    sh:name "date completed gmt" ;
    sh:description "The date the order was completed, as GMT" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderCreatedEvent/cartHash> ;
    sh:name "cart hash" ;
    sh:description "MD5 hash of cart items to ensure orders are not modified" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderCreatedEvent/lineItems> ;
    sh:name "line items" ;
    sh:description "Line items" ;
    sh:class woo:OrderLineItem ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderCreatedEvent/taxLines> ;
    sh:name "tax lines" ;
    sh:description "Tax lines" ;
    sh:node woo:TaxLineShape ;
    sh:class woo:TaxLine ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderCreatedEvent/shippingLines> ;
    sh:name "shipping lines" ;
    sh:description "Shipping lines" ;
    sh:node woo:ShippingLineShape ;
    sh:class woo:ShippingLine ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderCreatedEvent/feeLines> ;
    sh:name "fee lines" ;
    sh:description "Fee lines" ;
    sh:node woo:FeeLineShape ;
    sh:class woo:FeeLine ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderCreatedEvent/couponLines> ;
    sh:name "coupon lines" ;
    sh:description "Coupon lines" ;
    sh:node woo:CouponLineShape ;
    sh:class woo:CouponLine ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderCreatedEvent/refunds> ;
    sh:name "refunds" ;
    sh:description "List of refunds" ;
    sh:node woo:OrderRefundLineShape ;
    sh:class woo:OrderRefundLine ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderCreatedEvent/needsPayment> ;
    sh:name "needs payment" ;
    sh:description "Whether order needs payment" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderCreatedEvent/needsProcessing> ;
    sh:name "needs processing" ;
    sh:description "Whether order needs processing" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderCreatedEvent/paymentUrl> ;
    sh:name "payment url" ;
    sh:description "Payment URL" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderCreatedEvent/isEditable> ;
    sh:name "is editable" ;
    sh:description "Whether order is editable" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderCreatedEvent/metadata> ;
    sh:name "metadata" ;
    sh:description "Meta data" ;
    sh:node woo:MetadataShape ;
    sh:class woo:Metadata ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderCreatedEvent/links> ;
    sh:name "links" ;
    sh:description "HAL links" ;
    sh:node woo:LinksShape ;
    sh:class woo:Links ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Order Updated Event
woo:OrderUpdatedEventShape a sh:NodeShape ;
  sh:targetClass woo:OrderUpdatedEvent ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderUpdatedEvent/id> ;
    sh:name "id" ;
    sh:description "Unique identifier" ;
    sh:datatype xsd:long ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderUpdatedEvent/parent> ;
    sh:name "parent" ;
    sh:description "Parent order (for order parts)" ;
    sh:node woo:OrderShape ;
    sh:class woo:Order ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderUpdatedEvent/number> ;
    sh:name "number" ;
    sh:description "Order number (may differ from ID)" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderUpdatedEvent/orderKey> ;
    sh:name "order key" ;
    sh:description "Order key (for guest checkout links)" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderUpdatedEvent/createdVia> ;
    sh:name "created via" ;
    sh:description "Shows where the order was created. Can only be set during creation." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderUpdatedEvent/version> ;
    sh:name "version" ;
    sh:description "Version of WooCommerce which last updated the order" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderUpdatedEvent/status> ;
    sh:name "status" ;
    sh:description "Order status" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "pending" "processing" "on-hold" "completed" "cancelled" "refunded" "failed" "trash" "auto-draft" "checkout-draft" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderUpdatedEvent/currency> ;
    sh:name "currency" ;
    sh:description "Currency code (ISO 4217)" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderUpdatedEvent/currencySymbol> ;
    sh:name "currency symbol" ;
    sh:description "Currency symbol" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderUpdatedEvent/dateCreated> ;
    sh:name "date created" ;
    sh:description "The date the order was created, in the site's timezone" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderUpdatedEvent/dateCreatedGmt> ;
    sh:name "date created gmt" ;
    sh:description "The date the order was created, as GMT" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderUpdatedEvent/dateModified> ;
    sh:name "date modified" ;
    sh:description "The date the order was last modified, in the site's timezone" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderUpdatedEvent/dateModifiedGmt> ;
    sh:name "date modified gmt" ;
    sh:description "The date the order was last modified, as GMT" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderUpdatedEvent/discountTotal> ;
    sh:name "discount total" ;
    sh:description "Total discount amount" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderUpdatedEvent/discountTax> ;
    sh:name "discount tax" ;
    sh:description "Total discount tax" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderUpdatedEvent/shippingTotal> ;
    sh:name "shipping total" ;
    sh:description "Total shipping amount" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderUpdatedEvent/shippingTax> ;
    sh:name "shipping tax" ;
    sh:description "Total shipping tax" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderUpdatedEvent/cartTax> ;
    sh:name "cart tax" ;
    sh:description "Sum of line item taxes only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderUpdatedEvent/total> ;
    sh:name "total" ;
    sh:description "Grand total" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderUpdatedEvent/totalTax> ;
    sh:name "total tax" ;
    sh:description "Sum of all taxes" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderUpdatedEvent/pricesIncludeTax> ;
    sh:name "prices include tax" ;
    sh:description "True if prices included tax during checkout" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderUpdatedEvent/customer> ;
    sh:name "customer" ;
    sh:description "Customer who owns the order. 0 for guests." ;
    sh:node woo:CustomerShape ;
    sh:class woo:Customer ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderUpdatedEvent/customerIpAddress> ;
    sh:name "customer ip address" ;
    sh:description "Customer's IP address" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderUpdatedEvent/customerUserAgent> ;
    sh:name "customer user agent" ;
    sh:description "User agent of the customer" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderUpdatedEvent/customerNote> ;
    sh:name "customer note" ;
    sh:description "Note left by customer during checkout" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderUpdatedEvent/billing> ;
    sh:name "billing" ;
    sh:description "Billing address" ;
    sh:node woo:BillingAddressShape ;
    sh:class woo:BillingAddress ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderUpdatedEvent/shipping> ;
    sh:name "shipping" ;
    sh:description "Shipping address" ;
    sh:node woo:ShippingAddressShape ;
    sh:class woo:ShippingAddress ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderUpdatedEvent/paymentMethod> ;
    sh:name "payment method" ;
    sh:description "Payment method ID" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderUpdatedEvent/paymentMethodTitle> ;
    sh:name "payment method title" ;
    sh:description "Payment method title" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderUpdatedEvent/transactionId> ;
    sh:name "transaction id" ;
    sh:description "Unique transaction ID" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderUpdatedEvent/datePaid> ;
    sh:name "date paid" ;
    sh:description "The date the order was paid, in the site's timezone" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderUpdatedEvent/datePaidGmt> ;
    sh:name "date paid gmt" ;
    sh:description "The date the order was paid, as GMT" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderUpdatedEvent/dateCompleted> ;
    sh:name "date completed" ;
    sh:description "The date the order was completed, in the site's timezone" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderUpdatedEvent/dateCompletedGmt> ;
    sh:name "date completed gmt" ;
    sh:description "The date the order was completed, as GMT" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderUpdatedEvent/cartHash> ;
    sh:name "cart hash" ;
    sh:description "MD5 hash of cart items to ensure orders are not modified" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderUpdatedEvent/lineItems> ;
    sh:name "line items" ;
    sh:description "Line items" ;
    sh:class woo:OrderLineItem ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderUpdatedEvent/taxLines> ;
    sh:name "tax lines" ;
    sh:description "Tax lines" ;
    sh:node woo:TaxLineShape ;
    sh:class woo:TaxLine ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderUpdatedEvent/shippingLines> ;
    sh:name "shipping lines" ;
    sh:description "Shipping lines" ;
    sh:node woo:ShippingLineShape ;
    sh:class woo:ShippingLine ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderUpdatedEvent/feeLines> ;
    sh:name "fee lines" ;
    sh:description "Fee lines" ;
    sh:node woo:FeeLineShape ;
    sh:class woo:FeeLine ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderUpdatedEvent/couponLines> ;
    sh:name "coupon lines" ;
    sh:description "Coupon lines" ;
    sh:node woo:CouponLineShape ;
    sh:class woo:CouponLine ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderUpdatedEvent/refunds> ;
    sh:name "refunds" ;
    sh:description "List of refunds" ;
    sh:node woo:OrderRefundLineShape ;
    sh:class woo:OrderRefundLine ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderUpdatedEvent/needsPayment> ;
    sh:name "needs payment" ;
    sh:description "Whether order needs payment" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderUpdatedEvent/needsProcessing> ;
    sh:name "needs processing" ;
    sh:description "Whether order needs processing" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderUpdatedEvent/paymentUrl> ;
    sh:name "payment url" ;
    sh:description "Payment URL" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderUpdatedEvent/isEditable> ;
    sh:name "is editable" ;
    sh:description "Whether order is editable" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderUpdatedEvent/metadata> ;
    sh:name "metadata" ;
    sh:description "Meta data" ;
    sh:node woo:MetadataShape ;
    sh:class woo:Metadata ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderUpdatedEvent/links> ;
    sh:name "links" ;
    sh:description "HAL links" ;
    sh:node woo:LinksShape ;
    sh:class woo:Links ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Order Deleted Event
woo:OrderDeletedEventShape a sh:NodeShape ;
  sh:targetClass woo:OrderDeletedEvent ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderDeletedEvent/id> ;
    sh:name "id" ;
    sh:description "Deleted order ID" ;
    sh:datatype xsd:long ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Order Restored Event
woo:OrderRestoredEventShape a sh:NodeShape ;
  sh:targetClass woo:OrderRestoredEvent ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderRestoredEvent/id> ;
    sh:name "id" ;
    sh:description "Unique identifier" ;
    sh:datatype xsd:long ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderRestoredEvent/parent> ;
    sh:name "parent" ;
    sh:description "Parent order (for order parts)" ;
    sh:node woo:OrderShape ;
    sh:class woo:Order ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderRestoredEvent/number> ;
    sh:name "number" ;
    sh:description "Order number (may differ from ID)" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderRestoredEvent/orderKey> ;
    sh:name "order key" ;
    sh:description "Order key (for guest checkout links)" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderRestoredEvent/createdVia> ;
    sh:name "created via" ;
    sh:description "Shows where the order was created. Can only be set during creation." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderRestoredEvent/version> ;
    sh:name "version" ;
    sh:description "Version of WooCommerce which last updated the order" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderRestoredEvent/status> ;
    sh:name "status" ;
    sh:description "Order status" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "pending" "processing" "on-hold" "completed" "cancelled" "refunded" "failed" "trash" "auto-draft" "checkout-draft" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderRestoredEvent/currency> ;
    sh:name "currency" ;
    sh:description "Currency code (ISO 4217)" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderRestoredEvent/currencySymbol> ;
    sh:name "currency symbol" ;
    sh:description "Currency symbol" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderRestoredEvent/dateCreated> ;
    sh:name "date created" ;
    sh:description "The date the order was created, in the site's timezone" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderRestoredEvent/dateCreatedGmt> ;
    sh:name "date created gmt" ;
    sh:description "The date the order was created, as GMT" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderRestoredEvent/dateModified> ;
    sh:name "date modified" ;
    sh:description "The date the order was last modified, in the site's timezone" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderRestoredEvent/dateModifiedGmt> ;
    sh:name "date modified gmt" ;
    sh:description "The date the order was last modified, as GMT" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderRestoredEvent/discountTotal> ;
    sh:name "discount total" ;
    sh:description "Total discount amount" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderRestoredEvent/discountTax> ;
    sh:name "discount tax" ;
    sh:description "Total discount tax" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderRestoredEvent/shippingTotal> ;
    sh:name "shipping total" ;
    sh:description "Total shipping amount" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderRestoredEvent/shippingTax> ;
    sh:name "shipping tax" ;
    sh:description "Total shipping tax" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderRestoredEvent/cartTax> ;
    sh:name "cart tax" ;
    sh:description "Sum of line item taxes only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderRestoredEvent/total> ;
    sh:name "total" ;
    sh:description "Grand total" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderRestoredEvent/totalTax> ;
    sh:name "total tax" ;
    sh:description "Sum of all taxes" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderRestoredEvent/pricesIncludeTax> ;
    sh:name "prices include tax" ;
    sh:description "True if prices included tax during checkout" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderRestoredEvent/customer> ;
    sh:name "customer" ;
    sh:description "Customer who owns the order. 0 for guests." ;
    sh:node woo:CustomerShape ;
    sh:class woo:Customer ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderRestoredEvent/customerIpAddress> ;
    sh:name "customer ip address" ;
    sh:description "Customer's IP address" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderRestoredEvent/customerUserAgent> ;
    sh:name "customer user agent" ;
    sh:description "User agent of the customer" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderRestoredEvent/customerNote> ;
    sh:name "customer note" ;
    sh:description "Note left by customer during checkout" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderRestoredEvent/billing> ;
    sh:name "billing" ;
    sh:description "Billing address" ;
    sh:node woo:BillingAddressShape ;
    sh:class woo:BillingAddress ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderRestoredEvent/shipping> ;
    sh:name "shipping" ;
    sh:description "Shipping address" ;
    sh:node woo:ShippingAddressShape ;
    sh:class woo:ShippingAddress ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderRestoredEvent/paymentMethod> ;
    sh:name "payment method" ;
    sh:description "Payment method ID" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderRestoredEvent/paymentMethodTitle> ;
    sh:name "payment method title" ;
    sh:description "Payment method title" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderRestoredEvent/transactionId> ;
    sh:name "transaction id" ;
    sh:description "Unique transaction ID" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderRestoredEvent/datePaid> ;
    sh:name "date paid" ;
    sh:description "The date the order was paid, in the site's timezone" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderRestoredEvent/datePaidGmt> ;
    sh:name "date paid gmt" ;
    sh:description "The date the order was paid, as GMT" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderRestoredEvent/dateCompleted> ;
    sh:name "date completed" ;
    sh:description "The date the order was completed, in the site's timezone" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderRestoredEvent/dateCompletedGmt> ;
    sh:name "date completed gmt" ;
    sh:description "The date the order was completed, as GMT" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderRestoredEvent/cartHash> ;
    sh:name "cart hash" ;
    sh:description "MD5 hash of cart items to ensure orders are not modified" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderRestoredEvent/lineItems> ;
    sh:name "line items" ;
    sh:description "Line items" ;
    sh:class woo:OrderLineItem ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderRestoredEvent/taxLines> ;
    sh:name "tax lines" ;
    sh:description "Tax lines" ;
    sh:node woo:TaxLineShape ;
    sh:class woo:TaxLine ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderRestoredEvent/shippingLines> ;
    sh:name "shipping lines" ;
    sh:description "Shipping lines" ;
    sh:node woo:ShippingLineShape ;
    sh:class woo:ShippingLine ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderRestoredEvent/feeLines> ;
    sh:name "fee lines" ;
    sh:description "Fee lines" ;
    sh:node woo:FeeLineShape ;
    sh:class woo:FeeLine ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderRestoredEvent/couponLines> ;
    sh:name "coupon lines" ;
    sh:description "Coupon lines" ;
    sh:node woo:CouponLineShape ;
    sh:class woo:CouponLine ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderRestoredEvent/refunds> ;
    sh:name "refunds" ;
    sh:description "List of refunds" ;
    sh:node woo:OrderRefundLineShape ;
    sh:class woo:OrderRefundLine ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderRestoredEvent/needsPayment> ;
    sh:name "needs payment" ;
    sh:description "Whether order needs payment" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderRestoredEvent/needsProcessing> ;
    sh:name "needs processing" ;
    sh:description "Whether order needs processing" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderRestoredEvent/paymentUrl> ;
    sh:name "payment url" ;
    sh:description "Payment URL" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderRestoredEvent/isEditable> ;
    sh:name "is editable" ;
    sh:description "Whether order is editable" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderRestoredEvent/metadata> ;
    sh:name "metadata" ;
    sh:description "Meta data" ;
    sh:node woo:MetadataShape ;
    sh:class woo:Metadata ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.OrderRestoredEvent/links> ;
    sh:name "links" ;
    sh:description "HAL links" ;
    sh:node woo:LinksShape ;
    sh:class woo:Links ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Created Event
woo:CustomerCreatedEventShape a sh:NodeShape ;
  sh:targetClass woo:CustomerCreatedEvent ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.CustomerCreatedEvent/id> ;
    sh:name "id" ;
    sh:description "Unique identifier for the resource" ;
    sh:datatype xsd:long ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.CustomerCreatedEvent/dateCreated> ;
    sh:name "date created" ;
    sh:description "The date the customer was created, in the site's timezone" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.CustomerCreatedEvent/dateCreatedGmt> ;
    sh:name "date created gmt" ;
    sh:description "The date the customer was created, as GMT" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.CustomerCreatedEvent/dateModified> ;
    sh:name "date modified" ;
    sh:description "The date the customer was last modified, in the site's timezone" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.CustomerCreatedEvent/dateModifiedGmt> ;
    sh:name "date modified gmt" ;
    sh:description "The date the customer was last modified, as GMT" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.CustomerCreatedEvent/email> ;
    sh:name "email" ;
    sh:description "The email address for the customer" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.CustomerCreatedEvent/firstName> ;
    sh:name "first name" ;
    sh:description "Customer first name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.CustomerCreatedEvent/lastName> ;
    sh:name "last name" ;
    sh:description "Customer last name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.CustomerCreatedEvent/role> ;
    sh:name "role" ;
    sh:description "Customer role" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.CustomerCreatedEvent/username> ;
    sh:name "username" ;
    sh:description "Customer login name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.CustomerCreatedEvent/billing> ;
    sh:name "billing" ;
    sh:description "List of billing address data" ;
    sh:node woo:BillingAddressShape ;
    sh:class woo:BillingAddress ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.CustomerCreatedEvent/shipping> ;
    sh:name "shipping" ;
    sh:description "List of shipping address data" ;
    sh:node woo:ShippingAddressShape ;
    sh:class woo:ShippingAddress ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.CustomerCreatedEvent/isPayingCustomer> ;
    sh:name "is paying customer" ;
    sh:description "Is the customer a paying customer?" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.CustomerCreatedEvent/avatarUrl> ;
    sh:name "avatar url" ;
    sh:description "Avatar URL" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.CustomerCreatedEvent/metadata> ;
    sh:name "metadata" ;
    sh:description "Meta data" ;
    sh:node woo:MetadataShape ;
    sh:class woo:Metadata ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.CustomerCreatedEvent/links> ;
    sh:name "links" ;
    sh:description "HAL links" ;
    sh:node woo:LinksShape ;
    sh:class woo:Links ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Updated Event
woo:CustomerUpdatedEventShape a sh:NodeShape ;
  sh:targetClass woo:CustomerUpdatedEvent ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.CustomerUpdatedEvent/id> ;
    sh:name "id" ;
    sh:description "Unique identifier for the resource" ;
    sh:datatype xsd:long ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.CustomerUpdatedEvent/dateCreated> ;
    sh:name "date created" ;
    sh:description "The date the customer was created, in the site's timezone" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.CustomerUpdatedEvent/dateCreatedGmt> ;
    sh:name "date created gmt" ;
    sh:description "The date the customer was created, as GMT" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.CustomerUpdatedEvent/dateModified> ;
    sh:name "date modified" ;
    sh:description "The date the customer was last modified, in the site's timezone" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.CustomerUpdatedEvent/dateModifiedGmt> ;
    sh:name "date modified gmt" ;
    sh:description "The date the customer was last modified, as GMT" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.CustomerUpdatedEvent/email> ;
    sh:name "email" ;
    sh:description "The email address for the customer" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.CustomerUpdatedEvent/firstName> ;
    sh:name "first name" ;
    sh:description "Customer first name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.CustomerUpdatedEvent/lastName> ;
    sh:name "last name" ;
    sh:description "Customer last name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.CustomerUpdatedEvent/role> ;
    sh:name "role" ;
    sh:description "Customer role" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.CustomerUpdatedEvent/username> ;
    sh:name "username" ;
    sh:description "Customer login name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.CustomerUpdatedEvent/billing> ;
    sh:name "billing" ;
    sh:description "List of billing address data" ;
    sh:node woo:BillingAddressShape ;
    sh:class woo:BillingAddress ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.CustomerUpdatedEvent/shipping> ;
    sh:name "shipping" ;
    sh:description "List of shipping address data" ;
    sh:node woo:ShippingAddressShape ;
    sh:class woo:ShippingAddress ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.CustomerUpdatedEvent/isPayingCustomer> ;
    sh:name "is paying customer" ;
    sh:description "Is the customer a paying customer?" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.CustomerUpdatedEvent/avatarUrl> ;
    sh:name "avatar url" ;
    sh:description "Avatar URL" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.CustomerUpdatedEvent/metadata> ;
    sh:name "metadata" ;
    sh:description "Meta data" ;
    sh:node woo:MetadataShape ;
    sh:class woo:Metadata ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.CustomerUpdatedEvent/links> ;
    sh:name "links" ;
    sh:description "HAL links" ;
    sh:node woo:LinksShape ;
    sh:class woo:Links ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Deleted Event
woo:CustomerDeletedEventShape a sh:NodeShape ;
  sh:targetClass woo:CustomerDeletedEvent ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.CustomerDeletedEvent/id> ;
    sh:name "id" ;
    sh:description "Deleted customer ID" ;
    sh:datatype xsd:long ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Coupon Created Event
woo:CouponCreatedEventShape a sh:NodeShape ;
  sh:targetClass woo:CouponCreatedEvent ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.CouponCreatedEvent/id> ;
    sh:name "id" ;
    sh:description "Coupon ID" ;
    sh:datatype xsd:long ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.CouponCreatedEvent/code> ;
    sh:name "code" ;
    sh:description "Coupon code" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.CouponCreatedEvent/amount> ;
    sh:name "amount" ;
    sh:description "Discount amount" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.CouponCreatedEvent/discountType> ;
    sh:name "discount type" ;
    sh:description "Discount type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.CouponCreatedEvent/description> ;
    sh:name "description" ;
    sh:description "Description" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.CouponCreatedEvent/dateExpires> ;
    sh:name "date expires" ;
    sh:description "Expiry date" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.CouponCreatedEvent/usageCount> ;
    sh:name "usage count" ;
    sh:description "Usage count" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.CouponCreatedEvent/usageLimit> ;
    sh:name "usage limit" ;
    sh:description "Usage limit" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.CouponCreatedEvent/freeShipping> ;
    sh:name "free shipping" ;
    sh:description "Whether free shipping is granted" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.CouponCreatedEvent/metadata> ;
    sh:name "metadata" ;
    sh:description "Metadata" ;
    sh:node woo:MetadataShape ;
    sh:class woo:Metadata ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Coupon Updated Event
woo:CouponUpdatedEventShape a sh:NodeShape ;
  sh:targetClass woo:CouponUpdatedEvent ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.CouponUpdatedEvent/id> ;
    sh:name "id" ;
    sh:description "Coupon ID" ;
    sh:datatype xsd:long ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.CouponUpdatedEvent/code> ;
    sh:name "code" ;
    sh:description "Coupon code" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.CouponUpdatedEvent/amount> ;
    sh:name "amount" ;
    sh:description "Discount amount" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.CouponUpdatedEvent/discountType> ;
    sh:name "discount type" ;
    sh:description "Discount type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.CouponUpdatedEvent/description> ;
    sh:name "description" ;
    sh:description "Description" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.CouponUpdatedEvent/dateExpires> ;
    sh:name "date expires" ;
    sh:description "Expiry date" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.CouponUpdatedEvent/usageCount> ;
    sh:name "usage count" ;
    sh:description "Usage count" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.CouponUpdatedEvent/usageLimit> ;
    sh:name "usage limit" ;
    sh:description "Usage limit" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.CouponUpdatedEvent/freeShipping> ;
    sh:name "free shipping" ;
    sh:description "Whether free shipping is granted" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.CouponUpdatedEvent/metadata> ;
    sh:name "metadata" ;
    sh:description "Metadata" ;
    sh:node woo:MetadataShape ;
    sh:class woo:Metadata ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Coupon Deleted Event
woo:CouponDeletedEventShape a sh:NodeShape ;
  sh:targetClass woo:CouponDeletedEvent ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.Events.CouponDeletedEvent/id> ;
    sh:name "id" ;
    sh:description "Deleted coupon ID" ;
    sh:datatype xsd:long ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Data
<https://relay.inferal.com/ontology/woocommerce/inline/WooCommerce.WooCommerceError/dataShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/woocommerce/inline/WooCommerce.WooCommerceError/data> ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.WooCommerceError.data/status> ;
    sh:name "status" ;
    sh:description "HTTP status code" ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Generated Record container shape for WooCommerce.PaymentGateway.settings
<https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.PaymentGateway/settings/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.PaymentGateway/settings/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.PaymentGateway/settings> ] ;
    sh:class woo:PaymentGateway ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.PaymentGateway/settings/entry> ;
    sh:node <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.PaymentGateway/settings/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.PaymentGateway/settings/Entry> ;
    sh:nodeKind sh:BlankNodeOrIRI
  ] ;
  sh:sparql [
    a sh:SPARQLConstraint ;
    sh:message "Record entry keys must be unique" ;
    sh:select """SELECT $this ?key WHERE { $this <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.PaymentGateway/settings/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.PaymentGateway/settings/key> ?key . ?right <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.PaymentGateway/settings/key> ?key . }"""
  ] .

# Generated Record entry shape for WooCommerce.PaymentGateway.settings
<https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.PaymentGateway/settings/EntryShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.PaymentGateway/settings/Entry> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.PaymentGateway/settings/entry> ] ;
    sh:class <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.PaymentGateway/settings/Container> ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.PaymentGateway/settings/key> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.PaymentGateway/settings/value> ;
    sh:node woo:PaymentGatewaySettingShape ;
    sh:class woo:PaymentGatewaySetting ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] .

# Generated Record container shape for WooCommerce.PaymentGatewayInput.settings
<https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.PaymentGatewayInput/settings/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.PaymentGatewayInput/settings/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.PaymentGatewayInput/settings> ] ;
    sh:class woo:PaymentGatewayInput ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.PaymentGatewayInput/settings/entry> ;
    sh:node <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.PaymentGatewayInput/settings/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.PaymentGatewayInput/settings/Entry> ;
    sh:nodeKind sh:BlankNodeOrIRI
  ] ;
  sh:sparql [
    a sh:SPARQLConstraint ;
    sh:message "Record entry keys must be unique" ;
    sh:select """SELECT $this ?key WHERE { $this <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.PaymentGatewayInput/settings/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.PaymentGatewayInput/settings/key> ?key . ?right <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.PaymentGatewayInput/settings/key> ?key . }"""
  ] .

# Generated Record entry shape for WooCommerce.PaymentGatewayInput.settings
<https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.PaymentGatewayInput/settings/EntryShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.PaymentGatewayInput/settings/Entry> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.PaymentGatewayInput/settings/entry> ] ;
    sh:class <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.PaymentGatewayInput/settings/Container> ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.PaymentGatewayInput/settings/key> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.PaymentGatewayInput/settings/value> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] .

# Generated Record container shape for WooCommerce.PaymentGatewaySetting.options
<https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.PaymentGatewaySetting/options/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.PaymentGatewaySetting/options/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.PaymentGatewaySetting/options> ] ;
    sh:class woo:PaymentGatewaySetting ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.PaymentGatewaySetting/options/entry> ;
    sh:node <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.PaymentGatewaySetting/options/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.PaymentGatewaySetting/options/Entry> ;
    sh:nodeKind sh:BlankNodeOrIRI
  ] ;
  sh:sparql [
    a sh:SPARQLConstraint ;
    sh:message "Record entry keys must be unique" ;
    sh:select """SELECT $this ?key WHERE { $this <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.PaymentGatewaySetting/options/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.PaymentGatewaySetting/options/key> ?key . ?right <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.PaymentGatewaySetting/options/key> ?key . }"""
  ] .

# Generated Record entry shape for WooCommerce.PaymentGatewaySetting.options
<https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.PaymentGatewaySetting/options/EntryShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.PaymentGatewaySetting/options/Entry> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.PaymentGatewaySetting/options/entry> ] ;
    sh:class <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.PaymentGatewaySetting/options/Container> ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.PaymentGatewaySetting/options/key> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.PaymentGatewaySetting/options/value> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] .

# Generated Record container shape for WooCommerce.ProductReview.reviewerAvatarUrls
<https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ProductReview/reviewerAvatarUrls/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ProductReview/reviewerAvatarUrls/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ProductReview/reviewerAvatarUrls> ] ;
    sh:class woo:ProductReview ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ProductReview/reviewerAvatarUrls/entry> ;
    sh:node <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ProductReview/reviewerAvatarUrls/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ProductReview/reviewerAvatarUrls/Entry> ;
    sh:nodeKind sh:BlankNodeOrIRI
  ] ;
  sh:sparql [
    a sh:SPARQLConstraint ;
    sh:message "Record entry keys must be unique" ;
    sh:select """SELECT $this ?key WHERE { $this <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ProductReview/reviewerAvatarUrls/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ProductReview/reviewerAvatarUrls/key> ?key . ?right <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ProductReview/reviewerAvatarUrls/key> ?key . }"""
  ] .

# Generated Record entry shape for WooCommerce.ProductReview.reviewerAvatarUrls
<https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ProductReview/reviewerAvatarUrls/EntryShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ProductReview/reviewerAvatarUrls/Entry> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ProductReview/reviewerAvatarUrls/entry> ] ;
    sh:class <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ProductReview/reviewerAvatarUrls/Container> ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ProductReview/reviewerAvatarUrls/key> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ProductReview/reviewerAvatarUrls/value> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] .

# Generated Record container shape for WooCommerce.SalesReport.totals
<https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SalesReport/totals/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SalesReport/totals/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SalesReport/totals> ] ;
    sh:class woo:SalesReport ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SalesReport/totals/entry> ;
    sh:node <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SalesReport/totals/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SalesReport/totals/Entry> ;
    sh:nodeKind sh:BlankNodeOrIRI
  ] ;
  sh:sparql [
    a sh:SPARQLConstraint ;
    sh:message "Record entry keys must be unique" ;
    sh:select """SELECT $this ?key WHERE { $this <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SalesReport/totals/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SalesReport/totals/key> ?key . ?right <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SalesReport/totals/key> ?key . }"""
  ] .

# Generated Record entry shape for WooCommerce.SalesReport.totals
<https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SalesReport/totals/EntryShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SalesReport/totals/Entry> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SalesReport/totals/entry> ] ;
    sh:class <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SalesReport/totals/Container> ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SalesReport/totals/key> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SalesReport/totals/value> ;
    sh:node woo:SalesReportPeriodShape ;
    sh:class woo:SalesReportPeriod ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] .

# Generated Record container shape for WooCommerce.SettingOption.options
<https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SettingOption/options/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SettingOption/options/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SettingOption/options> ] ;
    sh:class woo:SettingOption ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SettingOption/options/entry> ;
    sh:node <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SettingOption/options/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SettingOption/options/Entry> ;
    sh:nodeKind sh:BlankNodeOrIRI
  ] ;
  sh:sparql [
    a sh:SPARQLConstraint ;
    sh:message "Record entry keys must be unique" ;
    sh:select """SELECT $this ?key WHERE { $this <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SettingOption/options/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SettingOption/options/key> ?key . ?right <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SettingOption/options/key> ?key . }"""
  ] .

# Generated Record entry shape for WooCommerce.SettingOption.options
<https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SettingOption/options/EntryShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SettingOption/options/Entry> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SettingOption/options/entry> ] ;
    sh:class <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SettingOption/options/Container> ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SettingOption/options/key> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SettingOption/options/value> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] .

# Generated Record container shape for WooCommerce.ShippingZoneMethod.settings
<https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ShippingZoneMethod/settings/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ShippingZoneMethod/settings/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingZoneMethod/settings> ] ;
    sh:class woo:ShippingZoneMethod ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ShippingZoneMethod/settings/entry> ;
    sh:node <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ShippingZoneMethod/settings/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ShippingZoneMethod/settings/Entry> ;
    sh:nodeKind sh:BlankNodeOrIRI
  ] ;
  sh:sparql [
    a sh:SPARQLConstraint ;
    sh:message "Record entry keys must be unique" ;
    sh:select """SELECT $this ?key WHERE { $this <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ShippingZoneMethod/settings/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ShippingZoneMethod/settings/key> ?key . ?right <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ShippingZoneMethod/settings/key> ?key . }"""
  ] .

# Generated Record entry shape for WooCommerce.ShippingZoneMethod.settings
<https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ShippingZoneMethod/settings/EntryShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ShippingZoneMethod/settings/Entry> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ShippingZoneMethod/settings/entry> ] ;
    sh:class <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ShippingZoneMethod/settings/Container> ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ShippingZoneMethod/settings/key> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ShippingZoneMethod/settings/value> ;
    sh:node woo:ShippingZoneMethodSettingShape ;
    sh:class woo:ShippingZoneMethodSetting ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] .

# Generated Record container shape for WooCommerce.ShippingZoneMethodSetting.options
<https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ShippingZoneMethodSetting/options/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ShippingZoneMethodSetting/options/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingZoneMethodSetting/options> ] ;
    sh:class woo:ShippingZoneMethodSetting ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ShippingZoneMethodSetting/options/entry> ;
    sh:node <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ShippingZoneMethodSetting/options/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ShippingZoneMethodSetting/options/Entry> ;
    sh:nodeKind sh:BlankNodeOrIRI
  ] ;
  sh:sparql [
    a sh:SPARQLConstraint ;
    sh:message "Record entry keys must be unique" ;
    sh:select """SELECT $this ?key WHERE { $this <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ShippingZoneMethodSetting/options/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ShippingZoneMethodSetting/options/key> ?key . ?right <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ShippingZoneMethodSetting/options/key> ?key . }"""
  ] .

# Generated Record entry shape for WooCommerce.ShippingZoneMethodSetting.options
<https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ShippingZoneMethodSetting/options/EntryShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ShippingZoneMethodSetting/options/Entry> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ShippingZoneMethodSetting/options/entry> ] ;
    sh:class <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ShippingZoneMethodSetting/options/Container> ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ShippingZoneMethodSetting/options/key> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ShippingZoneMethodSetting/options/value> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] .

# Generated Record container shape for WooCommerce.ShippingZoneMethodUpdateInput.settings
<https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ShippingZoneMethodUpdateInput/settings/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ShippingZoneMethodUpdateInput/settings/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.ShippingZoneMethodUpdateInput/settings> ] ;
    sh:class woo:ShippingZoneMethodUpdateInput ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ShippingZoneMethodUpdateInput/settings/entry> ;
    sh:node <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ShippingZoneMethodUpdateInput/settings/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ShippingZoneMethodUpdateInput/settings/Entry> ;
    sh:nodeKind sh:BlankNodeOrIRI
  ] ;
  sh:sparql [
    a sh:SPARQLConstraint ;
    sh:message "Record entry keys must be unique" ;
    sh:select """SELECT $this ?key WHERE { $this <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ShippingZoneMethodUpdateInput/settings/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ShippingZoneMethodUpdateInput/settings/key> ?key . ?right <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ShippingZoneMethodUpdateInput/settings/key> ?key . }"""
  ] .

# Generated Record entry shape for WooCommerce.ShippingZoneMethodUpdateInput.settings
<https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ShippingZoneMethodUpdateInput/settings/EntryShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ShippingZoneMethodUpdateInput/settings/Entry> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ShippingZoneMethodUpdateInput/settings/entry> ] ;
    sh:class <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ShippingZoneMethodUpdateInput/settings/Container> ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ShippingZoneMethodUpdateInput/settings/key> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.ShippingZoneMethodUpdateInput/settings/value> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] .

# Generated Record container shape for WooCommerce.SystemStatusDatabase.databaseTables
<https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SystemStatusDatabase/databaseTables/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SystemStatusDatabase/databaseTables/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusDatabase/databaseTables> ] ;
    sh:class woo:SystemStatusDatabase ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SystemStatusDatabase/databaseTables/entry> ;
    sh:node <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SystemStatusDatabase/databaseTables/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SystemStatusDatabase/databaseTables/Entry> ;
    sh:nodeKind sh:BlankNodeOrIRI
  ] ;
  sh:sparql [
    a sh:SPARQLConstraint ;
    sh:message "Record entry keys must be unique" ;
    sh:select """SELECT $this ?key WHERE { $this <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SystemStatusDatabase/databaseTables/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SystemStatusDatabase/databaseTables/key> ?key . ?right <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SystemStatusDatabase/databaseTables/key> ?key . }"""
  ] .

# Generated Record entry shape for WooCommerce.SystemStatusDatabase.databaseTables
<https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SystemStatusDatabase/databaseTables/EntryShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SystemStatusDatabase/databaseTables/Entry> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SystemStatusDatabase/databaseTables/entry> ] ;
    sh:class <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SystemStatusDatabase/databaseTables/Container> ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SystemStatusDatabase/databaseTables/key> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SystemStatusDatabase/databaseTables/value> ;
    sh:datatype xsd:boolean ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] .

# Generated Record container shape for WooCommerce.SystemStatusSettings.taxonomies
<https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SystemStatusSettings/taxonomies/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SystemStatusSettings/taxonomies/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/woocommerce/property/WooCommerce.SystemStatusSettings/taxonomies> ] ;
    sh:class woo:SystemStatusSettings ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SystemStatusSettings/taxonomies/entry> ;
    sh:node <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SystemStatusSettings/taxonomies/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SystemStatusSettings/taxonomies/Entry> ;
    sh:nodeKind sh:BlankNodeOrIRI
  ] ;
  sh:sparql [
    a sh:SPARQLConstraint ;
    sh:message "Record entry keys must be unique" ;
    sh:select """SELECT $this ?key WHERE { $this <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SystemStatusSettings/taxonomies/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SystemStatusSettings/taxonomies/key> ?key . ?right <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SystemStatusSettings/taxonomies/key> ?key . }"""
  ] .

# Generated Record entry shape for WooCommerce.SystemStatusSettings.taxonomies
<https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SystemStatusSettings/taxonomies/EntryShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SystemStatusSettings/taxonomies/Entry> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SystemStatusSettings/taxonomies/entry> ] ;
    sh:class <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SystemStatusSettings/taxonomies/Container> ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SystemStatusSettings/taxonomies/key> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/woocommerce/record/WooCommerce.SystemStatusSettings/taxonomies/value> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] .
