PREFIX metadatareferencemodel: <https://glaciation-project.eu/MetadataReferenceModel>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>

<https://glaciation-project.eu/MetadataReferenceModel#MeasurementProperty> a rdfs:Class ;
  rdfs:label "MeasurementProperty" ;
  rdfs:comment "Represents a MeasurementProperty, e.g., allocated CPU, energy, etc." ;
  rdfs:subClassOf <https://glaciation-project.eu/MetadataReferenceModel#Class> .

<https://glaciation-project.eu/MetadataReferenceModel#hasStatus> a rdf:Property ;
  rdfs:label "hasStatus" ;
  rdfs:comment "A relationship between any Class and its Status." ;
  rdfs:domain <https://glaciation-project.eu/MetadataReferenceModel#Class> ;
  rdfs:range <https://glaciation-project.eu/MetadataReferenceModel#Status> .

<https://glaciation-project.eu/MetadataReferenceModel#hasConfiguration> a rdf:Property ;
  rdfs:label "hasConfiguration" ;
  rdfs:comment "The Configuration of any instance of a Class, e.g., Task, Resource, etc." ;
  rdfs:domain <https://glaciation-project.eu/MetadataReferenceModel#Class> ;
  rdfs:range xsd:string .

<https://glaciation-project.eu/MetadataReferenceModel#hasDescription> a rdf:Property ;
  rdfs:label "hasDescription" ;
  rdfs:comment "The Description of any entity." ;
  rdfs:domain <https://glaciation-project.eu/MetadataReferenceModel#Class> ;
  rdfs:range xsd:string .

<https://glaciation-project.eu/MetadataReferenceModel#hasID> a rdf:Property ;
  rdfs:label "hasID" ;
  rdfs:comment "The ID of any entity." ;
  rdfs:domain <https://glaciation-project.eu/MetadataReferenceModel#Class> ;
  rdfs:range xsd:string .

<https://glaciation-project.eu/MetadataReferenceModel#AggregatedMeasurement> a rdfs:Class ;
  rdfs:label "AggregatedMeasurement" ;
  rdfs:comment "Represents any AggregatedMeasurement, by using an AggregatedFunction, a time interval and time step resolution." ;
  rdfs:subClassOf <https://glaciation-project.eu/MetadataReferenceModel#Measurement> .

<https://glaciation-project.eu/MetadataReferenceModel#hasAggregatedFuntion> a rdf:Property ;
  rdfs:label "hasAggregatedFuntion" ;
  rdfs:comment "The AggregatedFunction of an AggregatedMeasurement." ;
  rdfs:domain <https://glaciation-project.eu/MetadataReferenceModel#AggregatedMeasurement> ;
  rdfs:range xsd:string .

<https://glaciation-project.eu/MetadataReferenceModel#hasValue> a rdf:Property ;
  rdfs:label "hasValue" ;
  rdfs:comment "The Value of a Measurement." ;
  rdfs:domain <https://glaciation-project.eu/MetadataReferenceModel#Measurement> ;
  rdfs:range xsd:string .

<https://glaciation-project.eu/MetadataReferenceModel#startingInterval> a rdf:Property ;
  rdfs:label "startingInterval" ;
  rdfs:comment "The starting interval time of an AggregatedMeasurement." ;
  rdfs:domain <https://glaciation-project.eu/MetadataReferenceModel#AggregatedMeasurement> ;
  rdfs:range xsd:dateTimeStamp .

<https://glaciation-project.eu/MetadataReferenceModel#relatesToMeasurementProperty> a rdf:Property ;
  rdfs:label "relatesToMeasurementProperty" ;
  rdfs:comment "For recording the MeasurementProperty of each Measurement." ;
  rdfs:domain <https://glaciation-project.eu/MetadataReferenceModel#Measurement> ;
  rdfs:range <https://glaciation-project.eu/MetadataReferenceModel#MeasurementProperty> .

<https://glaciation-project.eu/MetadataReferenceModel#measuredIn> a rdf:Property ;
  rdfs:label "measuredIn" ;
  rdfs:comment "For recording the MeasurimentUnit of each Measurement." ;
  rdfs:domain <https://glaciation-project.eu/MetadataReferenceModel#Measurement> ;
  rdfs:range <https://glaciation-project.eu/MetadataReferenceModel#MeasurementUnit> .

<https://glaciation-project.eu/MetadataReferenceModel#endingInterval> a rdf:Property ;
  rdfs:label "endingInterval" ;
  rdfs:comment "The ending interval time of an AggregatedMeasurement." ;
  rdfs:domain <https://glaciation-project.eu/MetadataReferenceModel#AggregatedMeasurement> ;
  rdfs:range xsd:dateTimeStamp .

