@prefix : <https://ontology.inferal.com/modules/graphs/> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix hg: <https://ontology.inferal.com/modules/hypergraphs/> .
@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/graphs/owl>
    a owl:Ontology, pubacc:PublicationManagedOntology ;
    dcterms:accessRights pubacc:PublicAccess ;
    owl:imports : ;
    owl:imports hg:owl ;
    owl:imports ord:owl ;
    dcterms:title "Graphs Ontology - OWL Addendum" ;
    dcterms:description "OWL class, property, key, disjointness, and property-chain axioms layered on the RDFS Graphs Ontology." ;
    dcterms:license <https://creativecommons.org/licenses/by/4.0/> ;
    dcterms:source :, hg:owl, ord:owl ;
    vann:preferredNamespacePrefix "graph" ;
    vann:preferredNamespaceUri "https://ontology.inferal.com/modules/graphs/" ;
    mod:status "draft" ;
    rdfs:label "Graphs Ontology - OWL Addendum" ;
    rdfs:comment "This addendum imports the RDFS base vocabulary and upstream OWL addenda, then adds OWL typing and axioms for consumers that want OWL reasoning support." ;
    owl:versionInfo "0.1.0" .

:Graph
    a owl:Class ;
    owl:disjointWith :Endpoint .

:DirectedGraph
    a owl:Class ;
    owl:disjointWith :UndirectedGraph .

:UndirectedGraph a owl:Class .
:Vertex a owl:Class .
:Edge a owl:Class .

:DirectedEdge
    a owl:Class ;
    owl:disjointWith :UndirectedEdge .

:UndirectedEdge a owl:Class .

:Endpoint a owl:Class .

:EdgeMembership
    a owl:Class ;
    owl:disjointWith :Endpoint ;
    owl:hasKey (
        :membershipGraph
        :membershipEdge
    ) .

:hasVertex a owl:ObjectProperty .

:hasEdge
    a owl:ObjectProperty ;
    owl:inverseOf :edgeInGraph ;
    owl:propertyChainAxiom (
        :hasEdgeMembership
        :membershipEdge
    ) .

:edgeInGraph a owl:ObjectProperty .

:hasEdgeMembership
    a owl:ObjectProperty ;
    owl:inverseOf :membershipGraph .

:membershipGraph a owl:ObjectProperty .
:membershipEdge a owl:ObjectProperty .

:hasEndpoint
    a owl:ObjectProperty ;
    owl:inverseOf :endpointOf .

:endpointOf a owl:ObjectProperty .
:endpointVertex a owl:ObjectProperty .

:connects
    a owl:ObjectProperty ;
    owl:propertyChainAxiom (
        :hasEndpoint
        :endpointVertex
    ) .

:endpointOrder a owl:ObjectProperty .
:source a owl:ObjectProperty, owl:FunctionalProperty .
:target a owl:ObjectProperty, owl:FunctionalProperty .
