@base <http://geni-orca.renci.org/owl/topology.owl> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix : <#> .
@prefix dtn: <dtn.owl#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl2xml: <http://www.w3.org/2006/12/owl2-xml#> .
@prefix layer: <layer.owl#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix collections: <collections.owl#> .

collections:Item
    a owl:Class .

collections:List
    a owl:Class .

collections:ListItem
    a owl:Class .

collections:Set
    a owl:Class .

layer:CastType
    a owl:Class .

layer:ConnectionDirection
    a owl:Class .

layer:Layer
    a owl:Class .

layer:feature
    a owl:ObjectProperty .

layer:hasCastType
    a owl:ObjectProperty .

layer:switchingCapability
    a owl:ObjectProperty .

<>
    a owl:Ontology ;
    rdfs:comment "Topology definitions for NDL-OWL" ;
    rdfs:isDefinedBy """RENCI UNC Chapel Hill
yxin@renci.org""" ;
    owl:imports <collections.owl>, <layer.owl> .

:AccessGroup
    a owl:Class ;
    rdfs:subClassOf :NetworkElement .

:BroadcastConnection
    a owl:Class ;
    rdfs:subClassOf :BroadcastSegment .

:BroadcastPhysicalLink
    a owl:Class ;
    rdfs:subClassOf :BroadcastSegment .

:BroadcastSegment
    a owl:Class ;
    rdfs:subClassOf :Link ;
    owl:equivalentClass [
        a owl:Restriction ;
        owl:hasValue layer:Broadcast ;
        owl:onProperty layer:hasCastType
    ] .

:Connection
    a owl:Class ;
    rdfs:subClassOf :PPTSegment .

:ConnectionPoint
    a owl:Class ;
    rdfs:subClassOf :NetworkTransportElement .

:Copper
    a owl:Class ;
    rdfs:subClassOf :BroadcastPhysicalLink .

:CopperLink
    a owl:Class ;
    rdfs:subClassOf :PhysicalLink .

:CrossConnect
    a owl:Class ;
    rdfs:subClassOf :SubnetworkConnection .

:Device
    a owl:Class ;
    rdfs:subClassOf :NetworkElement, [
        a owl:Restriction ;
        owl:onProperty :hasSwitchMatrix ;
        owl:someValuesFrom :SwitchMatrix
    ] .

:FiberLink
    a owl:Class ;
    rdfs:subClassOf :PhysicalLink .

:Interface
    a owl:Class ;
    rdfs:subClassOf collections:Item, :ConnectionPoint .

:LayerNetworkElement
    a owl:Class ;
    rdfs:subClassOf :NetworkElement .

:Link
    a owl:Class ;
    rdfs:subClassOf :NetworkTransportElement ;
    owl:equivalentClass [
        a owl:Restriction ;
        owl:onProperty layer:hasCastType ;
        owl:someValuesFrom layer:CastType
    ] .

:NetworkConnection
    a owl:Class ;
    rdfs:subClassOf collections:List, :Connection .

:NetworkDomain
    a owl:Class ;
    rdfs:subClassOf collections:Set, :NetworkElement .

:NetworkElement
    a owl:Class ;
    rdfs:subClassOf owl:Thing .

:NetworkTransportElement
    a owl:Class ;
    rdfs:subClassOf :NetworkElement .

:PPTSegment
    a owl:Class ;
    rdfs:subClassOf :Link ;
    owl:equivalentClass [
        a owl:Restriction ;
        owl:hasValue layer:Unicast ;
        owl:onProperty layer:hasCastType
    ] .

:PhysicalLink
    a owl:Class ;
    rdfs:subClassOf :PPTSegment .

:Radio
    a owl:Class ;
    rdfs:subClassOf :BroadcastPhysicalLink .

:ReconfigurableInterface
    a owl:Class ;
    rdfs:subClassOf :Interface .

:StaticInterface
    a owl:Class ;
    rdfs:subClassOf :Interface .

:SubNetwork
    a owl:Class ;
    rdfs:subClassOf :NetworkElement .

:SubnetworkConnection
    a owl:Class ;
    rdfs:subClassOf collections:ListItem, :Connection .