<https://glaciation-project.eu/MetadataReferenceModel#hasTimestamp> a rdf:Property ;
  rdfs:label "hasTimestamp" ;
  rdfs:comment "The date and time of a Measurement." ;
  rdfs:domain <https://glaciation-project.eu/MetadataReferenceModel#Measurement> ;
  rdfs:range xsd:dateTimeStamp .

<https://glaciation-project.eu/MetadataReferenceModel#relatesToConstraint> a rdf:Property ;
  rdfs:label "relatesToConstraint" ;
  rdfs:comment "For keeping information about the Constraint that each Measurement relates to." ;
  rdfs:domain <https://glaciation-project.eu/MetadataReferenceModel#Measurement> ;
  rdfs:range <https://glaciation-project.eu/MetadataReferenceModel#Constraint> .

<https://glaciation-project.eu/MetadataReferenceModel#timeStepResolution> a rdf:Property ;
  rdfs:label "timeStepResolution" ;
  rdfs:comment "The time step resolution of an AggregatedMeasurement." ;
  rdfs:domain <https://glaciation-project.eu/MetadataReferenceModel#AggregatedMeasurement> ;
  rdfs:range xsd:string .

<https://glaciation-project.eu/MetadataReferenceModel#NonWorkProducingResource> a rdfs:Class ;
  rdfs:label "NonWorkProducingResource" ;
  rdfs:comment "It represents any NonWorkProducingResource (e.g., dataset)." ;
  rdfs:subClassOf <https://glaciation-project.eu/MetadataReferenceModel#Resource> .

<https://glaciation-project.eu/MetadataReferenceModel#hasResourceMeasurement> a rdf:Property ;
  rdfs:label "hasResourceMeasurement" ;
  rdfs:comment "A relationship between a Resource and a Measurement." ;
  rdfs:domain <https://glaciation-project.eu/MetadataReferenceModel#Resource> ;
  rdfs:range <https://glaciation-project.eu/MetadataReferenceModel#Measurement> .

<https://glaciation-project.eu/MetadataReferenceModel#hasSubResource> a rdf:Property ;
  rdfs:label "hasSubResource" ;
  rdfs:comment "Relationships for recording the SubResource(s) of each Resource (e.g, the hardware of a node)." ;
  rdfs:domain <https://glaciation-project.eu/MetadataReferenceModel#Resource> ;
  rdfs:range <https://glaciation-project.eu/MetadataReferenceModel#Resource> .

<https://glaciation-project.eu/MetadataReferenceModel#Scheduler> a rdfs:Class ;
  rdfs:label "Scheduler" ;
  rdfs:comment "Responsible for Scheduling a SubmittedTask and for managing the Resources." ;
  rdfs:subClassOf <https://glaciation-project.eu/MetadataReferenceModel#Class> .

<https://glaciation-project.eu/MetadataReferenceModel#reschedules> a rdf:Property ;
  rdfs:label "reschedules" ;
  rdfs:comment "A relationship between a Scheduler and an AssignedTask that concerns rescheduling." ;
  rdfs:domain <https://glaciation-project.eu/MetadataReferenceModel#Scheduler> ;
  rdfs:range <https://glaciation-project.eu/MetadataReferenceModel#AssignedTask> .

<https://glaciation-project.eu/MetadataReferenceModel#assigns> a rdf:Property ;
  rdfs:label "assigns" ;
  rdfs:comment "A relationship between a Scheduler and an AssignedTask." ;
  rdfs:domain <https://glaciation-project.eu/MetadataReferenceModel#Scheduler> ;
  rdfs:range <https://glaciation-project.eu/MetadataReferenceModel#AssignedTask> .

<https://glaciation-project.eu/MetadataReferenceModel#manages> a rdf:Property ;
  rdfs:label "manages" ;
  rdfs:comment "A relationship between a Scheduler and a Resource." ;
  rdfs:domain <https://glaciation-project.eu/MetadataReferenceModel#Scheduler> ;
  rdfs:range <https://glaciation-project.eu/MetadataReferenceModel#Resource> .

<https://glaciation-project.eu/MetadataReferenceModel#SoftConstraint> a rdfs:Class ;
  rdfs:label "SoftConstraint" ;
  rdfs:comment "For representing the SoftConstraints of a Task." ;
  rdfs:subClassOf <https://glaciation-project.eu/MetadataReferenceModel#Constraint> .

