@prefix ex: <https://example.com/graphs/> .
@prefix graph: <https://ontology.inferal.com/modules/graphs/> .
@prefix ord: <https://ontology.inferal.com/modules/ordering/> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

ex:deployment-flow
    a graph:DirectedGraph ;
    rdfs:label "Deployment flow" ;
    graph:hasVertex ex:build, ex:test, ex:release ;
    graph:hasEdgeMembership ex:deployment-build-to-test-membership, ex:deployment-test-to-release-membership ;
    graph:hasEdge ex:build-to-test, ex:test-to-release .

ex:build
    a graph:Vertex .

ex:test
    a graph:Vertex .

ex:release
    a graph:Vertex .

ex:deployment-build-to-test-membership
    a graph:EdgeMembership ;
    graph:membershipGraph ex:deployment-flow ;
    graph:membershipEdge ex:build-to-test .

ex:deployment-test-to-release-membership
    a graph:EdgeMembership ;
    graph:membershipGraph ex:deployment-flow ;
    graph:membershipEdge ex:test-to-release .

ex:build-to-test
    a graph:DirectedEdge ;
    graph:edgeInGraph ex:deployment-flow ;
    graph:source ex:build ;
    graph:target ex:test ;
    graph:endpointOrder ex:build-to-test-order ;
    graph:hasEndpoint ex:build-to-test-source, ex:build-to-test-target ;
    graph:connects ex:build, ex:test .

ex:build-to-test-order
    a ord:TotalOrdering .

ex:build-to-test-source
    a graph:Endpoint, ord:Comparable ;
    graph:endpointOf ex:build-to-test ;
    graph:endpointVertex ex:build ;
    ord:inOrdering ex:build-to-test-order ;
    ord:rank 1 .

ex:build-to-test-target
    a graph:Endpoint, ord:Comparable ;
    graph:endpointOf ex:build-to-test ;
    graph:endpointVertex ex:test ;
    ord:inOrdering ex:build-to-test-order ;
    ord:rank 2 ;
    ord:greaterThan ex:build-to-test-source .

ex:test-to-release
    a graph:DirectedEdge ;
    graph:edgeInGraph ex:deployment-flow ;
    graph:source ex:test ;
    graph:target ex:release ;
    graph:endpointOrder ex:test-to-release-order ;
    graph:hasEndpoint ex:test-to-release-source, ex:test-to-release-target .

ex:test-to-release-order
    a ord:TotalOrdering .

ex:test-to-release-source
    a graph:Endpoint, ord:Comparable ;
    graph:endpointOf ex:test-to-release ;
    graph:endpointVertex ex:test ;
    ord:inOrdering ex:test-to-release-order ;
    ord:rank 1 .

ex:test-to-release-target
    a graph:Endpoint, ord:Comparable ;
    graph:endpointOf ex:test-to-release ;
    graph:endpointVertex ex:release ;
    ord:inOrdering ex:test-to-release-order ;
    ord:rank 2 ;
    ord:greaterThan ex:test-to-release-source .

ex:collaboration-map
    a graph:UndirectedGraph ;
    rdfs:label "Collaboration map" ;
    graph:hasVertex ex:alice, ex:bea ;
    graph:hasEdgeMembership ex:collaboration-alice-bea-membership ;
    graph:hasEdge ex:alice-bea .

ex:alice
    a graph:Vertex .

ex:bea
    a graph:Vertex .

ex:collaboration-alice-bea-membership
    a graph:EdgeMembership ;
    graph:membershipGraph ex:collaboration-map ;
    graph:membershipEdge ex:alice-bea .

ex:alice-bea
    a graph:UndirectedEdge ;
    graph:edgeInGraph ex:collaboration-map ;
    graph:hasEndpoint ex:alice-bea-left, ex:alice-bea-right ;
    graph:connects ex:alice, ex:bea .

ex:alice-bea-left
    a graph:Endpoint ;
    graph:endpointOf ex:alice-bea ;
    graph:endpointVertex ex:alice .

ex:alice-bea-right
    a graph:Endpoint ;
    graph:endpointOf ex:alice-bea ;
    graph:endpointVertex ex:bea .
