@prefix :     <https://sfeir.com/ontology/ai4it#> .
@prefix owl:  <http://www.w3.org/2002/07/owl#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix xsd:  <http://www.w3.org/2001/XMLSchema#> .

# ============================================================
# AI for IT — Ontologie SFEIR
# Version 1.0
# ============================================================

# ============================================================
# MODULE 1 — AGENTS (qui agit)
# ============================================================

:Agent          a owl:Class .
:HumanAgent     rdfs:subClassOf :Agent .
:AIAgent        rdfs:subClassOf :Agent .
:HybridSystem   rdfs:subClassOf :Agent ;
    rdfs:comment "Système humain+IA agissant comme une unité"@fr .

# ============================================================
# MODULE 2 — RÔLES (ce qu'un humain joue dans un contexte)
# Un même individu peut tenir plusieurs rôles dans la journée.
# ============================================================

:Role a owl:Class .

:DéveloppeurAugmenté    rdfs:subClassOf :Role ;
    rdfs:comment "IA en assistance, humain au centre, pattern centaure"@fr .

:Orchestrateur          rdfs:subClassOf :Role ;
    rdfs:comment "Pilote un ou plusieurs agents IA"@fr .

:IngénieurAgentique     rdfs:subClassOf :Role ;
    rdfs:comment "Conçoit et opère le système d'agents lui-même"@fr .

:VibeCoder              rdfs:subClassOf :Role ;
    rdfs:comment "Spécifie l'intention, l'IA produit le code"@fr .

:ReviewerAugmenté       rdfs:subClassOf :Role .
:ArchitecteAugmenté     rdfs:subClassOf :Role .
:OpsAugmenté            rdfs:subClassOf :Role .

# --- Product Engineer et ses spécialisations ---
:ProductEngineer rdfs:subClassOf :Role ;
    rdfs:label "Product Engineer"@fr ;
    rdfs:comment """Ingénieur portant la responsabilité bout-en-bout 
        d'un produit ou d'une fonctionnalité, de la formulation du 
        problème utilisateur à la mise en production et la mesure 
        d'impact. Fusionne ingénierie, design et raisonnement produit."""@fr ;
    skos:related :IngénieurAgentique, :ArchitecteAugmenté .

:ProductEngineerAugmenté  rdfs:subClassOf :ProductEngineer ;
    rdfs:comment "PE outillé d'assistants IA, ship en pattern centaure"@fr .

:ProductEngineerAgentique rdfs:subClassOf :ProductEngineer ;
    rdfs:comment "PE orchestrant des agents pour livrer à l'échelle d'une équipe"@fr .

# ============================================================
# MODULE 3 — AXES ORTHOGONAUX (dimensions de caractérisation)
# ============================================================

# --- 3a. Niveau d'autonomie de l'IA ---
:AutonomyLevel a owl:Class .
:L0_Manual       a :AutonomyLevel ; :levelValue 0 ; rdfs:label "Manuel"@fr .
:L1_Assistance   a :AutonomyLevel ; :levelValue 1 ; rdfs:label "Autocomplétion"@fr .
:L2_Augmentation a :AutonomyLevel ; :levelValue 2 ; rdfs:label "Génération sur demande"@fr .
:L3_Délégation   a :AutonomyLevel ; :levelValue 3 ; rdfs:label "Tâches entières déléguées"@fr .
:L4_Agentique    a :AutonomyLevel ; :levelValue 4 ; rdfs:label "Multi-étapes supervisé"@fr .
:L5_Autonome     a :AutonomyLevel ; :levelValue 5 ; rdfs:label "Bout-en-bout sans supervision"@fr .

# --- 3b. Mode de collaboration (Mollick) ---
:CollaborationMode a owl:Class .
:Centaur a :CollaborationMode ; rdfs:comment "Tâches séparées humain/IA"@fr .
:Cyborg  a :CollaborationMode ; rdfs:comment "Intégration fluide, fusionnée"@fr .

# --- 3c. Locus de l'intention ---
:IntentionLocus a owl:Class .
:StepBySpecification a :IntentionLocus ;
    rdfs:comment "L'humain dirige chaque étape"@fr .
:GoalSpecification a :IntentionLocus ;
    rdfs:comment "L'humain spécifie le but, l'IA décompose"@fr .
:SystemSpecification a :IntentionLocus ;
    rdfs:comment "L'humain conçoit le système qui spécifie"@fr .

# --- 3d. Granularité de l'output ---
:Granularity a owl:Class .
:Token    rdfs:subClassOf :Granularity .
:Function rdfs:subClassOf :Granularity .
:Module   rdfs:subClassOf :Granularity .
:Feature  rdfs:subClassOf :Granularity .
:Service  rdfs:subClassOf :Granularity .
:System   rdfs:subClassOf :Granularity .