<https://glaciation-project.eu/MetadataReferenceModel#hasAspect> a rdf:Property ;
  rdfs:label "hasAspect" ;
  rdfs:comment "For keeping information about the Aspect of each Constraint, e.g., time, power consumption." ;
  rdfs:domain <https://glaciation-project.eu/MetadataReferenceModel#Constraint> ;
  rdfs:range <https://glaciation-project.eu/MetadataReferenceModel#Aspect> .

<https://glaciation-project.eu/MetadataReferenceModel#Constraint> a rdfs:Class ;
  rdfs:label "Constraint" ;
  rdfs:comment "For representing the Constraint(s) of a Task." ;
  rdfs:subClassOf <https://glaciation-project.eu/MetadataReferenceModel#Class> .

<https://glaciation-project.eu/MetadataReferenceModel#SubmittedTask> a rdfs:Class ;
  rdfs:label "SubmittedTask" ;
  rdfs:comment "A Submitted Task that will be processed by a Scheduler." ;
  rdfs:subClassOf <https://glaciation-project.eu/MetadataReferenceModel#Task> .

<https://glaciation-project.eu/MetadataReferenceModel#hasComposition> a rdf:Property ;
  rdfs:label "hasComposition" ;
  rdfs:comment "For keeping information about the Composition of the SoftConstraints of a Task." ;
  rdfs:domain <https://glaciation-project.eu/MetadataReferenceModel#Task> ;
  rdfs:range <https://glaciation-project.eu/MetadataReferenceModel#SoftConstraintComposition> .

<https://glaciation-project.eu/MetadataReferenceModel#hasTaskPredictedMeasurement> a rdf:Property ;
  rdfs:label "hasTaskPredictedMeasurement" ;
  rdfs:comment "A relationship for recording the PredictedMeasurements of a Task." ;
  rdfs:domain <https://glaciation-project.eu/MetadataReferenceModel#Task> ;
  rdfs:range <https://glaciation-project.eu/MetadataReferenceModel#Measurement> ;
  rdfs:subPropertyOf <https://glaciation-project.eu/MetadataReferenceModel#hasTaskMeasurement> .

<https://glaciation-project.eu/MetadataReferenceModel#hasConstraint> a rdf:Property ;
  rdfs:label "hasConstraint" ;
  rdfs:comment "A relationship for recording all the Constraints of a Task." ;
  rdfs:domain <https://glaciation-project.eu/MetadataReferenceModel#Task> ;
  rdfs:range <https://glaciation-project.eu/MetadataReferenceModel#Constraint> .

<https://glaciation-project.eu/MetadataReferenceModel#hasTaskRealizedMeasurement> a rdf:Property ;
  rdfs:label "hasTaskRealizedMeasurement" ;
  rdfs:comment "A relationship for recording the RealizedMeasurements (actual measurements) of a Task." ;
  rdfs:domain <https://glaciation-project.eu/MetadataReferenceModel#Task> ;
  rdfs:range <https://glaciation-project.eu/MetadataReferenceModel#Measurement> ;
  rdfs:subPropertyOf <https://glaciation-project.eu/MetadataReferenceModel#hasTaskMeasurement> .

<https://glaciation-project.eu/MetadataReferenceModel#scheduledBy> a rdf:Property ;
  rdfs:label "scheduledBy" ;
  rdfs:comment "A relationship between a SubmittedTask and a Scheduler." ;
  rdfs:domain <https://glaciation-project.eu/MetadataReferenceModel#SubmittedTask> ;
  rdfs:range <https://glaciation-project.eu/MetadataReferenceModel#Scheduler> .

<https://glaciation-project.eu/MetadataReferenceModel#hasTaskMeasurement> a rdf:Property ;
  rdfs:label "hasTaskMeasurement" ;
  rdfs:comment "A relationship between a Task and a Measurement." ;
  rdfs:domain <https://glaciation-project.eu/MetadataReferenceModel#Task> ;
  rdfs:range <https://glaciation-project.eu/MetadataReferenceModel#Measurement> .

<https://glaciation-project.eu/MetadataReferenceModel#ElectricalGrid> a rdfs:Class ;
  rdfs:label "Electrical Grid" ;
  rdfs:comment "It represents an electrical grid" ;
  rdfs:subClassOf <https://glaciation-project.eu/MetadataReferenceModel#EnergyResource> .

<https://glaciation-project.eu/MetadataReferenceModel#consumesEnergyFrom> a rdf:Property ;
  rdfs:label "consumesEnergyFrom" ;
  rdfs:comment "The grid where a work producing resource consumes energy from" ;
  rdfs:domain <https://glaciation-project.eu/MetadataReferenceModel#WorkProducingResource> ;
  rdfs:range <https://glaciation-project.eu/MetadataReferenceModel#ElectricalGrid> .

