@base <http://timbus.teco.edu/ontologies/VPlan.owl> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix : <#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<DIO.owl#Artifact>
    a owl:Class ;
    owl:equivalentClass :VPlanData .

<DIO.owl#BusinessProcess>
    a owl:Class ;
    owl:equivalentClass :VPlanProcess .

<DIO.owl#realizes>
    a owl:ObjectProperty .

<>
    a owl:Ontology ;
    owl:imports <DIO.owl> .

:Author
    a owl:Class .

:AuxiliaryResource
    a owl:Class ;
    rdfs:subClassOf [
        a owl:Restriction ;
        owl:onProperty :hasTextDescription ;
        owl:someValuesFrom xsd:string
    ], [
        a owl:Restriction ;
        owl:onProperty :isLocatedAt ;
        owl:someValuesFrom xsd:string
    ] .

:CaptureProcess
    a owl:Class ;
    rdfs:subClassOf :VPlanProcess, [
        a owl:Restriction ;
        owl:onProperty :hasAuxiliaryResource ;
        owl:someValuesFrom :AuxiliaryResource
    ], [
        a owl:Restriction ;
        owl:onProperty :hasArtifact ;
        owl:someValuesFrom <DIO.owl#Artifact>
    ], [
        a owl:Restriction ;
        owl:onProperty :hasInstance ;
        owl:someValuesFrom :CaptureProcessInstance
    ] .

:CaptureProcessData
    a owl:Class ;
    rdfs:subClassOf :VPlanData, [
        a owl:Restriction ;
        owl:onProperty <DIO.owl#realizes> ;
        owl:someValuesFrom <DIO.owl#Artifact>
    ] .

:CaptureProcessInstance
    a owl:Class ;
    rdfs:subClassOf :VPlanProcessInstance, [
        a owl:Restriction ;
        owl:onProperty :hasInstanceData ;
        owl:someValuesFrom :CaptureProcessData
    ] .

:DeterminismIssue
    a owl:Class ;
    rdfs:subClassOf [
        a owl:Restriction ;
        owl:onProperty :hasTextDescription ;
        owl:someValuesFrom xsd:string
    ], [
        a owl:Restriction ;
        owl:onProperty :isSolvedBy ;
        owl:someValuesFrom :DeterministicTransformationProcess
    ] .

:DeterministicTransformationData
    a owl:Class ;
    rdfs:subClassOf :VPlanData, [
        a owl:Restriction ;
        owl:onProperty <DIO.owl#realizes> ;
        owl:someValuesFrom <DIO.owl#Artifact>
    ] .

:DeterministicTransformationInstance
    a owl:Class ;
    rdfs:subClassOf :VPlanProcessInstance, [
        a owl:Restriction ;
        owl:onProperty :appliesTo ;
        owl:someValuesFrom :RedeploymentScenarioInstance
    ], [
        a owl:Restriction ;
        owl:onProperty :hasInstanceData ;
        owl:someValuesFrom :DeterministicTransformationData
    ] .

:DeterministicTransformationProcess
    a owl:Class ;
    rdfs:subClassOf :VPlanProcess, [
        a owl:Restriction ;
        owl:onProperty :hasInstance ;
        owl:someValuesFrom :DeterministicTransformationInstance
    ], [
        a owl:Restriction ;
        owl:onProperty :hasArtifact ;
        owl:someValuesFrom <DIO.owl#Artifact>
    ] .

:Equal
    a owl:NamedIndividual .

:FunctionalMetric
    a owl:Class ;
    rdfs:subClassOf :Metric .

:Higher
    a owl:NamedIndividual .

:HigherOrEqual
    a owl:NamedIndividual .

:Lower
    a owl:NamedIndividual .

:LowerOrEqual
    a owl:NamedIndividual .

:Metric
    a owl:Class ;
    rdfs:subClassOf [
        a owl:Restriction ;
        owl:onProperty :hasMetricTargetValue ;
        owl:someValuesFrom :MetricTargetValue
    ], [
        a owl:Restriction ;
        owl:onProperty :isUsedForMetricComputation ;
        owl:someValuesFrom <DIO.owl#Artifact>
    ], [
        a owl:Restriction ;
        owl:onClass :MetricTargetOperator ;
        owl:onProperty :hasMetricTargetOperator ;
        owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger
    ], [
        a owl:Restriction ;
        owl:onProperty :hasCaptureProcess ;
        owl:someValuesFrom :CaptureProcess
    ], [
        a owl:Restriction ;
        owl:onProperty :hasCaptureProcessInstance ;
        owl:someValuesFrom :CaptureProcessInstance
    ], [
        a owl:Restriction ;
        owl:onProperty :hasTextDescription ;
        owl:someValuesFrom xsd:string
    ] .

:MetricTargetOperator
    a owl:Class ;
    owl:equivalentClass [
        a owl:Class ;
        owl:oneOf (:HigherOrEqual
            :Higher
            :LowerOrEqual
            :Equal
            :Lower
        )
    ] .

:MetricTargetValue
    a owl:Class ;
    rdfs:subClassOf [
        a owl:Restriction ;
        owl:onProperty :isLocatedAt ;
        owl:someValuesFrom xsd:string
    ], [
        a owl:Restriction ;
        owl:onProperty :hasTextDescription ;
        owl:someValuesFrom xsd:string
    ] .

:NonFunctionalMetric
    a owl:Class ;
    rdfs:subClassOf :Metric .

