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

:
    a owl:Ontology, pubacc:PublicationManagedOntology ;
    dcterms:accessRights pubacc:PublicAccess ;
    owl:imports conf: ;
    owl:imports loc: ;
    owl:imports <http://www.w3.org/ns/prov> ;
    owl:imports <http://www.w3.org/2004/02/skos/core> ;
    owl:imports <https://schema.org/> ;
    dcterms:title "Commercial Intelligence Ontology" ;
    dcterms:description "A reusable ontology for sourced commercial descriptions: what an entity does, what product or service offerings it sells, who buys them, which use cases they support, and how offerings are classified." ;
    dcterms:abstract "Commercial Intelligence models offerings and market-facing claims as sourced, classifiable resources. It separates specific products and services from SKOS product/service categories so analysts can classify offerings flexibly without turning every market label into an OWL class." ;
    dcterms:license <https://creativecommons.org/licenses/by/4.0/> ;
    dcterms:references
        <https://schema.org/Offer> ,
        <https://schema.org/Product> ,
        <https://schema.org/Service> ,
        <https://ontology.inferal.com/modules/localization/> ,
        <https://www.w3.org/TR/prov-o/> ,
        <https://www.w3.org/TR/skos-reference/> ;
    dcterms:source
        conf: ,
        loc: ,
        <http://www.w3.org/2004/02/skos/core> ,
        <http://www.w3.org/ns/prov> ,
        <https://schema.org/> ;
    vann:preferredNamespacePrefix "cmi" ;
    vann:preferredNamespaceUri "https://ontology.inferal.com/modules/commercial-intelligence/" ;
    mod:status "draft" ;
    rdfs:comment "Commercial Intelligence is the reusable product/service/customer layer used by company intelligence and other domains that need sourced commercial descriptions." ;
    owl:versionInfo "0.1.0" .

:ProductServiceOffering
    a rdfs:Class ;
    rdfs:subClassOf prov:Entity ;
    rdfs:label "product/service offering" ;
    rdfs:comment "A specific product, service, platform, API, subscription, professional service, hardware bundle, marketplace, or other named offering that can be classified, sourced, sold, piloted, or used by customers." ;
    skos:closeMatch schema:Offer ;
    rdfs:isDefinedBy : .

:Product
    a rdfs:Class ;
    rdfs:subClassOf :ProductServiceOffering ;
    rdfs:label "product" ;
    rdfs:comment "A named product, software product, platform, hardware product, API, data product, or packaged offering sold or made available to customers." ;
    skos:closeMatch schema:Product ;
    rdfs:isDefinedBy : .

:Service
    a rdfs:Class ;
    rdfs:subClassOf :ProductServiceOffering ;
    rdfs:label "service" ;
    rdfs:comment "A named service offering, managed service, professional service, implementation service, advisory service, or other human- or organization-delivered offering sold to customers." ;
    skos:closeMatch schema:Service ;
    rdfs:isDefinedBy : .

:BusinessActivity
    a rdfs:Class ;
    rdfs:label "business activity" ;
    rdfs:comment "A sourced description of what an entity does, such as warehouse automation, developer payments infrastructure, clinical trial software, or vertical SaaS for dental practices." ;
    rdfs:isDefinedBy : .

:CustomerSegment
    a rdfs:Class ;
    rdfs:label "customer segment" ;
    rdfs:comment "A group of customers, buyers, users, or accounts served or targeted by an entity or offering, such as enterprise logistics operators, SMB merchants, hospitals, developers, or public-sector agencies." ;
    rdfs:isDefinedBy : .

:UseCase
    a rdfs:Class ;
    rdfs:label "use case" ;
    rdfs:comment "A job-to-be-done, workflow, problem, or deployment scenario for an offering or business activity." ;
    rdfs:isDefinedBy : .

