/* Copyright 2008-2014 ITACA-TSB, http://www.tsb.upv.es Instituto Tecnologico de Aplicaciones de Comunicacion Avanzadas - Grupo Tecnologias para la Salud y el Bienestar (TSB) See the NOTICE file distributed with this work for additional information regarding copyright ownership 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.vcard; import javax.xml.datatype.XMLGregorianCalendar; 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.rdf.Resource; import org.universAAL.middleware.rdf.TypeMapper; import org.universAAL.ontology.VCardFactory; public class VCardOntology extends Ontology { private static VCardFactory factory = new VCardFactory(); public static final String NAMESPACE = "http://www.w3.org/2006/vcard/ns#"; public static final int TEL = 1; public static final int EMAIL = 2; public static final int BBSCOMM = 3; public static final int CAR = 4; public static final int CELL = 5; public static final int FAX = 6; public static final int ISDNCOMM = 7; public static final int MODEM = 8; public static final int MSG = 9; public static final int PAGER = 10; public static final int PCSCOMM = 11; public static final int VIDEO = 12; public static final int VOICE = 13; public static final int INET = 14; public static final int X400MAIL = 15; public static final int NAME = 16; public static final int ORG = 17; public static final int VCARD = 18; public VCardOntology(String ontURI) { super(ontURI); } public VCardOntology() { super(NAMESPACE); } public void create() { Resource r = getInfo(); r .setResourceComment("This ontology models and represents vCards in RDF using current best practices."); r.setResourceLabel("An Ontology for vCards"); addImport(DataRepOntology.NAMESPACE); OntClassInfoSetup oci; // Tel oci = createNewOntClassInfo(Tel.MY_URI, factory, TEL); oci .setResourceComment("Resources that are vCard Telephony communication mechanisms"); oci.setResourceLabel("Telephone"); oci.addSuperClass(ManagedIndividual.MY_URI); oci.addDatatypeProperty(Tel.PROP_VALUE); // Email oci = createNewOntClassInfo(Email.MY_URI, factory, EMAIL); oci.setResourceComment("Resources that are vCard Email Addresses"); oci.setResourceLabel("Email"); oci.addSuperClass(ManagedIndividual.MY_URI); oci.addDatatypeProperty(Email.PROP_VALUE); // BBS oci = createNewOntClassInfo(BBS.MY_URI, factory, BBSCOMM); oci.setResourceComment("Bulletin Board System Communications"); oci.setResourceLabel("Bulletin Board System"); oci.addSuperClass(Tel.MY_URI); // Car oci = createNewOntClassInfo(Car.MY_URI, factory, CAR); oci.setResourceComment("Car Telephone"); oci.setResourceLabel("Care Telephone"); oci.addSuperClass(Tel.MY_URI); // Cell oci = createNewOntClassInfo(Cell.MY_URI, factory, CELL); oci.setResourceComment("Cellular or Mobile Telephone"); oci.setResourceLabel("Cellular Telephone"); oci.addSuperClass(Tel.MY_URI); // Fax oci = createNewOntClassInfo(Fax.MY_URI, factory, FAX); oci.setResourceComment("Fax Communications"); oci.setResourceLabel("Fax"); oci.addSuperClass(Tel.MY_URI); // ISDN oci = createNewOntClassInfo(ISDN.MY_URI, factory, ISDNCOMM); oci.setResourceComment("ISDN Communications"); oci.setResourceLabel("ISDN"); oci.addSuperClass(Tel.MY_URI); // Modem oci = createNewOntClassInfo(Modem.MY_URI, factory, MODEM); oci.setResourceComment("Modem Communications"); oci.setResourceLabel("Modem"); oci.addSuperClass(Tel.MY_URI); // Msg oci = createNewOntClassInfo(Msg.MY_URI, factory, MSG); oci.setResourceComment("Voice Message Communications"); oci.setResourceLabel("Voice Message"); oci.addSuperClass(Tel.MY_URI); // Pager oci = createNewOntClassInfo(Pager.MY_URI, factory, PAGER); oci.setResourceComment("Pager Communications"); oci.setResourceLabel("Pager Device"); oci.addSuperClass(Tel.MY_URI); // PCS oci = createNewOntClassInfo(PCS.MY_URI, factory, PCSCOMM); oci.setResourceComment("Personal Communications Service"); oci.setResourceLabel("Persona Communications"); oci.addSuperClass(Tel.MY_URI); // Video oci = createNewOntClassInfo(Video.MY_URI, factory, VIDEO); oci.setResourceComment("Video Communications"); oci.setResourceLabel("Video"); oci.addSuperClass(Tel.MY_URI); // Voice oci = createNewOntClassInfo(Voice.MY_URI, factory, VOICE); oci.setResourceComment("Voice Communications"); oci.setResourceLabel("Voice"); oci.addSuperClass(Tel.MY_URI); // Internet oci = createNewOntClassInfo(Internet.MY_URI, factory, INET); oci.setResourceComment("Internet Email"); oci.setResourceLabel("Internet"); oci.addSuperClass(Email.MY_URI); // X400 oci = createNewOntClassInfo(X400.MY_URI, factory, X400MAIL); oci.setResourceComment("X.400 Email"); oci.setResourceLabel("X.400"); oci.addSuperClass(Email.MY_URI); // Name oci = createNewOntClassInfo(Name.MY_URI, factory, NAME); oci.setResourceComment("Resources that are vCard personal names"); oci.setResourceLabel("Name"); oci.addSuperClass(ManagedIndividual.MY_URI); oci.addDatatypeProperty(Name.PROP_ADDITIONAL_NAME); oci.addRestriction(MergedRestriction.getAllValuesRestriction( Name.PROP_ADDITIONAL_NAME, TypeMapper .getDatatypeURI(String.class))); oci.addDatatypeProperty(Name.PROP_FAMILY_NAME); oci .addRestriction(MergedRestriction.getAllValuesRestriction( Name.PROP_FAMILY_NAME, TypeMapper .getDatatypeURI(String.class))); oci.addDatatypeProperty(Name.PROP_GIVEN_NAME); oci.addRestriction(MergedRestriction.getAllValuesRestriction( Name.PROP_GIVEN_NAME, TypeMapper.getDatatypeURI(String.class))); oci.addDatatypeProperty(Name.PROP_HONORIFIC_PREFIX); oci.addRestriction(MergedRestriction.getAllValuesRestriction( Name.PROP_HONORIFIC_PREFIX, TypeMapper .getDatatypeURI(String.class))); oci.addDatatypeProperty(Name.PROP_HONORIFIC_SUFFIX); oci.addRestriction(MergedRestriction.getAllValuesRestriction( Name.PROP_HONORIFIC_SUFFIX, TypeMapper .getDatatypeURI(String.class))); // Organization oci = createNewOntClassInfo(Organization.MY_URI, factory, ORG); oci.setResourceComment("Resources that are vCard organizations"); oci.setResourceLabel("Organization"); oci.addSuperClass(ManagedIndividual.MY_URI); oci.addDatatypeProperty(Organization.PROP_ORGANIZATION_NAME); oci.addRestriction(MergedRestriction.getAllValuesRestriction( Organization.PROP_ORGANIZATION_NAME, TypeMapper .getDatatypeURI(String.class))); oci.addDatatypeProperty(Organization.PROP_ORGANIZATION_UNIT); oci.addRestriction(MergedRestriction.getAllValuesRestriction( Organization.PROP_ORGANIZATION_UNIT, TypeMapper .getDatatypeURI(String.class))); // VCard oci = createNewOntClassInfo(VCard.MY_URI, factory, VCARD); oci .setResourceComment("Resources that are vCards and the URIs that denote " + "these vCards can also be the same URIs that denote " + "people/orgs"); oci.setResourceLabel("vCard"); oci.addSuperClass(ManagedIndividual.MY_URI); oci.addDatatypeProperty(VCard.PROP_BDAY).setFunctional(); oci.addRestriction(MergedRestriction .getAllValuesRestrictionWithCardinality(VCard.PROP_BDAY, TypeMapper.getDatatypeURI(XMLGregorianCalendar.class), 1, 1)); oci.addObjectProperty(VCard.PROP_EMAIL); oci.addRestriction(MergedRestriction.getAllValuesRestriction( VCard.PROP_EMAIL, Email.MY_URI)); oci.addDatatypeProperty(VCard.PROP_FN).setFunctional(); oci.addRestriction(MergedRestriction .getAllValuesRestrictionWithCardinality(VCard.PROP_FN, TypeMapper.getDatatypeURI(String.class), 1, 1)); oci.addObjectProperty(VCard.PROP_N).setFunctional(); oci.addRestriction(MergedRestriction .getAllValuesRestrictionWithCardinality(VCard.PROP_N, Name.MY_URI, 1, 1)); oci.addObjectProperty(VCard.PROP_ORG); oci.addRestriction(MergedRestriction.getAllValuesRestriction( VCard.PROP_ORG, Organization.MY_URI)); oci.addObjectProperty(VCard.PROP_PHOTO); oci.addObjectProperty(VCard.PROP_TEL); oci.addRestriction(MergedRestriction.getAllValuesRestriction( VCard.PROP_TEL, Tel.MY_URI)); oci.addObjectProperty(VCard.PROP_URL); } }