:PreservedProcess
    a owl:Class ;
    rdfs:subClassOf :VPlanProcess, [
        a owl:Restriction ;
        owl:onProperty :hasRedeploymentScenario ;
        owl:someValuesFrom :RedeploymentScenario
    ], [
        a owl:Restriction ;
        owl:onProperty :hasAuxiliaryResource ;
        owl:someValuesFrom :AuxiliaryResource
    ], [
        a owl:Restriction ;
        owl:onProperty :hasDeterminismIssue ;
        owl:someValuesFrom :DeterminismIssue
    ] .

:RedeploymentScenario
    a owl:Class ;
    rdfs:subClassOf :VPlanProcess, [
        a owl:Restriction ;
        owl:onProperty :appliesTo ;
        owl:someValuesFrom :CaptureProcess
    ], [
        a owl:Restriction ;
        owl:onProperty :hasInstance ;
        owl:someValuesFrom :RedeploymentScenarioInstance
    ], [
        a owl:Restriction ;
        owl:onProperty :hasArtifact ;
        owl:someValuesFrom <DIO.owl#Artifact>
    ] .

:RedeploymentScenarioData
    a owl:Class ;
    rdfs:subClassOf :VPlanData, [
        a owl:Restriction ;
        owl:onProperty <DIO.owl#realizes> ;
        owl:someValuesFrom <DIO.owl#Artifact>
    ] .

:RedeploymentScenarioInstance
    a owl:Class ;
    rdfs:subClassOf :VPlanProcessInstance, [
        a owl:Restriction ;
        owl:onProperty :appliesTo ;
        owl:someValuesFrom :CaptureProcessInstance
    ], [
        a owl:Restriction ;
        owl:onProperty :hasInstanceData ;
        owl:someValuesFrom :RedeploymentScenarioData
    ] .

:SignificantProperty
    a owl:Class ;
    rdfs:subClassOf [
        a owl:Restriction ;
        owl:minQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
        owl:onClass :Metric ;
        owl:onProperty :isMeasuredBy
    ], [
        a owl:Restriction ;
        owl:onProperty :appliesToScenario ;
        owl:someValuesFrom :RedeploymentScenario
    ], [
        a owl:Restriction ;
        owl:onProperty :hasTextDescription ;
        owl:someValuesFrom xsd:string
    ] .

:VPlan
    a owl:Class ;
    rdfs:subClassOf [
        a owl:Restriction ;
        owl:onProperty :hasAuthor ;
        owl:someValuesFrom :Author
    ], [
        a owl:Restriction ;
        owl:onProperty :measures ;
        owl:someValuesFrom :SignificantProperty
    ], [
        a owl:Restriction ;
        owl:onProperty :verifies ;
        owl:someValuesFrom :PreservedProcess
    ] .

:VPlanData
    a owl:Class ;
    rdfs:subClassOf [
        a owl:Restriction ;
        owl:onProperty :isInlineData ;
        owl:someValuesFrom xsd:boolean
    ], [
        a owl:Restriction ;
        owl:onProperty :isLocatedAt ;
        owl:someValuesFrom xsd:string
    ] .

:VPlanProcess
    a owl:Class ;
    rdfs:subClassOf [
        a owl:Restriction ;
        owl:onProperty :hasTextDescription ;
        owl:someValuesFrom xsd:string
    ] .

:VPlanProcessInstance
    a owl:Class ;
    rdfs:subClassOf [
        a owl:Restriction ;
        owl:onProperty :hasTextDescription ;
        owl:someValuesFrom xsd:string
    ] .

:appliesTo
    a owl:ObjectProperty .

:appliesToScenario
    a owl:ObjectProperty .

:existsInScenario
    a owl:ObjectProperty .

:hasArtifact
    a owl:ObjectProperty .

:hasAuthor
    a owl:ObjectProperty .

:hasAuxiliaryResource
    a owl:ObjectProperty .

:hasCaptureProcess
    a owl:ObjectProperty .

:hasCaptureProcessInstance
    a owl:ObjectProperty .

:hasDeterminismIssue
    a owl:ObjectProperty .

:hasInstance
    a owl:ObjectProperty .

:hasInstanceData
    a owl:ObjectProperty .

:hasMeasurementPoint
    a owl:ObjectProperty .

:hasMetricComparison
    a owl:ObjectProperty .

:hasMetricTargetOperator
    a owl:ObjectProperty .

:hasMetricTargetValue
    a owl:ObjectProperty .

:hasProcessElement
    a owl:ObjectProperty .

:hasRedeploymentScenario
    a owl:ObjectProperty .

:hasTextDescription
    a owl:DatatypeProperty .

:isAuxiliaryResourceFor
    a owl:ObjectProperty ;
    rdfs:domain :AuxiliaryResource ;
    rdfs:subPropertyOf owl:topObjectProperty ;
    owl:inverseOf :hasAuxiliaryResource .

:isCaptureProcessFor
    a owl:ObjectProperty ;
    rdfs:domain :CaptureProcess ;
    rdfs:range :Metric ;
    rdfs:subPropertyOf owl:topObjectProperty ;
    owl:inverseOf :hasCaptureProcess .

:isInlineData
    a owl:DatatypeProperty .

:isLocatedAt
    a owl:DatatypeProperty .

:isMeasuredBy
    a owl:ObjectProperty .

:isSolvedBy
    a owl:ObjectProperty .

:isUsedBy
    a owl:ObjectProperty ;
    rdfs:domain :Metric ;
    rdfs:range :SignificantProperty ;
    owl:inverseOf :isMeasuredBy .

:isUsedForMetricComputation
    a owl:ObjectProperty .

:measures
    a owl:ObjectProperty .

:verifies
    a owl:ObjectProperty .