:RevenueModel
    a rdfs:Class ;
    rdfs:label "revenue model" ;
    rdfs:comment "A commercial model by which an entity monetizes an offering, such as subscription, usage-based pricing, transaction fees, hardware sales, services, licensing, or take rate." ;
    rdfs:isDefinedBy : .

:CustomerRelationship
    a rdfs:Class ;
    rdfs:subClassOf prov:Entity ;
    rdfs:label "customer relationship" ;
    rdfs:comment "A sourced commercial relationship in which an entity sells to, serves, pilots with, partners commercially with, or otherwise has a customer-like relationship with another organization or segment." ;
    rdfs:isDefinedBy : .

:OfferingClassification
    a rdfs:Class ;
    rdfs:subClassOf prov:Entity ;
    rdfs:label "offering classification" ;
    rdfs:comment "Evidence-bearing assignment of a product/service offering to a taxonomy concept or classification code, with optional scheme, source, rationale, validity, and confidence metadata. Source publication and retrieval timing use PROV-O on the source resources and retrieval activities." ;
    rdfs:isDefinedBy : .

:ProductServiceCategoryScheme
    a skos:ConceptScheme, owl:NamedIndividual ;
    rdfs:label "product/service category scheme" ;
    rdfs:comment "Controlled concept scheme for coarse product and service categories used to classify specific product/service offerings without making category membership an OWL class assertion." ;
    skos:prefLabel "Product/service category scheme"@en ;
    skos:definition "Coarse categories for products, services, platforms, marketplaces, data products, APIs, hardware, robotics, AI-enabled offerings, and vertical SaaS." ;
    rdfs:isDefinedBy : .

:SoftwareOffering
    a skos:Concept, owl:NamedIndividual ;
    rdfs:label "software offering" ;
    rdfs:comment "Product/service category for software sold or provided as an application, system, tool, workflow, or digital capability." ;
    skos:inScheme :ProductServiceCategoryScheme ;
    rdfs:isDefinedBy : .

:HardwareOffering
    a skos:Concept, owl:NamedIndividual ;
    rdfs:label "hardware offering" ;
    rdfs:comment "Product/service category for physical devices, equipment, machines, sensors, appliances, or hardware bundles." ;
    skos:inScheme :ProductServiceCategoryScheme ;
    rdfs:isDefinedBy : .

:ServiceOffering
    a skos:Concept, owl:NamedIndividual ;
    rdfs:label "service offering" ;
    rdfs:comment "Product/service category for human-delivered, managed, professional, implementation, support, outsourcing, or advisory services." ;
    skos:inScheme :ProductServiceCategoryScheme ;
    rdfs:isDefinedBy : .

:PlatformOffering
    a skos:Concept, owl:NamedIndividual ;
    rdfs:label "platform offering" ;
    rdfs:comment "Product/service category for offerings that expose a reusable platform, operating layer, ecosystem, workflow hub, or developer/user surface for multiple use cases." ;
    skos:inScheme :ProductServiceCategoryScheme ;
    rdfs:isDefinedBy : .

:MarketplaceOffering
    a skos:Concept, owl:NamedIndividual ;
    rdfs:label "marketplace offering" ;
    rdfs:comment "Product/service category for offerings that intermediate transactions, discovery, matching, procurement, liquidity, or exchange between multiple sides." ;
    skos:inScheme :ProductServiceCategoryScheme ;
    rdfs:isDefinedBy : .

:DataOffering
    a skos:Concept, owl:NamedIndividual ;
    rdfs:label "data offering" ;
    rdfs:comment "Product/service category for datasets, data feeds, indexes, benchmarks, enrichment products, analytics outputs, or information products." ;
    skos:inScheme :ProductServiceCategoryScheme ;
    rdfs:isDefinedBy : .

:APIOffering
    a skos:Concept, owl:NamedIndividual ;
    rdfs:label "API offering" ;
    rdfs:comment "Product/service category for offerings primarily exposed through an API, SDK, protocol, integration endpoint, or machine-facing service." ;
    skos:inScheme :ProductServiceCategoryScheme ;
    rdfs:isDefinedBy : .

