version: 0.2.0.dev0
name: ossie-meta
description: |-
  How ontologies, data products, data contracts, semantic models, and physical tables relate.
  A meta-ontology written in the Apache Ossie ontology format.
ontology:
  # --- groups: the three levels ---
  - concept: Conceptual Level
    id: conceptual-level
    type: GroupType
    description: The business vocabulary, independent of storage and tools.
  - concept: Logical Level
    id: logical-level
    type: GroupType
    description: Units of ownership and delivery, and the specifications that describe them.
  - concept: Physical Level
    id: physical-level
    type: GroupType
    description: Where the data actually lives.

  # --- conceptual level ---
  - concept: Ontology
    id: ontology
    type: EntityType
    group: conceptual-level
    description: A conceptual model of the business in terms of concepts, relationships, and rules. Specified by Apache Ossie.
    relationships:
      - name: contains
        description: An ontology groups its concepts.
        roles:
          - concept: Concept
        multiplicity: OneToMany
        verbalizes:
          - "{Ontology} contains {Concept}"
  - concept: Concept
    id: concept
    type: EntityType
    group: conceptual-level
    description: A business term with meaning, such as Customer, Order, or Gross Merchandise Value. An entity type, a value type, or a metric.
    relationships:
      - name: relates to
        description: Concepts are connected by named, verbalized relationships.
        roles:
          - concept: Concept
            role_name: related
        verbalizes:
          - "{Concept} relates to {Concept:related}"

  # --- logical level ---
  - concept: Data Product
    id: data-product
    type: EntityType
    group: logical-level
    description: The unit of ownership and delivery. A team publishes data through output ports and is responsible for it. Specified by Bitol ODPS.
    relationships:
      - name: is about
        description: A data product declares which concepts it is about.
        roles:
          - concept: Concept
        multiplicity: OneToMany
        verbalizes:
          - "{Data Product} is about {Concept}"
      - name: has
        description: A data product delivers data through one or more output ports.
        roles:
          - concept: Output Port
        multiplicity: OneToMany
        verbalizes:
          - "{Data Product} has {Output Port}"
  - concept: Output Port
    id: output-port
    type: EntityType
    group: logical-level
    description: An interface through which a data product exposes data, on a specific platform.
    relationships:
      - name: specified by
        description: Every output port is described by exactly one data contract.
        roles:
          - concept: Data Contract
        multiplicity: OneToOne
        verbalizes:
          - "{Output Port} is specified by {Data Contract}"
      - name: exposes
        description: The output port points at the physical table or dataset.
        roles:
          - concept: Table
        multiplicity: OneToMany
        verbalizes:
          - "{Output Port} exposes {Table}"
  - concept: Data Contract
    id: data-contract
    type: EntityType
    group: logical-level
    description: The specification of an output port. Schema, quality rules, service levels, and terms of use. Specified by Bitol ODCS.
    relationships:
      - name: describes
        description: The contract schema describes the physical columns.
        roles:
          - concept: Column
        multiplicity: OneToMany
        verbalizes:
          - "{Data Contract} describes {Column}"
      - name: references
        description: Contract fields reference the concepts they implement via authoritativeDefinitions.
        roles:
          - concept: Concept
        multiplicity: OneToMany
        verbalizes:
          - "{Data Contract} references {Concept}"
  - concept: Semantic Model
    id: semantic-model
    type: EntityType
    group: logical-level
    description: A consumer-facing model for analysis. Datasets, joins, dimensions, and metrics over one or more data products. Specified by Apache Ossie.
    relationships:
      - name: maps to
        description: Metrics and dimensions of the semantic model map to ontology concepts.
        roles:
          - concept: Concept
        multiplicity: OneToMany
        verbalizes:
          - "{Semantic Model} maps to {Concept}"
      - name: reads from
        description: A semantic model is built on the output ports of data products.
        roles:
          - concept: Output Port
        multiplicity: OneToMany
        verbalizes:
          - "{Semantic Model} reads from {Output Port}"
      - name: queries
        description: At runtime the semantic model queries physical tables.
        roles:
          - concept: Table
        multiplicity: OneToMany
        verbalizes:
          - "{Semantic Model} queries {Table}"

  # --- physical level ---
  - concept: Table
    id: table
    type: EntityType
    group: physical-level
    description: A physical table, view, file, or topic on a platform such as Snowflake, Databricks, or Power BI.
    relationships:
      - name: has
        roles:
          - concept: Column
        multiplicity: OneToMany
        verbalizes:
          - "{Table} has {Column}"
  - concept: Column
    id: column
    type: EntityType
    group: physical-level
    description: A physical column with a name and a physical type.
