/******************************************************************************* * Copyright 2015 UPM - Universidad Politécnica de Madrid * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. ******************************************************************************/ package org.universAAL.ontology.hvac; import org.universAAL.middleware.owl.DataRepOntology; import org.universAAL.middleware.owl.ManagedIndividual; import org.universAAL.middleware.owl.MergedRestriction; import org.universAAL.middleware.owl.OntClassInfoSetup; import org.universAAL.middleware.owl.Ontology; import org.universAAL.middleware.owl.supply.LevelRating; import org.universAAL.middleware.rdf.Resource; import org.universAAL.middleware.rdf.TypeMapper; import org.universAAL.middleware.service.owl.ServiceBusOntology; import org.universAAL.ontology.HvacFactory; import org.universAAL.ontology.device.DeviceOntology; import org.universAAL.ontology.device.StatusValue; import org.universAAL.ontology.location.LocationOntology; import org.universAAL.ontology.phThing.Device; import org.universAAL.ontology.unit.MeasurableDimension; import org.universAAL.ontology.unit.Unit; import org.universAAL.ontology.unit.UnitOntology; /** * HVAC (Heating, Ventilation and Air Conditioning Ontology. * * @author Ricardo */ public final class HvacOntology extends Ontology { private static HvacFactory factory = new HvacFactory(); public static final String NAMESPACE = "http://ontology.universAAL.org/Hvac.owl#"; public HvacOntology() { super(NAMESPACE); } public void create() { Resource r = getInfo(); r.setResourceComment("The Collection of HVAC Concepts"); r.setResourceLabel("Hvac"); addImport(DataRepOntology.NAMESPACE); addImport(ServiceBusOntology.NAMESPACE); addImport(LocationOntology.NAMESPACE); addImport(DeviceOntology.NAMESPACE); addImport(UnitOntology.NAMESPACE); // //////////////////////////////////////////////////////////////////////////// // ******* Declaration of enumeration classes of the ontology ******* // // /////////////////////////////////////////////////////////////////////////// OntClassInfoSetup oci_Air_Conditioning_Mode = createNewAbstractOntClassInfo(Air_Conditioning_Mode.MY_URI); OntClassInfoSetup oci_Heating_Mode = createNewAbstractOntClassInfo(Heating_Mode.MY_URI); OntClassInfoSetup oci_Ventilation_Mode = createNewAbstractOntClassInfo(Ventilation_Mode.MY_URI); OntClassInfoSetup oci_Hvac = createNewAbstractOntClassInfo(Hvac.MY_URI); OntClassInfoSetup oci_Mode = createNewAbstractOntClassInfo(Mode.MY_URI); OntClassInfoSetup oci_Target_Temperature = createNewAbstractOntClassInfo(Target_Temperature.MY_URI); // //////////////////////////////////////////////////////////////////// // ******* Declaration of regular classes of the ontology ******* // // //////////////////////////////////////////////////////////////////// OntClassInfoSetup oci_Air_Conditioning = createNewOntClassInfo( Air_Conditioning.MY_URI, factory, 0); OntClassInfoSetup oci_Heating = createNewOntClassInfo(Heating.MY_URI, factory, 1); OntClassInfoSetup oci_Ventilation = createNewOntClassInfo( Ventilation.MY_URI, factory, 2); // //////////////////////////////////////////////////////////////////(///// // ******* Add content to abstract classes of the ontology ******* // // /////////////////////////////////////////////////////////////////////////// oci_Hvac.setResourceComment("Heating, Air Conditioning and Ventilation Systems"); oci_Hvac.setResourceLabel("Hvac"); oci_Hvac.addSuperClass(Device.MY_URI); oci_Hvac.addObjectProperty(Hvac.PROP_HAS_FAN).setFunctional(); oci_Hvac.addRestriction(MergedRestriction .getAllValuesRestrictionWithCardinality(Hvac.PROP_HAS_FAN, LevelRating.MY_URI, 0, 1)); oci_Hvac.addObjectProperty(Hvac.PROP_HAS_SWING).setFunctional(); oci_Hvac.addRestriction(MergedRestriction .getAllValuesRestrictionWithCardinality(Hvac.PROP_HAS_SWING, LevelRating.MY_URI, 0, 1)); oci_Hvac.addObjectProperty(Hvac.PROP_HAS_STATUSVALUE).setFunctional(); oci_Hvac.addRestriction(MergedRestriction .getAllValuesRestrictionWithCardinality( Hvac.PROP_HAS_STATUSVALUE, StatusValue.MY_URI, 1, 1)); oci_Mode.setResourceComment("The diffents modes of Hvac Systems"); oci_Mode.setResourceLabel("Mode"); oci_Mode.addSuperClass(ManagedIndividual.MY_URI); // //////////////////////////////////////////////////////////////////(///// // ******* Add content to enumeration classes of the ontology ******* // // /////////////////////////////////////////////////////////////////////////// Air_Conditioning_Mode.Automatic .setResourceLabel("Automatic Air Conditioning Mode"); Air_Conditioning_Mode.Automatic .setResourceComment("its a mode in which the user sets the temperature that (s)he wants"); Air_Conditioning_Mode.Cool .setResourceLabel(" Air Conditioning Cool Mode"); Air_Conditioning_Mode.Cool .setResourceComment("its a mode that produces cold air"); oci_Air_Conditioning_Mode .setResourceComment("The different modes of Air Conditioning that we can choose "); oci_Air_Conditioning_Mode.setResourceLabel("Air_Conditioning_Mode"); oci_Air_Conditioning_Mode.toEnumeration(new ManagedIndividual[] { Air_Conditioning_Mode.Automatic, Air_Conditioning_Mode.Cool }); Heating_Mode.Automatic.setResourceLabel("Automatic Heating Mode"); Heating_Mode.Automatic .setResourceComment("its a mode in which the user sets the temperature that (s)he wants"); Heating_Mode.heat.setResourceLabel("Heat Mode"); Heating_Mode.heat.setResourceComment("its a mode that heats the air"); oci_Heating_Mode .setResourceComment("The different modes of Heating that we can choose"); oci_Heating_Mode.setResourceLabel("Heating_Mode"); oci_Heating_Mode.toEnumeration(new ManagedIndividual[] { Heating_Mode.Automatic, Heating_Mode.heat }); Ventilation_Mode.Fan.setResourceLabel("Automatic Ventilation Mode"); Ventilation_Mode.Fan .setResourceComment("its a mode in which the user sets the ventilation mode is On," + "also in many hvac system this mode is known as Fan Mode "); Ventilation_Mode.Dry.setResourceLabel("Dry Mode"); Ventilation_Mode.Dry .setResourceComment("enables dehumidifier technology"); oci_Ventilation_Mode .setResourceComment("The different modes of Ventilation that we can choose"); oci_Ventilation_Mode.setResourceLabel("Ventilation_Mode"); oci_Ventilation_Mode.toEnumeration(new ManagedIndividual[] { Ventilation_Mode.Fan, Ventilation_Mode.Dry }); // //////////////////////////////////////////////////////////////// // ******* Add content to regular classes of the ontology ******* // // /////////////////////////////////////////////////////////////////// // ///AIR CONDITIONING oci_Air_Conditioning .setResourceComment("System that is acapable of cooling the air in a room."); oci_Air_Conditioning.setResourceLabel("Air Conditioning"); oci_Air_Conditioning.addSuperClass(Target_Temperature.MY_URI); oci_Air_Conditioning.addObjectProperty( Air_Conditioning.PROP_HAS_AIR_CONDITIONING_MODE) .setFunctional(); oci_Air_Conditioning.addRestriction(MergedRestriction .getAllValuesRestrictionWithCardinality( Air_Conditioning.PROP_HAS_AIR_CONDITIONING_MODE, StatusValue.MY_URI, 0, 3)); // /// HEATING oci_Heating .setResourceComment("System that is capable of heating the air in a room."); oci_Heating.setResourceLabel("Heating"); oci_Heating.addSuperClass(Target_Temperature.MY_URI); oci_Heating.addObjectProperty(Heating.PROP_HAS_HEATING_MODE) .setFunctional(); oci_Heating .addRestriction(MergedRestriction .getAllValuesRestrictionWithCardinality( Heating.PROP_HAS_HEATING_MODE, StatusValue.MY_URI, 0, 3)); // ///VENTILATION oci_Ventilation .setResourceComment("System that is capable of moving the air in a room"); oci_Ventilation.setResourceLabel("Ventilation"); oci_Ventilation.addSuperClass(Hvac.MY_URI); // // oci_Ventilation.addObjectProperty(Ventilation.PROP_HAS_FAN) // .setFunctional(); // oci_Ventilation.addRestriction(MergedRestriction // .getAllValuesRestrictionWithCardinality( // Ventilation.PROP_HAS_FAN, LevelRating.MY_URI, 0, 1)); oci_Ventilation .addObjectProperty(Ventilation.PROP_HAS_VENTILATION_MODE) .setFunctional(); oci_Ventilation.addRestriction(MergedRestriction .getAllValuesRestrictionWithCardinality( Ventilation.PROP_HAS_VENTILATION_MODE, StatusValue.MY_URI, 0, 3)); // oci_Ventilation.addObjectProperty(Ventilation.PROP_HAS_SWING) // .setFunctional(); // oci_Ventilation.addRestriction(MergedRestriction // .getAllValuesRestrictionWithCardinality( // Ventilation.PROP_HAS_SWING, LevelRating.MY_URI, 0, 3)); // Target Temperature oci_Target_Temperature .setResourceComment("System that is capable of keeping a room at a targeted temperature."); oci_Target_Temperature.setResourceLabel("Target Temperature"); oci_Target_Temperature.addSuperClass(Hvac.MY_URI); MergedRestriction unitR = MergedRestriction .getAllValuesRestrictionWithCardinality( Target_Temperature.PROP_TEMPERATURE_UNIT, Unit.MY_URI, 1, 1); MergedRestriction unitR2 = MergedRestriction.getFixedValueRestriction( Unit.PROP_DIMENSION, MeasurableDimension.Temperature); unitR2.appendTo(unitR, new String[] { Target_Temperature.PROP_TEMPERATURE_UNIT, Unit.PROP_DIMENSION }); oci_Target_Temperature .addObjectProperty(Target_Temperature.PROP_TEMPERATURE_UNIT); oci_Target_Temperature.addRestriction(unitR); MergedRestriction cT = MergedRestriction.getAllValuesRestriction( Target_Temperature.PROP_CURRENT_TEMPERATURE_VALUE, TypeMapper.getDatatypeURI(Float.class)); oci_Target_Temperature .addDatatypeProperty(Target_Temperature.PROP_CURRENT_TEMPERATURE_VALUE); oci_Target_Temperature.addRestriction(cT); MergedRestriction tT = MergedRestriction.getAllValuesRestriction( Target_Temperature.PROP_TARGET_TEMPERATURE_VALUE, TypeMapper.getDatatypeURI(Float.class)); oci_Target_Temperature .addDatatypeProperty(Target_Temperature.PROP_TARGET_TEMPERATURE_VALUE); oci_Target_Temperature.addRestriction(tT); } }