TP : RDFS et API Java

Download Report

Transcript TP : RDFS et API Java

Universit´e Paris 8 - MIME
TP : RDFS et API Java
Exercice 1 : mod´elisation en RDFS
Proposer des axiomes en RDFS pour repr´esenter les d´eclarations ci-dessous :
1. Les classes Sorcier, Moldu, Phenix et Humain
2. Les propri´et´es avoirAnimal, avoirPhenix, avoirAmi
3. Sorcier et Moldu sont Humain
4. avoirPhenix est plus sp´ecifique que avoirAnimal
5. Le domaine de avoirPhenix est Sorcier
6. Harry est un Sorcier
7. Dumbledore a Fawkes qui est un Phenix
8. Potter est un ami de Hermione
9. Si X est un Ph´enix Y alors X est Sorcier
Lancer le validateur RDF pour v´erifier si votre ontologie RDF est valide.
Exercice 2 : API Java pour RDFS
1. T´el´echarger le moteur d’inf´erence IDDL sur le lien :
https://gforge.inria.fr/frs/?group id=1480
2. Essayer de compiler et d’ex´ecuter l’exemple “Main.java” a` l’aide du fichier
“README”.
3. Ecrire un programme en Java qui r´epond aux questions ci-dessous a` l’aide du
moteur d’inf´erence IDDL.
(a) Dumbledore est-il Sorcier ?
(b) Phenix est-il Humain ?
Expliquer les r´eponses du moteur d’inf´erence IDDL.
Annexe
Le squelette pour la manipulation XML :
http://download.oracle.com/javase/1.4.2/docs/api/org/w3c/dom/Document.html
1
Universit´e Paris 8 - MIME
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
...
private static DocumentBuilder BUILDER = null;
final DocumentBuilderFactory fac =
DocumentBuilderFactory.newInstance();
...
try { BUILDER = fac.newDocumentBuilder(); }
catch (ParserConfigurationException e) { };
...
Document dom = BUILDER.parse( new File (String filename) );
...
NodeList nl = dom.getElementsByTagName(String tagname);
...
int s = nl.getLength();
...
Node n = nl.item(int index);
...
String value = n.getNodeValue();
...
String value = n.getNodeName();
...
NodeList nl1 = n.getChildNodes();
...
NamedNodeMap attrs = n.getAttributes();
...
Le squelette pour le raisonnement :
http://owlapi.sourceforge.net/documentation.html
import java.net.URI;
import java.util.Vector;
import uk.ac.manchester.cs.owl.owlapi.OWLDataFactoryImpl;
import org.semanticweb.owlapi.model.OWLClass;
import org.semanticweb.owlapi.model.OWLSubClassOfAxiom;
import org.semanticweb.owlapi.model.IRI;
...
import fr.inrialpes.exmo.iddl.IDDLReasoner;
import fr.inrialpes.exmo.iddl.conf.Semantics;
...
IDDLReasoner reasoner = new IDDLReasoner();
reasoner.addOntology(URI.create("onto.rdf"));
...
reasoner.setSemantics(Semantics.DL);
...
OWLDataFactoryImpl facto = new OWLDataFactoryImpl();
...
OWLClass cls1 = facto.getOWLClass( IRI.create(
"http://www.inrialpes.fr/exmo/people/cleduc/geography.owl#SouthAmericanRegion") );
...
OWLClass cls2 = facto.getOWLClass( IRI.create(
"http://www.inrialpes.fr/exmo/people/cleduc/geography.owl#Region") );
...
OWLSubClassOfAxiom ax = facto.getOWLSubClassOfAxiom( cls1, cls2 );
...
OWLClass person = facto.getOWLClass( IRI.create("http://example.org/families/#Person") );
OWLIndividual ind = facto.getOWLNamedIndividual( IRI.create("http://example.org/families/#Mary") );
OWLClassAssertionAxiom classAssertion = facto.getOWLClassAssertionAxiom(person, ind);
OWLIndividual matthew = facto.getOWLNamedIndividual(IRI.create("http://example.org/families/#matthew"));
OWLIndividual peter = facto.getOWLNamedIndividual(IRI.create("http://example.org/families/#peter"));
OWLObjectProperty hasFather = facto.getOWLObjectProperty(IRI.create("http://example.org/families/#hasFather"));
OWLObjectPropertyAssertionAxiom assertion = facto.getOWLObjectPropertyAssertionAxiom(hasFather, matthew, peter);
...
if (reasoner.isEntailed( ax )) { }
2