################################################################################
# MiKaDo ⇄ SOSA/SSN Alignment Bridge
#
# Bridge file aligning the MiKaDo ontology (`mko:`,
# https://w3id.org/durair/ontology/refoundation#) with the W3C/OGC SOSA/SSN
# ontology (`sosa:`, https://www.w3.org/ns/sosa/, https://www.w3.org/ns/ssn/),
# Janowicz et al. (2019).
#
# Conceptual posture
# ------------------
# MiKaDo and SOSA cover *complementary epistemic registers* of observation:
# SOSA models *sensor / instrumental observation* (a procedure executed by
# a calibrated device, producing a measurable result on a feature of
# interest); MiKaDo models the *interpretive act of in-situ observation*
# performed by a human expert (choice of region, title, template, analytical
# intent, semantic alignment), and the *symmetric register* of computed facts
# derived from the documentation itself (DerivedFeature).
#
# This bridge therefore aligns MiKaDo with SOSA *selectively*:
#   - on the **instrumental layer** of W7_*With what* / W7_*How* (§3.4 of the
#     paper), where each platform hosting one or more sensors, each acquisition
#     procedure and each calibration parameter is reified through `sosa:Platform`
#     / `sosa:Sensor` / `sosa:Procedure`;
#   - on the **metrological subset** of `mko:KnowledgeEntity` (LiDAR-assisted
#     measurements, qualified instrumental measurements), aligned to
#     `sosa:Result`;
#   - on the **co-typing of instrumental acts** as `sosa:Observation`.
#
# It explicitly leaves the *interpretive* dimension of the in-situ act
# (`mko:agentRole = interpretation`, the discursive `mko:KnowledgeEntity`
# subset, the SKOS-validated semantic alignment) under PROV-O / CIDOC CRM
# responsibility.
#
# This selective alignment is also the conceptual hinge on which the
# *extension of MiKaDo to instrumental observation campaigns* (§8.7 of the
# paper, InField PoC perspective) is articulated — XRF, hyperspectral and
# multispectral imaging, RTI, infrared thermography, ultrasonic probing,
# *in situ* colorimetry — all reachable through the `sosa:Sensor` /
# `sosa:Platform` / `sosa:Procedure` typology and the MiKaDo W7 grammar.
#
# Convention
# ----------
# - `rdfs:subClassOf` / `rdfs:subPropertyOf` are used at TBox level when every
#   MiKaDo instance is logically also a SOSA instance.
# - `owl:equivalentClass` / `owl:equivalentProperty` are reserved for full
#   bidirectional equivalence (rare here, and limited to the metrological
#   register).
# - `skos:closeMatch` is used at TBox level when the alignment is conceptual
#   but instance-conditional — typically because the SOSA target carries
#   assumptions (sensor agency, calibration, automated procedure) that hold
#   for *some* MiKaDo instances only.
# - `skos:exactMatch` between predicates is used at TBox level when the
#   semantic intent matches but subsumption is not strictly appropriate.
#
# Version : 0.1.0 (initial publication, May 2026).
# License : CC-BY 4.0
################################################################################

@prefix mko:     <https://w3id.org/durair/ontology/refoundation#> .
@prefix so:      <https://w3id.org/durair/ontology/situated-observation#> .
@prefix sosa:    <http://www.w3.org/ns/sosa/> .
@prefix ssn:     <http://www.w3.org/ns/ssn/> .
@prefix crm:     <http://www.cidoc-crm.org/cidoc-crm/v7.1.1/> .
@prefix crmsci:  <http://www.ics.forth.gr/isl/CRMsci/> .
@prefix prov:    <http://www.w3.org/ns/prov#> .
@prefix rdfs:    <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl:     <http://www.w3.org/2002/07/owl#> .
@prefix dct:     <http://purl.org/dc/terms/> .
@prefix foaf:    <http://xmlns.com/foaf/0.1/> .
@prefix schema:  <https://schema.org/> .
@prefix skos:    <http://www.w3.org/2004/02/skos/core#> .
@prefix xsd:     <http://www.w3.org/2001/XMLSchema#> .
@prefix vann:    <http://purl.org/vocab/vann/> .