<https://glaciation-project.eu/MetadataReferenceModel#isLocatedIn> a rdf:Property ;
  rdfs:label "isLocatedIn" ;
  rdfs:comment "The location of a Work Producing Resource" ;
  rdfs:domain <https://glaciation-project.eu/MetadataReferenceModel#WorkProducingResource> ;
  rdfs:range <https://glaciation-project.eu/MetadataReferenceModel#Site> .

<https://glaciation-project.eu/MetadataReferenceModel#MeasuringResource> a rdfs:Class ;
  rdfs:label "MeasuringResource" ;
  rdfs:comment "It represents any WorkProducingResource that can perform Measurements." ;
  rdfs:subClassOf <https://glaciation-project.eu/MetadataReferenceModel#Class> , <https://glaciation-project.eu/MetadataReferenceModel#WorkProducingResource> .

<https://glaciation-project.eu/MetadataReferenceModel#makesMeasurement> a rdf:Property ;
  rdfs:label "makesMeasurement" ;
  rdfs:comment "A relationship between a MeasuringResource and a Measurement." ;
  rdfs:domain <https://glaciation-project.eu/MetadataReferenceModel#MeasuringResource> ;
  rdfs:range <https://glaciation-project.eu/MetadataReferenceModel#Measurement> .

<https://glaciation-project.eu/MetadataReferenceModel#SoftConstraintComposition> a rdfs:Class ;
  rdfs:label "SoftConstraintComposition" ;
  rdfs:comment "It describes the composition of SoftConstraints, e.g., the order of soft constraings according to a given preference priority, Pareto, Pareto optimal, etc." ;
  rdfs:subClassOf <https://glaciation-project.eu/MetadataReferenceModel#Class> .

<https://glaciation-project.eu/MetadataReferenceModel#composedBy> a rdf:Property ;
  rdfs:label "composedBy" ;
  rdfs:comment "For keeping information about the SoftConstraints that are included in a Composition." ;
  rdfs:domain <https://glaciation-project.eu/MetadataReferenceModel#SoftConstraintComposition> ;
  rdfs:range <https://glaciation-project.eu/MetadataReferenceModel#SoftConstraint> .

<https://glaciation-project.eu/MetadataReferenceModel#EnergyResource> a rdfs:Class ;
  rdfs:label "Energy Resource" ;
  rdfs:comment "It represents an energy resource" ;
  rdfs:subClassOf <https://glaciation-project.eu/MetadataReferenceModel#WorkProducingResource> .

<https://glaciation-project.eu/MetadataReferenceModel#Task> a rdfs:Class ;
  rdfs:label "Task" ;
  rdfs:comment "It describes any Task that has Constraints and a Status." ;
  rdfs:subClassOf <https://glaciation-project.eu/MetadataReferenceModel#Class> .

<https://glaciation-project.eu/MetadataReferenceModel#Status> a rdfs:Class ;
  rdfs:label "Status" ;
  rdfs:comment "Represents information about a specific Status over a given time interval." ;
  rdfs:subClassOf <https://glaciation-project.eu/MetadataReferenceModel#Class> .

<https://glaciation-project.eu/MetadataReferenceModel#startTime> a rdf:Property ;
  rdfs:label "startTime" ;
  rdfs:comment "The date and time of a Status." ;
  rdfs:domain <https://glaciation-project.eu/MetadataReferenceModel#Status> ;
  rdfs:range xsd:dateTimeStamp .

<https://glaciation-project.eu/MetadataReferenceModel#statusCode> a rdf:Property ;
  rdfs:label "statusCode" ;
  rdfs:comment "The status code of a Status." ;
  rdfs:domain <https://glaciation-project.eu/MetadataReferenceModel#Status> ;
  rdfs:range xsd:integer .

<https://glaciation-project.eu/MetadataReferenceModel#endTime> a rdf:Property ;
  rdfs:label "endTime" ;
  rdfs:comment "The end time of a Status of any Class." ;
  rdfs:domain <https://glaciation-project.eu/MetadataReferenceModel#Status> ;
  rdfs:range xsd:dateTimeStamp .

<https://glaciation-project.eu/MetadataReferenceModel#Monitor> a rdfs:Class ;
  rdfs:label "Monitor" ;
  rdfs:comment "Represents an entity that monitors an AssignedTask." ;
  rdfs:subClassOf <https://glaciation-project.eu/MetadataReferenceModel#Class> .

<https://glaciation-project.eu/MetadataReferenceModel#triggersReschedule> a rdf:Property ;
  rdfs:label "triggersReschedule" ;
  rdfs:comment "A triggered event relationship about Rescheduling from a Monitor." ;
  rdfs:domain <https://glaciation-project.eu/MetadataReferenceModel#Monitor> ;
  rdfs:range <https://glaciation-project.eu/MetadataReferenceModel#Scheduler> .