:AIEnabledOffering
    a skos:Concept, owl:NamedIndividual ;
    rdfs:label "AI-enabled offering" ;
    rdfs:comment "Product/service category for offerings whose value proposition materially depends on machine learning, generative AI, predictive models, computer vision, NLP, autonomy, or decision automation." ;
    skos:inScheme :ProductServiceCategoryScheme ;
    rdfs:isDefinedBy : .

:RoboticsOffering
    a skos:Concept, owl:NamedIndividual ;
    rdfs:label "robotics offering" ;
    rdfs:comment "Product/service category for robotic systems, autonomous machines, robot fleets, robotics software, or robotics-as-a-service offerings." ;
    skos:inScheme :ProductServiceCategoryScheme ;
    rdfs:isDefinedBy : .

:VerticalSaaSOffering
    a skos:Concept, owl:NamedIndividual ;
    rdfs:label "vertical SaaS offering" ;
    rdfs:comment "Product/service category for SaaS offerings designed around the workflows, data, compliance, or operating needs of a specific industry vertical." ;
    skos:inScheme :ProductServiceCategoryScheme ;
    rdfs:isDefinedBy : .

:sellsOffering
    a rdf:Property ;
    rdfs:label "sells offering" ;
    rdfs:comment "Connects an entity, brand, or channel to a product/service offering it sells, licenses, provides, or makes available to customers." ;
    rdfs:domain rdfs:Resource ;
    rdfs:range :ProductServiceOffering .

:offeringDescription
    a rdf:Property ;
    rdfs:label "offering description" ;
    rdfs:comment "Human-readable description of what a product/service offering does or what problem it solves." ;
    rdfs:domain :ProductServiceOffering ;
    rdfs:range xsd:string .

:offeringCategory
    a rdf:Property ;
    rdfs:label "has offering category" ;
    rdfs:comment "Connects a product/service offering to one or more SKOS product/service category concepts." ;
    rdfs:domain :ProductServiceOffering ;
    rdfs:range skos:Concept .

:offeringClassification
    a rdf:Property ;
    rdfs:label "has offering classification" ;
    rdfs:comment "Connects a product/service offering to an evidence-bearing classification assignment." ;
    rdfs:domain :ProductServiceOffering ;
    rdfs:range :OfferingClassification .

:classifiedOffering
    a rdf:Property ;
    rdfs:label "classified offering" ;
    rdfs:comment "Connects an offering classification to the product/service offering being classified." ;
    rdfs:domain :OfferingClassification ;
    rdfs:range :ProductServiceOffering .

:classifiedAs
    a rdf:Property ;
    rdfs:label "classified as" ;
    rdfs:comment "Connects an offering classification to the SKOS concept assigned by a taxonomy, source, analyst, or classification process." ;
    rdfs:domain :OfferingClassification ;
    rdfs:range skos:Concept .

:classificationScheme
    a rdf:Property ;
    rdfs:label "classification scheme" ;
    rdfs:comment "Connects an offering classification to the concept scheme, taxonomy, code list, or external vocabulary in which the assigned concept or code is defined." ;
    rdfs:domain :OfferingClassification ;
    rdfs:range skos:ConceptScheme .

:classificationCode
    a rdf:Property ;
    rdfs:label "classification code" ;
    rdfs:comment "Literal code, notation, or source identifier used for an offering classification when the external scheme's concept IRI is unavailable or when preserving the original code is useful." ;
    rdfs:domain :OfferingClassification ;
    rdfs:range xsd:string .

:classificationRationale
    a rdf:Property ;
    rdfs:label "classification rationale" ;
    rdfs:comment "Human-readable rationale explaining why an offering was assigned to a taxonomy concept or code." ;
    rdfs:domain :OfferingClassification ;
    rdfs:range xsd:string .