@base <https://w3id.org/durair/alignment/mko-sosa> .

################################################################################
# 0. Bridge metadata
################################################################################

<> a owl:Ontology ;
   dct:title       "MiKaDo ⇄ SOSA/SSN alignment bridge"@en ;
   dct:description "Selective TBox alignment of the MiKaDo ontology with the W3C/OGC SOSA/SSN ontology. Covers the instrumental layer of W7 (Platform, Sensor, Procedure), the co-typing of instrumental acts as sosa:Observation, and the metrological subset of mko:KnowledgeEntity (sosa:Result)."@en ;
   dct:creator     <https://orcid.org/0000-0001-7600-2273> ,
                   <https://orcid.org/0000-0003-3724-4829> ,
                   <https://orcid.org/0009-0001-3313-0587> ;
   dct:publisher   [ a foaf:Organization ;
                     foaf:name "MAP — UPR 2002 CNRS" ;
                     foaf:homepage <https://www.map.cnrs.fr/> ] ;
   dct:rightsHolder "CNRS" ;
   schema:funder   [ a schema:Organization ;
                     schema:name "European Research Council" ;
                     schema:alternateName "n-Dame_Heritage" ;
                     schema:identifier "101055423" ] ;
   dct:issued      "2026-05-06"^^xsd:date ;
   owl:versionInfo "0.1.0" ;
   dct:license     <https://creativecommons.org/licenses/by/4.0/> ;
   vann:preferredNamespacePrefix "mko-sosa" ;
   vann:preferredNamespaceUri    "https://w3id.org/durair/alignment/mko-sosa#" ;
   owl:imports     <https://w3id.org/durair/ontology/refoundation> ,
                   <http://www.w3.org/ns/sosa/> .

<https://orcid.org/0000-0001-7600-2273> a foaf:Person ;
    foaf:name "Livio De Luca" ;
    foaf:mbox <mailto:livio.deluca@map.cnrs.fr> .

<https://orcid.org/0000-0003-3724-4829> a foaf:Person ;
    foaf:name "Anthony Pamart" .

<https://orcid.org/0009-0001-3313-0587> a foaf:Person ;
    foaf:name "Quentin Vogel" .

################################################################################
# 1. Class alignments — instrumental observation acts
################################################################################

# Every in-situ observation act in MiKaDo is, structurally, an observation in the
# SOSA sense: it is performed at a moment, by an agent (human or instrumental),
# upon a feature of interest, and may yield results. The interpretive nature
# of the human gesture does not contradict SOSA, which admits human-mediated
# observations.
mko:InSituObservationAct
    rdfs:subClassOf    sosa:Observation ;
    skos:closeMatch    crmsci:S4_Observation .

mko:ExSituObservationAct
    rdfs:subClassOf    sosa:Observation .

# At the *act* level, MiKaDo's mko:Activity superclass is broader than
# sosa:Observation (it also covers macro-programmes and meso-sessions that
# are not themselves observations); we therefore align via skos:closeMatch
# at the superclass level.
mko:Activity
    skos:closeMatch    sosa:Observation .

################################################################################
# 2. Class alignments — instrumental layer of W7 (§3.4 of the paper)
################################################################################

# The W7_With what / W7_How nodes carrying *instrumental* information align with
# SOSA's Platform / Sensor / Procedure when so populated. The alignment is
# instance-conditional: a W7_With what node may legitimately carry
# non-instrumental information (a method, a discursive protocol).
mko:W7_WithWhat
    skos:closeMatch    sosa:Platform ,
                       sosa:Sensor .

mko:W7_How
    skos:closeMatch    sosa:Procedure .

################################################################################
# 3. Class alignments — material referent and observed features
################################################################################

# The MiKaDo MaterialEntity is, in the SOSA sense, the FeatureOfInterest of
# the observation chain — but with a richer patrimonial identity than the
# minimal SOSA construct.
mko:MaterialEntity
    skos:closeMatch    sosa:FeatureOfInterest .

# An ObservedFeature in MiKaDo is a *qualified portion* of the material
# referent, which is the closest SOSA notion of Sample (a part of a feature
# of interest selected for observation).
mko:ObservedFeature
    skos:closeMatch    sosa:Sample .

################################################################################
# 4. Class alignments — metrological knowledge (sosa:Result)
################################################################################

# A qualified measurement (LiDAR-assisted measurement, quantitative
# instrumental result) is, structurally, a sosa:Result.
mko:QuantitativeMeasurement
    rdfs:subClassOf    sosa:Result .

so:QuantitativeMeasurement
    rdfs:subClassOf    sosa:Result .

# The metrological superclass of MiKaDo's KnowledgeEntity aligns at superclass
# level via skos:closeMatch (the discursive subset is explicitly out of scope).
so:MetrologicalKnowledgeEntity
    skos:closeMatch    sosa:Result .

################################################################################
# 5. Class alignments — graph snapshot (sosa:ObservationCollection)
################################################################################

# A MiKaDo GraphSnapshot reifies the export bundle of an ObservationProgram —
# i.e. a coherent collection of observations contributed by one trajectory.
# This aligns conceptually with sosa:ObservationCollection (SSN extension),
# while preserving the additional MiKaDo commitments (provenance triptych,
# schemaVersion, sovereignty, plurality).
mko:GraphSnapshot
    skos:closeMatch    sosa:ObservationCollection .

################################################################################
# 6. Predicate alignments
################################################################################

# Where MiKaDo produces an observation result (LiDAR measurement, instrumental
# acquisition), the production predicate is a close match for sosa:hasResult.
# Subsumption is *not* asserted because mko:produces also covers production of
# digital-entity media (frames, shapes) that are not "results" in SOSA.
mko:produces
    skos:closeMatch    sosa:hasResult .

# Anchoring to the material referent is the MiKaDo equivalent of
# sosa:hasFeatureOfInterest. The MiKaDo predicate is more specific (it carries
# the patrimonial framing) — we declare it as a sub-property at TBox level for
# instrumental contexts, which is the conservative choice.
mko:isFeatureOf
    rdfs:subPropertyOf sosa:hasFeatureOfInterest .

# Temporal anchoring of the act aligns with sosa:resultTime when the act is
# instrumental, and with sosa:phenomenonTime when the act records a
# phenomenon-bound observation.
mko:performedAt
    skos:closeMatch    sosa:resultTime ,
                       sosa:phenomenonTime .

# Procedural derivation: when a DerivedFeature (or an instrumental
# QuantitativeMeasurement) records the procedure that produced it, this
# predicate is a strict subproperty of sosa:usedProcedure.
mko:derivationMethod
    rdfs:subPropertyOf sosa:usedProcedure .

# Agency: when the act is instrumental, the sensor/platform is the agent that
# performed it. Subsumption is too strong (mko:performedBy also covers human
# agents) — we use skos:closeMatch.
mko:performedBy
    skos:closeMatch    sosa:madeBySensor .

################################################################################
# 7. Notes for instance-level emission
################################################################################

# The opt-in SOSA export profile materialises
# this bridge at instance level by emitting, on each affected node, the SOSA
# multi-typing alongside the canonical MiKaDo + PROV + CRM + Schema.org typing:
#
#   - every mko:InSituObservationAct of mko:agentKind = "automatic" or
#     "mixed" co-typed sosa:Observation;
#   - every mko:QuantitativeMeasurement co-typed sosa:Result;
#   - every W7_WithWhat node carrying instrumental literals (device,
#     sensor model, calibration) co-typed sosa:Platform / sosa:Sensor;
#   - every W7_How node carrying procedural literals (method, parameters)
#     co-typed sosa:Procedure;
#   - every mko:GraphSnapshot co-typed sosa:ObservationCollection.
#
# Bundles emitted under this profile remain readable by all other consumers
# (CRM, PROV, Schema.org, HDTO) without modification, in keeping with the
# polyglot multi-typing principle of the model.