:SwitchMatrix
    a owl:Class ;
    rdfs:subClassOf :SubNetwork, [
        a owl:Restriction ;
        owl:minQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
        owl:onClass layer:Layer ;
        owl:onProperty layer:switchingCapability
    ] .

:Trail
    a owl:Class ;
    rdfs:subClassOf :PPTSegment .

:connectedTo
    a owl:ObjectProperty, owl:TransitiveProperty ;
    rdfs:domain :NetworkElement ;
    rdfs:range :NetworkElement .

:connectionDirection
    a owl:FunctionalProperty, owl:ObjectProperty ;
    rdfs:domain :NetworkElement ;
    rdfs:range layer:ConnectionDirection ;
    rdfs:subPropertyOf layer:feature .

:gmplsConnectedTo
    a owl:ObjectProperty, owl:SymmetricProperty, owl:TransitiveProperty ;
    rdfs:subPropertyOf :connectedTo .

:hasDN
    a owl:DatatypeProperty ;
    rdfs:range xsd:string .

:hasEmail
    a owl:DatatypeProperty ;
    rdfs:range xsd:string .

:hasGUID
    a owl:DatatypeProperty ;
    rdfs:range rdf:PlainLiteral .

:hasInputInterface
    a owl:ObjectProperty ;
    rdfs:subPropertyOf :hasInterface ;
    owl:inverseOf :inputInterfaceOf .

:hasInterface
    a owl:ObjectProperty, owl:TransitiveProperty ;
    rdfs:domain :NetworkElement ;
    rdfs:range :Interface .

:hasLogin
    a owl:DatatypeProperty .

:hasName
    a owl:DatatypeProperty ;
    rdfs:range xsd:string .

:hasOutputInterface
    a owl:ObjectProperty ;
    rdfs:subPropertyOf :hasInterface ;
    owl:inverseOf :outputInterfaceOf .

:hasSwitchMatrix
    a owl:ObjectProperty ;
    rdfs:domain :Device ;
    rdfs:range :SwitchMatrix .

:hasURL
    a owl:DatatypeProperty .

:hasURN
    a owl:DatatypeProperty .

:hostInterfaceName
    a owl:DatatypeProperty ;
    rdfs:domain :Interface ;
    rdfs:range rdfs:Literal .

:hostName
    a owl:DatatypeProperty ;
    rdfs:range xsd:string .

:inputInterfaceOf
    a owl:ObjectProperty ;
    rdfs:subPropertyOf :interfaceOf .

:interfaceOf
    a owl:ObjectProperty, owl:TransitiveProperty ;
    rdfs:domain :Interface ;
    rdfs:range :NetworkElement ;
    owl:inverseOf :hasInterface .

:linkConnection
    a owl:Class ;
    rdfs:subClassOf collections:ListItem, :Connection .

:linkTo
    a owl:IrreflexiveProperty, owl:ObjectProperty ;
    rdfs:domain :NetworkTransportElement ;
    rdfs:range :NetworkTransportElement ;
    rdfs:subPropertyOf :connectedTo .

:managementIP
    a owl:DatatypeProperty ;
    rdfs:range xsd:string .

:managementPort
    a owl:DatatypeProperty ;
    rdfs:range xsd:unsignedShort .

:numHop
    a owl:DatatypeProperty ;
    rdfs:domain :NetworkTransportElement ;
    rdfs:range xsd:int .

:outputInterfaceOf
    a owl:ObjectProperty ;
    rdfs:subPropertyOf :interfaceOf .

:proxiedPort
    a owl:DatatypeProperty .

:splittable
    a owl:DatatypeProperty, owl:FunctionalProperty ;
    rdfs:comment "Declare a NetworkElement (connection or server cloud or other) splittable. Default is 'false' - connections and clouds are not splittable. Must be explicitly declared as 'true'." ;
    rdfs:domain :NetworkElement ;
    rdfs:range xsd:boolean .

:switchedTo
    a owl:IrreflexiveProperty, owl:ObjectProperty, owl:SymmetricProperty ;
    rdfs:domain :NetworkTransportElement ;
    rdfs:range :NetworkTransportElement ;
    rdfs:subPropertyOf :connectedTo .

owl:Thing
    a owl:Class .