:hasBusinessActivity
    a rdf:Property ;
    rdfs:label "has business activity" ;
    rdfs:comment "Connects an entity to a sourced description of what the business does." ;
    rdfs:domain rdfs:Resource ;
    rdfs:range :BusinessActivity .

:primaryActivity
    a rdf:Property ;
    rdfs:label "has primary activity" ;
    rdfs:comment "Connects an entity to the business activity currently treated as its primary activity for a research context." ;
    rdfs:domain rdfs:Resource ;
    rdfs:range :BusinessActivity .

:servesCustomerSegment
    a rdf:Property ;
    rdfs:label "serves customer segment" ;
    rdfs:comment "Connects an entity to a customer segment it serves, targets, or claims to serve." ;
    rdfs:domain rdfs:Resource ;
    rdfs:range :CustomerSegment .

:targetCustomerSegment
    a rdf:Property ;
    rdfs:label "targets customer segment" ;
    rdfs:comment "Connects an offering, product, brand, activity, or go-to-market claim to a customer segment it is intended to serve." ;
    rdfs:domain rdfs:Resource ;
    rdfs:range :CustomerSegment .

:seller
    a rdf:Property ;
    rdfs:label "has seller" ;
    rdfs:comment "Connects a customer relationship to the entity, brand, partner, reseller, or channel reported as selling or providing the offering." ;
    rdfs:domain :CustomerRelationship ;
    rdfs:range rdfs:Resource .

:customer
    a rdf:Property ;
    rdfs:label "has customer" ;
    rdfs:comment "Connects a customer relationship to the customer, buyer, account, design partner, or customer segment in that relationship." ;
    rdfs:domain :CustomerRelationship ;
    rdfs:range rdfs:Resource .

:purchasedOffering
    a rdf:Property ;
    rdfs:label "purchased offering" ;
    rdfs:comment "Connects a customer relationship to the product/service offering reported as purchased, piloted, used, deployed, licensed, or evaluated." ;
    rdfs:domain :CustomerRelationship ;
    rdfs:range :ProductServiceOffering .

:useCase
    a rdf:Property ;
    rdfs:label "has use case" ;
    rdfs:comment "Connects an entity, offering, customer relationship, business activity, or source claim to a use case." ;
    rdfs:domain rdfs:Resource ;
    rdfs:range :UseCase .

:revenueModel
    a rdf:Property ;
    rdfs:label "has revenue model" ;
    rdfs:comment "Connects an entity, offering, funding thesis, or operating model observation to a revenue model." ;
    rdfs:domain rdfs:Resource ;
    rdfs:range :RevenueModel .

:source
    a rdf:Property ;
    rdfs:label "has source" ;
    rdfs:comment "Connects a commercial intelligence claim, relationship, offering, classification, or model to a supporting source resource." ;
    rdfs:domain rdfs:Resource ;
    rdfs:range prov:Entity .

:validFrom
    a rdf:Property ;
    rdfs:label "valid from" ;
    rdfs:comment "Inclusive start date for a customer relationship, offering state, customer segment assignment, or other commercial state-like resource." ;
    rdfs:domain rdfs:Resource ;
    rdfs:range xsd:date ;
    loc:defaultFrame loc:UTCTimeline .

:validThrough
    a rdf:Property ;
    rdfs:label "valid through" ;
    rdfs:comment "Inclusive end date for a customer relationship, offering state, customer segment assignment, or other commercial state-like resource." ;
    rdfs:domain rdfs:Resource ;
    rdfs:range xsd:date ;
    loc:defaultFrame loc:UTCTimeline .

:confidenceAssessment
    a rdf:Property ;
    rdfs:label "confidence assessment" ;
    rdfs:comment "Connects a commercial intelligence resource to a structured confidence assessment from the confidence module." ;
    rdfs:domain rdfs:Resource ;
    rdfs:range conf:ConfidenceAssessment .