# --- 3e. Phase SDLC ---
:SDLCPhase a owl:Class .
:Spec     rdfs:subClassOf :SDLCPhase .
:Design   rdfs:subClassOf :SDLCPhase .
:Code     rdfs:subClassOf :SDLCPhase .
:Test     rdfs:subClassOf :SDLCPhase .
:Review   rdfs:subClassOf :SDLCPhase .
:Deploy   rdfs:subClassOf :SDLCPhase .
:Run      rdfs:subClassOf :SDLCPhase .
:Maintain rdfs:subClassOf :SDLCPhase .

# --- 3f. Périmètre de responsabilité (rôle) ---
:ResponsibilityScope a owl:Class .
:TaskScope     a :ResponsibilityScope ; rdfs:label "Tâche"@fr .
:FeatureScope  a :ResponsibilityScope ; rdfs:label "Feature"@fr .
:ProductScope  a :ResponsibilityScope ; rdfs:label "Produit"@fr .
:BusinessScope a :ResponsibilityScope ; rdfs:label "Ligne business"@fr .

# --- 3g. Compétences mobilisées ---
:Competency a owl:Class .
:EngineeringCompetency rdfs:subClassOf :Competency .
:ProductCompetency     rdfs:subClassOf :Competency .
:DesignCompetency      rdfs:subClassOf :Competency .
:DataCompetency        rdfs:subClassOf :Competency .
:OpsCompetency         rdfs:subClassOf :Competency .

# ============================================================
# MODULE 4 — PRATIQUES (la manière de travailler observée)
# ============================================================

:Practice a owl:Class .
:PairProgrammingIA       rdfs:subClassOf :Practice .
:SpecDrivenDevelopment   rdfs:subClassOf :Practice .
:CompoundEngineering     rdfs:subClassOf :Practice .
:VibeCoding              rdfs:subClassOf :Practice .
:AgenticRefactoring      rdfs:subClassOf :Practice .
:LegacyModernization     rdfs:subClassOf :Practice .
:EndToEndProductDelivery rdfs:subClassOf :Practice ;
    rdfs:label "Livraison produit bout-en-bout"@fr ;
    rdfs:comment "Pratique caractéristique du Product Engineer"@fr .

# ============================================================
# MODULE 5 — SYSTÈMES IA (l'outillage qui active les pratiques)
# ============================================================

:AISystem a owl:Class .
:CodeAssistant      rdfs:subClassOf :AISystem .   # Copilot, Tabnine
:AgenticIDE         rdfs:subClassOf :AISystem .   # Claude Code, Cursor
:AutonomousAgent    rdfs:subClassOf :AISystem .   # Devin
:OrchestrationLayer rdfs:subClassOf :AISystem .   # RAISE, Conductor
:FoundationModel    rdfs:subClassOf :AISystem .   # Claude, GPT, etc.

# ============================================================
# MODULE 6 — ARTEFACTS (ce qui est produit)
# ============================================================

:Artifact a owl:Class .
:Code                 rdfs:subClassOf :Artifact .
:Specification        rdfs:subClassOf :Artifact .
:TestSuite            rdfs:subClassOf :Artifact .
:ArchitectureDecision rdfs:subClassOf :Artifact .
:Documentation        rdfs:subClassOf :Artifact .

# ============================================================
# MODULE 7 — PROPRIÉTÉS (qui relie quoi)
# ============================================================

:hasRole              a owl:ObjectProperty ; rdfs:domain :HumanAgent ; rdfs:range :Role .
:appliesPractice      a owl:ObjectProperty ; rdfs:domain :Agent ;     rdfs:range :Practice .
:enabledBy            a owl:ObjectProperty ; rdfs:domain :Practice ;  rdfs:range :AISystem .
:hasAutonomyLevel     a owl:ObjectProperty ; rdfs:domain :Practice ;  rdfs:range :AutonomyLevel .
:hasCollaborationMode a owl:ObjectProperty ; rdfs:domain :Practice ;  rdfs:range :CollaborationMode .
:hasIntentionLocus    a owl:ObjectProperty ; rdfs:domain :Practice ;  rdfs:range :IntentionLocus .
:hasGranularity       a owl:ObjectProperty ; rdfs:domain :Practice ;  rdfs:range :Granularity .
:participatesInPhase  a owl:ObjectProperty ; rdfs:domain :Practice ;  rdfs:range :SDLCPhase .
:produces             a owl:ObjectProperty ; rdfs:domain :Practice ;  rdfs:range :Artifact .
:supersedes           a owl:ObjectProperty ; rdfs:domain :Practice ;  rdfs:range :Practice .

# Propriétés liées au rôle
:hasResponsibilityScope a owl:ObjectProperty ; rdfs:domain :Role ; rdfs:range :ResponsibilityScope .
:requiresCompetency     a owl:ObjectProperty ; rdfs:domain :Role ; rdfs:range :Competency .
