/*
* Michel Héon PhD: Web sémantique et modélisation ontologique - Guide du développeur Java sous Eclipse
* This file is part of the book:
*
* Michel Héon
* Web sémantique et modélisation ontologique - Guide du développeur Java sous Eclipse
* 2014
* Editions ENI
* ISBN : 978-2-7460-8869-6
* EAN : 9782746088696
* France
*
* The contents of this file are subject to the LGPL License, Version 3.0.
*
* Copyright (C) 2014, Cotechnoe inc. http://www.cotechnoe.com, http://java-ws.com
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see http://www.gnu.org/licenses/.
*
*
* Alternatively, the contents of this file may be used under the terms of the Apache License, Version 2.0
* in which case, the provisions of the Apache License Version 2.0 are applicable instead of those above.
*
* Copyright (C) 2014, Cotechnoe inc.
*
* 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 com.java_ws.owlapi.exemple;
import org.semanticweb.owlapi.apibinding.OWLManager;
import org.semanticweb.owlapi.model.IRI;
import org.semanticweb.owlapi.model.OWLClass;
import org.semanticweb.owlapi.model.OWLDataComplementOf;
import org.semanticweb.owlapi.model.OWLDataFactory;
import org.semanticweb.owlapi.model.OWLDataIntersectionOf;
import org.semanticweb.owlapi.model.OWLDataOneOf;
import org.semanticweb.owlapi.model.OWLDataProperty;
import org.semanticweb.owlapi.model.OWLDataSomeValuesFrom;
import org.semanticweb.owlapi.model.OWLDatatype;
import org.semanticweb.owlapi.model.OWLDatatypeDefinitionAxiom;
import org.semanticweb.owlapi.model.OWLDatatypeRestriction;
import org.semanticweb.owlapi.model.OWLFacetRestriction;
import org.semanticweb.owlapi.model.OWLFunctionalDataPropertyAxiom;
import org.semanticweb.owlapi.model.OWLLiteral;
import org.semanticweb.owlapi.model.OWLOntology;
import org.semanticweb.owlapi.model.OWLOntologyCreationException;
import org.semanticweb.owlapi.model.OWLOntologyManager;
import org.semanticweb.owlapi.model.OWLOntologyStorageException;
import org.semanticweb.owlapi.model.OWLSubClassOfAxiom;
import org.semanticweb.owlapi.vocab.OWLFacet;
import com.java_ws.owlapi.exemple.util.JavawsHelper;
/** Auteur: Michel Héon PhD
* Cotechnoe http://www.cotechnoe.com
* Date: 15-jan-2014
*/
public class ChapVIII {
@SuppressWarnings(
"unused")
/****************************************************************
****************************************************************
**
** Chapitre 8
**
****************************************************************
****************************************************************/
public static void main(String[] args)
throws OWLOntologyCreationException, OWLOntologyStorageException {
// Section 2. Restriction de type de données
if (
true) datatypeRestriction();
// Section 3. Intersection et complément de données
if (
false) intersectionOf();
// Section 4. Énumération de données
if (
false) oneOf();
// Section 5. Propriété fonctionnelle de données
if (
false) functionalDataProperty();
// Section 6. Restriction existentielle sur le type de données
if (
false) dataSomeValuesFrom();
}
/****************************************************************
****************************************************************
**
** Section 2. Restriction de type de données
**
****************************************************************
****************************************************************/
public static void datatypeRestriction()
throws OWLOntologyCreationException, OWLOntologyStorageException {
OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
IRI ontologyIRI = IRI.create(
"http://java-ws.com/ontologies/families");
OWLOntology ontology = manager.createOntology(ontologyIRI);
OWLDataFactory factory = manager.getOWLDataFactory();
OWLDatatype personAge = factory.getOWLDatatype(IRI.create(ontologyIRI + "#personAge"));
OWLDatatype intDatatype = factory.getIntegerOWLDatatype();
OWLFacetRestriction age0 = factory.getOWLFacetRestriction(OWLFacet.MIN_INCLUSIVE, 0);
OWLFacetRestriction age150 = factory.getOWLFacetRestriction(OWLFacet.MAX_INCLUSIVE, 150);
OWLDatatypeRestriction personAgeRestriction = factory.getOWLDatatypeRestriction(intDatatype, age0, age150);
OWLDatatypeDefinitionAxiom axiome = factory.getOWLDatatypeDefinitionAxiom(personAge, personAgeRestriction);
manager.addAxiom(ontology, axiome);
JavawsHelper.printTurtle(manager, ontology);
}
/****************************************************************
****************************************************************
**
** Section 3. Intersection et complément de données
**
****************************************************************
****************************************************************/
public static void intersectionOf() throws OWLOntologyCreationException, OWLOntologyStorageException {
OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
IRI ontologyIRI = IRI.create("http://java-ws.com/ontologies/families");
OWLOntology ontology = manager.createOntology(ontologyIRI);
OWLDataFactory factory = manager.getOWLDataFactory();
OWLDatatype personAge = factory.getOWLDatatype(IRI.create(ontologyIRI + "#personAge"));
OWLDatatype minorAge = factory.getOWLDatatype(IRI.create(ontologyIRI + "#minorAge"));
OWLDatatype majorAge = factory.getOWLDatatype(IRI.create(ontologyIRI + "#majorAge"));
OWLDataComplementOf notMinorAge = factory.getOWLDataComplementOf(minorAge);
OWLDataIntersectionOf personNotMinorAge = factory.getOWLDataIntersectionOf(personAge, notMinorAge);
OWLDatatypeDefinitionAxiom axiome = factory.getOWLDatatypeDefinitionAxiom(majorAge, personNotMinorAge);
manager.addAxiom(ontology, axiome);
JavawsHelper.printTurtle(manager, ontology);
}
/****************************************************************
****************************************************************
**
** Section 4. Énumération de données
**
****************************************************************
****************************************************************/
public static void oneOf() throws OWLOntologyCreationException, OWLOntologyStorageException {
OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
IRI ontologyIRI = IRI.create("http://java-ws.com/ontologies/families");
OWLOntology ontology = manager.createOntology(ontologyIRI);
OWLDataFactory factory = manager.getOWLDataFactory();
OWLDatatype toddleAge = factory.getOWLDatatype(IRI.create(ontologyIRI + "#toddleAge"));
OWLDatatype intDatatype = factory.getIntegerOWLDatatype();
OWLLiteral age1 = factory.getOWLLiteral("1", intDatatype);
OWLLiteral age2 = factory.getOWLLiteral("2", intDatatype);
OWLDataOneOf oneOfAge = factory.getOWLDataOneOf(age1, age2);
OWLDatatypeDefinitionAxiom axiome = factory.getOWLDatatypeDefinitionAxiom(toddleAge, oneOfAge);
manager.addAxiom(ontology, axiome);
JavawsHelper.printFunctionalOWL(manager, ontology);
}
/****************************************************************
****************************************************************
**
** Section 5. Propriété fonctionnelle de données
**
****************************************************************
****************************************************************/
public static void functionalDataProperty() throws OWLOntologyCreationException, OWLOntologyStorageException {
OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
IRI ontologyIRI = IRI.create("http://java-ws.com/ontologies/families");
OWLOntology ontology = manager.createOntology(ontologyIRI);
OWLDataFactory factory = manager.getOWLDataFactory();
OWLDataProperty hasAge = factory.getOWLDataProperty(IRI.create(ontologyIRI + "#hasAge"));
OWLFunctionalDataPropertyAxiom axiome = factory.getOWLFunctionalDataPropertyAxiom(hasAge);
manager.addAxiom(ontology, axiome);
JavawsHelper.printFunctionalOWL(manager, ontology);
}
/****************************************************************
****************************************************************
**
** Section 6. Restriction existentielle sur le type de données
**
****************************************************************
****************************************************************/
public static void dataSomeValuesFrom() throws OWLOntologyCreationException, OWLOntologyStorageException {
OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
IRI ontologyIRI = IRI.create("http://java-ws.com/ontologies/families");
OWLOntology ontology = manager.createOntology(ontologyIRI);
OWLDataFactory factory = manager.getOWLDataFactory();
OWLFacetRestriction ageMin13 = factory.getOWLFacetRestriction(OWLFacet.MIN_EXCLUSIVE, 12);
OWLFacetRestriction ageMax19 = factory.getOWLFacetRestriction(OWLFacet.MAX_INCLUSIVE, 19);
OWLDatatype intDatatype = factory.getIntegerOWLDatatype();
OWLDataProperty hasAge = factory.getOWLDataProperty(IRI.create(ontologyIRI + "#hasAge"));
OWLClass teenager = factory.getOWLClass(IRI.create(ontologyIRI + "#Teenager"));
OWLDatatypeRestriction personAgeRestriction = factory.getOWLDatatypeRestriction(intDatatype, ageMin13, ageMax19);
OWLDataSomeValuesFrom hasAgeRestriction = factory.getOWLDataSomeValuesFrom(hasAge, personAgeRestriction);
OWLSubClassOfAxiom axiome = factory.getOWLSubClassOfAxiom(teenager, hasAgeRestriction);
manager.addAxiom(ontology, axiome);
JavawsHelper.printTurtle(manager, ontology);
}
}