<https://glaciation-project.eu/MetadataReferenceModel#monitors> a rdf:Property ;
  rdfs:label "monitors" ;
  rdfs:comment "For recording which Monitor tracks an AssignedTask." ;
  rdfs:domain <https://glaciation-project.eu/MetadataReferenceModel#Monitor> ;
  rdfs:range <https://glaciation-project.eu/MetadataReferenceModel#AssignedTask> .

<https://glaciation-project.eu/MetadataReferenceModel#AssignedTask> a rdfs:Class ;
  rdfs:label "AssignedTask" ;
  rdfs:comment "An AssignedTask that will be performed by using some Resources and will be based on some Constraints." ;
  rdfs:subClassOf <https://glaciation-project.eu/MetadataReferenceModel#Task> .

<https://glaciation-project.eu/MetadataReferenceModel#produces> a rdf:Property ;
  rdfs:label "produces" ;
  rdfs:comment "For keeping information about the production Resource, e.g., the output, of an AssignedTask." ;
  rdfs:domain <https://glaciation-project.eu/MetadataReferenceModel#AssignedTask> ;
  rdfs:range <https://glaciation-project.eu/MetadataReferenceModel#Resource> .

<https://glaciation-project.eu/MetadataReferenceModel#consumes> a rdf:Property ;
  rdfs:label "consumes" ;
  rdfs:comment "A property for recording the Resource(s) of each AssignedTask." ;
  rdfs:domain <https://glaciation-project.eu/MetadataReferenceModel#AssignedTask> ;
  rdfs:range <https://glaciation-project.eu/MetadataReferenceModel#Resource> .

<https://glaciation-project.eu/MetadataReferenceModel#Aspect> a rdfs:Class ;
  rdfs:label "Aspect" ;
  rdfs:comment "It describes the Aspect of a Contstraint, e.g., time, power consumption." ;
  rdfs:subClassOf <https://glaciation-project.eu/MetadataReferenceModel#Class> .

<https://glaciation-project.eu/MetadataReferenceModel#MeasurementUnit> a rdfs:Class ;
  rdfs:label "MeasurementUnit" ;
  rdfs:comment "Represents a MeasurementUnit, e.g., Kwh." ;
  rdfs:subClassOf <https://glaciation-project.eu/MetadataReferenceModel#Class> .

<https://glaciation-project.eu/MetadataReferenceModel#Resource> a rdfs:Class ;
  rdfs:label "Resource" ;
  rdfs:comment "It represents any Resource." ;
  rdfs:subClassOf <https://glaciation-project.eu/MetadataReferenceModel#Class> .

<https://glaciation-project.eu/MetadataReferenceModel#HardConstraint> a rdfs:Class ;
  rdfs:label "HardConstraint" ;
  rdfs:comment "For representing the HardConstraints of a Task." ;
  rdfs:subClassOf <https://glaciation-project.eu/MetadataReferenceModel#Constraint> .

<https://glaciation-project.eu/MetadataReferenceModel#WorkProducingResource> a rdfs:Class ;
  rdfs:label "WorkProducingResource" ;
  rdfs:comment "It represents any WorkProducingResource, e.g., a node, a CPU, etc." ;
  rdfs:subClassOf <https://glaciation-project.eu/MetadataReferenceModel#Resource> .

<https://glaciation-project.eu/MetadataReferenceModel#Class> a rdfs:Class ;
  rdfs:label "Class" ;
  rdfs:comment "A generic Class for the GLACIATION project" .

<https://glaciation-project.eu/MetadataReferenceModel#Measurement> a rdfs:Class ;
  rdfs:label "Measurement" ;
  rdfs:comment "Represents any Measurement, e.g., for energy." ;
  rdfs:subClassOf <https://glaciation-project.eu/MetadataReferenceModel#Class> .

<https://glaciation-project.eu/MetadataReferenceModel#Site> a rdfs:Class ;
  rdfs:label "Site" ;
  rdfs:comment "It represents any Site, e.g., a location, an island, etc." ;
  rdfs:subClassOf <https://glaciation-project.eu/MetadataReferenceModel#Class> .

<https://glaciation-project.eu/MetadataReferenceModel#EnergyPowerGenerationResource> a rdfs:Class ;
  rdfs:label "Energy Power Generation Resource" ;
  rdfs:comment "It represents an energy resource that generates power" ;
  rdfs:subClassOf <https://glaciation-project.eu/MetadataReferenceModel#EnergyResource> .
