@prefix : <https://ontology.inferal.com/modules/git/> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix mod: <https://w3id.org/mod#> .
@prefix ord: <https://ontology.inferal.com/modules/ordering/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix pubacc: <https://ontology.inferal.com/modules/publication-access/> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix vann: <http://purl.org/vocab/vann/> .

<https://ontology.inferal.com/modules/git/owl>
    a owl:Ontology, pubacc:PublicationManagedOntology ;
    dcterms:accessRights pubacc:PublicAccess ;
    owl:imports : ;
    owl:imports ord:owl ;
    dcterms:title "Git Ontology - OWL Addendum" ;
    dcterms:description "OWL typing, disjointness, commit-ancestry membership, and parent-chain axioms layered on the Git Ontology." ;
    dcterms:license <https://creativecommons.org/licenses/by/4.0/> ;
    dcterms:source :, ord:owl ;
    vann:preferredNamespacePrefix "git" ;
    vann:preferredNamespaceUri "https://ontology.inferal.com/modules/git/" ;
    mod:status "draft" ;
    rdfs:label "Git Ontology - OWL Addendum" ;
    rdfs:comment "This optional addendum supplies OWL term kinds, conservative disjointness, canonical commit-ancestry membership, and broad parent precedence without turning validation constraints into open-world axioms." ;
    owl:versionInfo "0.1.0" .

:Repository a owl:Class .
:ObjectStore a owl:Class .
:GitObject a owl:Class .
:Blob a owl:Class .
:Tree a owl:Class .
:Commit
    a owl:Class ;
    rdfs:subClassOf [
        a owl:Restriction ;
        owl:onProperty ord:inOrdering ;
        owl:hasValue :CommitAncestryOrdering
    ] .
:Tag a owl:Class .
:GitlinkCommit a owl:Class .
:TreeEntry a owl:Class .
:CommitParent a owl:Class .
:CommitAncestryOrdering a owl:NamedIndividual .
:Reference a owl:Class .
:DirectReference a owl:Class .
:SymbolicReference a owl:Class .

:Blob owl:disjointWith :Tree, :Commit, :Tag .
:Tree owl:disjointWith :Commit, :Tag .
:Commit owl:disjointWith :Tag .
:GitlinkCommit owl:disjointWith :Blob, :Tree, :Commit, :Tag .
:DirectReference owl:disjointWith :SymbolicReference .

:hasObject a owl:ObjectProperty .
:hasReference a owl:ObjectProperty .
:defaultObjectStore a owl:ObjectProperty .
:payloadStore a owl:ObjectProperty .
:hasTreeEntry a owl:ObjectProperty .
:entryObject a owl:ObjectProperty .
:commitTree a owl:ObjectProperty, owl:FunctionalProperty .
:hasParent a owl:ObjectProperty .
:parentCommit a owl:ObjectProperty, owl:FunctionalProperty .
:hasParentCommit
    a owl:ObjectProperty ;
    owl:propertyChainAxiom (
        :hasParent
        :parentCommit
    ) .
:tagTarget a owl:ObjectProperty, owl:FunctionalProperty .
:pointsToObject a owl:ObjectProperty, owl:FunctionalProperty .

:objectFormat a owl:DatatypeProperty, owl:FunctionalProperty .
:accessIRI a owl:DatatypeProperty .
:objectId a owl:DatatypeProperty, owl:FunctionalProperty .
:entryIndex a owl:DatatypeProperty, owl:FunctionalProperty .
:entryNameBytes a owl:DatatypeProperty, owl:FunctionalProperty .
:entryMode a owl:DatatypeProperty, owl:FunctionalProperty .
:parentIndex a owl:DatatypeProperty, owl:FunctionalProperty .
:referenceName a owl:DatatypeProperty, owl:FunctionalProperty .
:symbolicTargetName a owl:DatatypeProperty, owl:FunctionalProperty .
