O.Curé [255 ]Exploiter RDF avec Jena5
O.Curé [256 ]JENA : Présentation● Plateforme Java pour le Websémantique● Open-source● Développé par un laboratoire deHewle...
O.Curé [257 ]JENA : URL● La page daccueil de JENA :– http://jena.sourceforge.net/downloads.html● Un groupe de discussions ...
O.Curé [258 ]JENA : éléments● Un analyseur RDF : ARP – Another RDFParser● un langage de requêtes pour RDF :RDQL – RDF Quer...
O.Curé [259 ]Modèle● Larchitecture de JENA est centrée surla notion de modèle (model) :lensemble des déclarations quicompo...
O.Curé [260 ]ModelFactory : codeimport java.util.Iterator;import com.hp.hpl.jena.rdf.model.*;public class EtudRDF {    pri...
O.Curé [261 ]Création / Enrichissementdun modèle (1)model = ModelFactory.createDefaultModel();jean = model.createResource(...
O.Curé [262 ]Création / Enrichissementdun modèle (2)Statement statement = model.createStatement(dominique, enfantDe, jean)...
O.Curé [263 ]Accès aux données● On peut accéder aux données :– à laide de programmes en sappuyant surles méthodes et class...
O.Curé [264 ]Via les données : code// Ensemble des déclarations StmtIterator iter = model.listStatements();while (iter.has...
O.Curé [265 ]Via les données : code (2)// Connaitre les parentsResIterator parents = model.listSubjectsWithProperty(parent...
O.Curé [266 ]Via les données : code (3)System.out.println("Les ens :");NodeIterator itNode = model.listObjectsOfProperty(e...
O.Curé [267 ]Exercice 1● A partir du fichier RDF sur les cours,enseignants et etudiants :– Afficher la liste des cours– Af...
O.Curé [268 ]RDQL : présentation● Syntaxe proche de SQL.● Influence : SquishQL, RDFDB QL● Les clauses sont : SELECT, WHERE...
O.Curé [269 ]RDQL : le langage (1)● BNF de RDQL à la page :http://jena.sourceforge.net/tutorial/RDQL/rdql_grammar.html● Ex...
O.Curé [270 ]RDQL : le langage (2)● SELECT * WHERE (?s,<rel:parentOf>,?o) USING rel FOR <http://purl.org/vocab/relationshi...
O.Curé [271 ]RDQL : le langage (3)● "SELECT ?o, ?o2 WHERE (?s,<rel:childOf>,?o), (?s,<rel:parentOf>,?o2) USING rel FOR rel...
O.Curé [272 ]RDQL : filtre● On peut filtrer les valeurs des variables à laide de laclause AND.● Exemple : AND ?age > 18● O...
O.Curé [273 ]RDQL :programmationJava● Mode de fonctionnement :– On passe la requête à unobjet instancié de la classeQuery....
O.Curé [274 ]Exercice 2● Toujours le fichier RDF de lexercice 1,rédiger les requêtes RDQL suivantes :– Afficher les cours–...
O.Curé [275 ]Opérations sur les modèles● On peut réaliser les opérations ensemblistessuivantes sur les modèles : union,int...
O.Curé [276 ]Inférence● Jena propose de nombreusesfonctionnalités pour réaliser desinférences.● Lire le document “Inferenc...
O.Curé [277 ]Exercice 3● Sur le fichier RDFS (schemaEtud.rdf)afficher toutes les sous-classes de laclasse Personne● Rédige...
O.Curé [278 ]Exercice 4● Réaliser lunion du modèle du schémaRDF et du modèle des instances RDF.● Ecrire le code permettant...
O.Curé [279 ]SPARQL
O.Curé [280 ]Introduction● Query language for RDF data● Basic graph pattern matching● Result forms:– SELECT, CONSTRUCT, DE...
O.Curé [281 ]Patterns● Variables are prefixed with a ?● Patterns use triple forms● Example:SELECT ?s ?p ?oWHERE {?s ?p ?o}...
O.Curé [282 ]Example@prefix person: <http://example/person/> .@prefix foaf: <http://xmlns.com/foaf/0.1/> .person:A foaf:na...
O.Curé [283 ]Example (2)@prefix person: <http://example/person/> .@prefix foaf: <http://xmlns.com/foaf/0.1/> .person:A foa...
O.Curé [284 ]Example (3a)@prefix dc: <http://purl.org/dc/elements/1.1/> .@prefix stock: <http://example.org/stock#> .@pref...
O.Curé [285 ]Example (3b)PREFIX dc: <http://purl.org/dc/elements/1.1/>PREFIX stock: <http://example.org/stock#>PREFIX inv:...
O.Curé [286 ]Example (4)PREFIX foaf: <http://xmlns.com/foaf/0.1/>SELECT ?name ?nick{ ?x foaf:name ?name .   OPTIONAL {?x f...
O.Curé [287 ]OWLWeb Ontology Language6
O.Curé [288 ]OWL● Une recommendation du W3C pour représenterdes ontologies pour le Web Sémantique.● Influences : RDF, DL e...
O.Curé [289 ]OWL● OWL possède 3 sous-langages : OWL Lite, OWLDL and OWL Full● OWL propose plusieurs syntaxes : RDF,OWL/RDF...
O.Curé [290 ]Influences de OWL
O.Curé [291 ]OWL comme une DL
O.Curé [292 ]Syntaxe● OWL/RDF syntax<owl:Class rdf:ID="Cat"><rdfs:subClassOf rdf:resource="#Animal"/></owl:Class>● Abstrac...
O.Curé [293 ]OWL Lite● OWL Lite ressemble aux Frames : supporte laclassification hiérarchique des classes et propriétés,de...
O.Curé [294 ]OWL DL● Expressivité riche en gardant lacomplétude computationelle et ladécidabilité.● Ne permet pas toute la...
O.Curé [295 ]OWL DL (2)● 40 primitives : 16 pour les classes et 24pour les propriétés.● Classes pour définir des classes e...
O.Curé [296 ]Eléments du langage● Classes pour définir des propriétés :– owl:ObjectProperty, owl:DatatypeProperty,owl:Tran...
O.Curé [297 ]Eléments du langage (2)● Classes pour déclarer linégalité entreindividus :– owl:AllDifferent pour spécifier q...
O.Curé [298 ]Eléments du langage (3)● Classes pour lénumération de types de données:– owl:DataRange pour énumérer des donn...
O.Curé [299 ]Eléments du langage (4)● Propriétés pour définir des classes dans OWLLite :– owl:intersectionOf : le codomain...
O.Curé [300 ]Eléments du langage (6)● Propriétés pour définir des classes dans OWL DL:– owl:intersectionOf, owl:unionOf,ow...
O.Curé [301 ]Eléments du langage (7)● Pour OWL Lite :– owl:inverseOf pour définir linverse dunepropriété– owl:sameAs, owl:...
O.Curé [302 ]Eléments du langage (8)● Pour OWL Lite :– owl:distinctMembers. A utiliser avecowl:AllDifferent pour définir u...
O.Curé [303 ]
O.Curé [304 ]OWL Full● Très expressif (méta-classes, classescomme valeur dobject property).● Profite de toute la liberté s...
O.Curé [305 ]Defining n-ary relations● Problem: how to represent n-aryrelations in RDF/OWL● 2 different patterns :– introd...
O.Curé [306 ]New class for a relation● For example :
O.Curé [307 ]New class for a relation● This approach is useful in the case of– additional attributes describing a relation...
O.Curé [308 ]Lists for arguments of arelation● Caution : using the rdf:List vocabularyin OWL would have put the ontology i...
O.Curé [309 ]Lists for arguments of arelation (2)● The following ontology is in OWL Lite:
O.Curé [310 ]Outils pour concevoir desontologies● Open-source :– KAON , OilEd, OntoEdit, Ontolingua,OntoSaurus, Protégé, W...
O.Curé [311 ]Protégé
O.Curé [312 ]Introduction● Un éditeur dontologies et de bases deconnaissances● Open-source● Disponible à lURL :http://www-...
O.Curé [313 ]Historique● Début des années 90 : Protégé II– Environnement pour lingénierie desconnaissances permettant de d...
O.Curé [314 ]Plateforme pour plug-ins● Communauté très active. On trouvedes plug-ins pour :– La visualisation– Linférence–...
O.Curé [315 ]Notre environnement● Le plug-in OWL– Une extension de Protégé pour permettre :le chargement, lenregistrement ...
O.Curé [316 ]Démonstration● Créer des classes, des propriétés, desinstances● Lancer la classification avec Racer.● Ecrire ...
O.Curé [317 ]Exercice● Ecrire la terminologie complète delontologie Personne :
O.Curé [318 ]Exercice 1● Ecrire un programme Java qui va afficher les déclarationsde la base de connaissances (Personne)● ...
O.Curé [319 ]Exercice 1 (2)● Afficher les instances qui sont des hommes(« Man »).● Afficher les instances qui sont des onc...
O.Curé [320 ]Exercice 1 (fin)● Modifier la classe « HappyFather » et ajouter unecontrainte supplémentaire : na quun seul e...
Prochain SlideShare
Chargement dans…5
×

5 sw

399 vues

Publié le

0 commentaire
1 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
399
Sur SlideShare
0
Issues des intégrations
0
Intégrations
1
Actions
Partages
0
Téléchargements
13
Commentaires
0
J’aime
1
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

5 sw

  1. 1. O.Curé [255 ]Exploiter RDF avec Jena5
  2. 2. O.Curé [256 ]JENA : Présentation● Plateforme Java pour le Websémantique● Open-source● Développé par un laboratoire deHewlett-Packard
  3. 3. O.Curé [257 ]JENA : URL● La page daccueil de JENA :– http://jena.sourceforge.net/downloads.html● Un groupe de discussions :– http://groups.yahoo.com/group/jena-dev/● La javaDoc– http://jena.sourceforge.net/javadoc/index.html
  4. 4. O.Curé [258 ]JENA : éléments● Un analyseur RDF : ARP – Another RDFParser● un langage de requêtes pour RDF :RDQL – RDF Query Language● Persistence des données, en particulieravec les SGBD (Oracle, MySQL,PostgreSQL)● Support de RDF, RDFS, OWL● Inférence
  5. 5. O.Curé [259 ]Modèle● Larchitecture de JENA est centrée surla notion de modèle (model) :lensemble des déclarations quicomposent un document, graphe ouinstanciation dun vocabulaire.● A partir de JENA2.0, on doit créer unmodèle en saidant de ModelFactory.
  6. 6. O.Curé [260 ]ModelFactory : codeimport java.util.Iterator;import com.hp.hpl.jena.rdf.model.*;public class EtudRDF {    private String etudNS ="file:/home/olive/_mesCours/kr/etudIns2.rdf"; public static void main(String[] args) {EtudRDF etudRDF= new EtudRDF();etudRDF.load();}public void load() {Model model = ModelFactory.createDefaultModel();model.read(etudNS);model.write(System.out);            }}
  7. 7. O.Curé [261 ]Création / Enrichissementdun modèle (1)model = ModelFactory.createDefaultModel();jean = model.createResource(familleURI+"jean");marie = model.createResource(familleURI+"marie");dominique = model.createResource(familleURI+"dominique");alexandra = model.createResource(familleURI+"alexandra");baptiste = model.createResource(familleURI+"baptiste");pierre = model.createResource(familleURI+"pierre");enfantDe = model.createProperty(relationshipURI,"childOf");parentDe = model.createProperty(relationshipURI,"parentOf");epouseDe = model.createProperty(relationshipURI,"spouseOf");dominique.addProperty(parentDe, baptiste);dominique.addProperty(parentDe, pierre);alexandra.addProperty(parentDe, baptiste);alexandra.addProperty(parentDe,pierre);alexandra.addProperty(epouseDe, dominique);
  8. 8. O.Curé [262 ]Création / Enrichissementdun modèle (2)Statement statement = model.createStatement(dominique, enfantDe, jean);model.add(statement);statement = model.createStatement(dominique, enfantDe, marie);model.add(statement);Property prop = model.createProperty(relationshipURI,"knowsOf");//Création dun noeud vide Resource blank  = model.createResource(  )  .addProperty(prop, "personne1")  .addProperty(prop, "personne2")  .addProperty(prop, model.createLiteral("personne3", "fr")); // Affichage du document RDF au format RDF/XML (par défaut) model.write(new PrintWriter(System.out));
  9. 9. O.Curé [263 ]Accès aux données● On peut accéder aux données :– à laide de programmes en sappuyant surles méthodes et classes de lAPI– À laide de langage de requêtes RDQL.
  10. 10. O.Curé [264 ]Via les données : code// Ensemble des déclarations StmtIterator iter = model.listStatements();while (iter.hasNext()) {    Statement stmt = (Statement) iter.next();    System.out.println(stmt.getSubject()+"­("+stmt.getPredicate()+")­>"+stmt.getObject().toString());}
  11. 11. O.Curé [265 ]Via les données : code (2)// Connaitre les parentsResIterator parents = model.listSubjectsWithProperty(parentDe);while (parents.hasNext()) {personne = parents.nextResource();System.out.println(personne.getLocalName()+ " ­> URI ="+personne.getURI());}// Encore des parents avec enfantDeNodeIterator parentsSuite = model.listObjectsOfProperty(enfantDe);while (parentsSuite.hasNext()) {Resource person = (Resource) parentsSuite.nextNode();System.out.println( person.getLocalName()+ " ­> URI ="+person.getURI());}
  12. 12. O.Curé [266 ]Via les données : code (3)System.out.println("Les ens :");NodeIterator itNode = model.listObjectsOfProperty(estEns);while (itNode.hasNext()) {RDFNode node = (RDFNode) itNode.next();System.out.println("Enseignant  ="+node.toString());// on veut le nomProperty nom = model.createProperty("http://www.univ­mlv.fr/~ocure/etudSchema.rdf#possedeNom");NodeIterator itNom = model.listObjectsOfProperty((Resource)node,nom);while (itNom.hasNext()) {System.out.println("Nom = "+itNom.next());}}
  13. 13. O.Curé [267 ]Exercice 1● A partir du fichier RDF sur les cours,enseignants et etudiants :– Afficher la liste des cours– Afficher les enseignants, dans un premiertemps le nom local des enseignants puis lavaleur de lattribut possedeNom de chaqueenseignant.
  14. 14. O.Curé [268 ]RDQL : présentation● Syntaxe proche de SQL.● Influence : SquishQL, RDFDB QL● Les clauses sont : SELECT, WHERE, USING● Les variables débutent par un “?”.● Orienté données : les données explicites du modèle (pasimplicites).● Jena Tutorial : “RDF provides a graph with directed edges- the nodes are resources or literals. RDQL provides away of specifying a graph pattern that is matched againstthe graph to yield a set of matches. It returns a list ofbindings - each binding is a set of name-value pairs forthe values of the variables. All variables are bound (thereis no disjunction in the query).”
  15. 15. O.Curé [269 ]RDQL : le langage (1)● BNF de RDQL à la page :http://jena.sourceforge.net/tutorial/RDQL/rdql_grammar.html● Exemple : SELECT * WHERE (?s,?p,?o)● (s, 129d96a8:10160ffc9cc:­8000) (p, http://purl.org/vocab/relationship#knowsOf) (o, personne2)● (s, 129d96a8:10160ffc9cc:­8000) (p, http://purl.org/vocab/relationship#knowsOf) (o, personne3~fr)● (s, http://www.univ­mlv.fr/~ocure/rdf/famille#alexandra) (p, http://purl.org/vocab/relationship#parentOf) (o, http://www.univ­mlv.fr/~ocure/rdf/famille#pierre)● (s, http://www.univ­mlv.fr/~ocure/rdf/famille#alexandra) (p, http://purl.org/vocab/relationship#parentOf) (o, http://www.univ­mlv.fr/~ocure/rdf/famille#baptiste)● (s, http://www.univ­mlv.fr/~ocure/rdf/famille#dominique) (p, http://purl.org/vocab/relationship#parentOf) (o, http://www.univ­mlv.fr/~ocure/rdf/famille#pierre)● (s, http://www.univ­mlv.fr/~ocure/rdf/famille#dominique) (p, http://purl.org/vocab/relationship#parentOf) (o, http://www.univ­mlv.fr/~ocure/rdf/famille#baptiste)● ...
  16. 16. O.Curé [270 ]RDQL : le langage (2)● SELECT * WHERE (?s,<rel:parentOf>,?o) USING rel FOR <http://purl.org/vocab/relationship#>● SELECT ?s WHERE (?s,<rel:parentOf>,?o) USING rel FOR <http://purl.org/vocab/relationship#>● Résultats :alexandra parent de pierrealexandra parent de baptistedominique parent de pierredominique parent de baptiste
  17. 17. O.Curé [271 ]RDQL : le langage (3)● "SELECT ?o, ?o2 WHERE (?s,<rel:childOf>,?o), (?s,<rel:parentOf>,?o2) USING rel FOR rel FOR <http://purl.org/vocab/relationship#>● Résultats :marie parent de pierremarie parent de baptistejean parent de pierrejean parent de baptiste
  18. 18. O.Curé [272 ]RDQL : filtre● On peut filtrer les valeurs des variables à laide de laclause AND.● Exemple : AND ?age > 18● On apeut aussi profiter des expressions régulières(“=~” egalité et “!~” différence).● Exemple :● SELECT * WHERE (?s,<rel:parentOf>,?o) AND ?s =~ /dominique/i USING rel FOR <http://purl.org/vocab/relationship#>dominique parent de pierredominique parent de baptisteInsensible àla casse
  19. 19. O.Curé [273 ]RDQL :programmationJava● Mode de fonctionnement :– On passe la requête à unobjet instancié de la classeQuery.– On passe alors lobjet à unobjet du typeQueryEngine.– Les résultats se trouventdans un objet du typeQueryResults– On accède aux résultatsvia la classe ResultBindingQuery qr1 = new Query("SELECT * WHERE (?s,?p,?o)");qr1.setSource(model);QueryEngine qe = new QueryEngine(qr1);QueryResults results = qe.exec();for(it=results; it.hasNext();) {ResultBinding res = (ResultBinding)it.next() ;    String x = (res.get("s").toString());    String y = res.get("o").toString();    System.out.println(x.substring(x.indexOf(#)+1) +" parent de "+y.substring(y.indexOf(#)+1));}
  20. 20. O.Curé [274 ]Exercice 2● Toujours le fichier RDF de lexercice 1,rédiger les requêtes RDQL suivantes :– Afficher les cours– Afficher les étudiants– Afficher les enseignants– Afficher lenseignant du Cours1
  21. 21. O.Curé [275 ]Opérations sur les modèles● On peut réaliser les opérations ensemblistessuivantes sur les modèles : union,intersection et différence.● Exemple pour lunionModel modelI = ModelFactory.createDefaultModel();modelI.read(instNS);Model modelS = ModelFactory.createDefaultModel();modelS.read(schemaNS);Model model = modelS.union(modelI);model.write(System.out);● Idem pour intersection et difference
  22. 22. O.Curé [276 ]Inférence● Jena propose de nombreusesfonctionnalités pour réaliser desinférences.● Lire le document “Inference engineuser manual” accessible depuis la pageDocumentation du site de Jena.
  23. 23. O.Curé [277 ]Exercice 3● Sur le fichier RDFS (schemaEtud.rdf)afficher toutes les sous-classes de laclasse Personne● Rédiger une classe “Thesard”, sous-classe de la classe “Etudiant”.● Demander à nouveau les sous-classesde la classe Personne.
  24. 24. O.Curé [278 ]Exercice 4● Réaliser lunion du modèle du schémaRDF et du modèle des instances RDF.● Ecrire le code permettant dobtenir lesinstances de la classe Etudiant puisEnseignant.● Ecrire un modèle permettant linférenceet écrire le code permettant dobtenirles instances de la classe Personne.
  25. 25. O.Curé [279 ]SPARQL
  26. 26. O.Curé [280 ]Introduction● Query language for RDF data● Basic graph pattern matching● Result forms:– SELECT, CONSTRUCT, DESCRIBE, ASK● with filters to restrict values● Solution modifiers:– ORDER BY, LIMIT/OFFSET, DISTINCT,REDUCED
  27. 27. O.Curé [281 ]Patterns● Variables are prefixed with a ?● Patterns use triple forms● Example:SELECT ?s ?p ?oWHERE {?s ?p ?o}● A pattern is a conjunction of triples:{?x rdf:type ex:Person.?x ex:nom ?name}
  28. 28. O.Curé [282 ]Example@prefix person: <http://example/person/> .@prefix foaf: <http://xmlns.com/foaf/0.1/> .person:A foaf:name "Alice" .person:A foaf:mbox <mailto:alice@example.net> .person:B foaf:name "Bob" .PREFIX person: <http://example/person/>PREFIX foaf: <http://xmlns.com/foaf/0.1/>SELECT ?nameWHERE   { ?x foaf:name ?name } name­­­­­­­­­­­ "Bob"   "Alice" 
  29. 29. O.Curé [283 ]Example (2)@prefix person: <http://example/person/> .@prefix foaf: <http://xmlns.com/foaf/0.1/> .person:A foaf:name "Alice" .person:A foaf:mbox <mailto:alice@example.net> .person:B foaf:name "Bob" .PREFIX person: <http://example/person/>PREFIX foaf: <http://xmlns.com/foaf/0.1/>SELECT ?nameWHERE   { ?person foaf:mbox <mailto:alice@example.net> .?person foaf:name ?name .  } name­­­­­­­­­­­ "Alice" 
  30. 30. O.Curé [284 ]Example (3a)@prefix dc: <http://purl.org/dc/elements/1.1/> .@prefix stock: <http://example.org/stock#> .@prefix inv: <http://example.org/inventory#> .stock:book1 dc:title "SPARQL Query Language Tutorial" .stock:book1 inv:price 10 .stock:book1 inv:quantity 3 .stock:book2 dc:title "SPARQL Query Language (2nd ed)" .stock:book2 inv:price 20 ; inv:quantity 5 .stock:book3 dc:title "Moving from SQL to SPARQL" .stock:book3 inv:price 5 ; inv:quantity 0 .stock:book4 dc:title "Applying XQuery" .stock:book4 inv:price 20 ; inv:quantity 8 .
  31. 31. O.Curé [285 ]Example (3b)PREFIX dc: <http://purl.org/dc/elements/1.1/>PREFIX stock: <http://example.org/stock#>PREFIX inv: <http://example.org/inventory#>SELECT ?book ?titleWHERE { ?book dc:title ?title .  ?book inv:price ?price . FILTER ( ?price < 15 ) ?book inv:quantity ?num . FILTER ( ?num > 0 ) }   book          | title                            ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ stock:book1 | "SPARQL Query Language Tutorial"
  32. 32. O.Curé [286 ]Example (4)PREFIX foaf: <http://xmlns.com/foaf/0.1/>SELECT ?name ?nick{ ?x foaf:name ?name .   OPTIONAL {?x foaf:nick ?nick } } name  | nick       ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ "Alice" | "A­online"  "Bob    |@prefix person: <htp://example/person/> .@prefix foaf: <http://xmlns.com/foaf/0.1/> .person :a foaf:name "Alice" .person :a foaf:nick "A-online" .person:b foaf:name "Bob" .t
  33. 33. O.Curé [287 ]OWLWeb Ontology Language6
  34. 34. O.Curé [288 ]OWL● Une recommendation du W3C pour représenterdes ontologies pour le Web Sémantique.● Influences : RDF, DL et les frames● OWL est un langage pour structurer linformationdans des ontologies : définir les concepts dundomaine et les relations liant ces concepts.● OWL permet également de définir les instances.
  35. 35. O.Curé [289 ]OWL● OWL possède 3 sous-langages : OWL Lite, OWLDL and OWL Full● OWL propose plusieurs syntaxes : RDF,OWL/RDF, abstract syntax.● Termes utilisés avec OWL :– Concepts = classes– Rôles = propriétés
  36. 36. O.Curé [290 ]Influences de OWL
  37. 37. O.Curé [291 ]OWL comme une DL
  38. 38. O.Curé [292 ]Syntaxe● OWL/RDF syntax<owl:Class rdf:ID="Cat"><rdfs:subClassOf rdf:resource="#Animal"/></owl:Class>● Abstract syntaxClass (a:Cat partial a:Animal)
  39. 39. O.Curé [293 ]OWL Lite● OWL Lite ressemble aux Frames : supporte laclassification hiérarchique des classes et propriétés,des contraintes simples● OWL Lite possède moins de constructeurs que OWLDL– Descriptions dans des descriptions– Unions, OneOf, etc..● OWL Lite correspond à DL SHIN(Dn)– Qui est décidable– Avec des implémentations efficaces.
  40. 40. O.Curé [294 ]OWL DL● Expressivité riche en gardant lacomplétude computationelle et ladécidabilité.● Ne permet pas toute la libertésyntaxique de RDF :– Ex : une classe ne peut être une propriétéou une instance, une propriété ne peutêtre une classe ou une instance.● Correspondence avec la DL SHOIN(D)
  41. 41. O.Curé [295 ]OWL DL (2)● 40 primitives : 16 pour les classes et 24pour les propriétés.● Classes pour définir des classes et desrestrictions :– owl:Class = spécialisation de rdfs:Class– owl:Restriction = spécialisation deowl:Class pour définir des restrictions surdes classes (existencielle, universelle,“number restrictions”), etc.).
  42. 42. O.Curé [296 ]Eléments du langage● Classes pour définir des propriétés :– owl:ObjectProperty, owl:DatatypeProperty,owl:TransitiveProperty,owl:SymmetricProperty,owl:FunctionalProperty,owl:InverseFunctionalProperty (une sousclasse de ObjectProperty pour OWL Lite etDL, également une sous-classe dedatatype Property pour OWL Full) sont desspécialisations de rdf:Property
  43. 43. O.Curé [297 ]Eléments du langage (2)● Classes pour déclarer linégalité entreindividus :– owl:AllDifferent pour spécifier que desindividus sont différents.– Nécessaire car OWL ne suppose pas UNA– Donc 2 définitions dindividus avec desidentifiants différents peuventcorrespondre au même individu.
  44. 44. O.Curé [298 ]Eléments du langage (3)● Classes pour lénumération de types de données:– owl:DataRange pour énumérer des donnéesavec des valeurs prédéfinies.● Classes prédéfinies : owl:Thing et owl:Nothing● Classes pour la description dontologie :owl:Ontology● Version des ontologies : owl:DeprecatedClass,owl:DeprecatedProperty
  45. 45. O.Curé [299 ]Eléments du langage (4)● Propriétés pour définir des classes dans OWLLite :– owl:intersectionOf : le codomaine est restreintaux identifiants de classes et restrictions surles propriétés.– Restriction :● owl:AllValuesFrom● owl:SomeValuesFrom● owl:cardinality, owl:minCardinality,owl:maxCardinality avec des valeurs de 0ou 1.
  46. 46. O.Curé [300 ]Eléments du langage (6)● Propriétés pour définir des classes dans OWL DL:– owl:intersectionOf, owl:unionOf,owl:complementOf (négation) sont sansrestriction sur le codomaine.– owl:OneOf pour définir des collectionsdindividus● Restrictions :– Entier naturel pour les cardinalités– owl:hasValue
  47. 47. O.Curé [301 ]Eléments du langage (7)● Pour OWL Lite :– owl:inverseOf pour définir linverse dunepropriété– owl:sameAs, owl:equivalentClass,owl:equivalentProperty,owl:sameIndividualAs pour définir deséquivalences entre des ressources, desclasses, des propriétés et des individus.– owl:differentFrom pour définir que 2individus sont différents
  48. 48. O.Curé [302 ]Eléments du langage (8)● Pour OWL Lite :– owl:distinctMembers. A utiliser avecowl:AllDifferent pour définir une listedinstances où les éléments sont différentsles uns des autres.● Pour OWL DL :– owl:disjointWith pour définir que desclasses sont disjointes.
  49. 49. O.Curé [303 ]
  50. 50. O.Curé [304 ]OWL Full● Très expressif (méta-classes, classescomme valeur dobject property).● Profite de toute la liberté syntaxique deRDF– Une classe peut être traitée comme unensemble dindividus et comme uneclasse.● Pas dalgo efficace pour leraisonnement.
  51. 51. O.Curé [305 ]Defining n-ary relations● Problem: how to represent n-aryrelations in RDF/OWL● 2 different patterns :– introduce a new class for a relation– using lists of arguments in a relation.
  52. 52. O.Curé [306 ]New class for a relation● For example :
  53. 53. O.Curé [307 ]New class for a relation● This approach is useful in the case of– additional attributes describing a relation– different aspects of the same relation– n -ary relation with no distinguishedparticipants, e.g. someone buys in aparticular book, in a shop, at a given pricefor a specific purpose.
  54. 54. O.Curé [308 ]Lists for arguments of arelation● Caution : using the rdf:List vocabularyin OWL would have put the ontology inOWL Full.
  55. 55. O.Curé [309 ]Lists for arguments of arelation (2)● The following ontology is in OWL Lite:
  56. 56. O.Curé [310 ]Outils pour concevoir desontologies● Open-source :– KAON , OilEd, OntoEdit, Ontolingua,OntoSaurus, Protégé, WebODE, WebOnto
  57. 57. O.Curé [311 ]Protégé
  58. 58. O.Curé [312 ]Introduction● Un éditeur dontologies et de bases deconnaissances● Open-source● Disponible à lURL :http://www-protege.stanford.edu/● Développé à lUniversité de Stanford enJava● Supporte de nombreux plug-ins.
  59. 59. O.Curé [313 ]Historique● Début des années 90 : Protégé II– Environnement pour lingénierie desconnaissances permettant de définir des modèleset de générer des GUI. Version pour NeXTSTEP.● Milieu des 90s : ProtégéWin– Version pour Windows● Fin des 90s : Protégé2000– Version Java, Open-source– Développement de plug-ins● 2003 : Protégé (à partir de la version 2.0)– Support de OWL.
  60. 60. O.Curé [314 ]Plateforme pour plug-ins● Communauté très active. On trouvedes plug-ins pour :– La visualisation– Linférence– Import et export de formats (XML, RDF,DAML+OIL, OWL, CLIPS, Topic Maps).– Conception dIHM– etc..
  61. 61. O.Curé [315 ]Notre environnement● Le plug-in OWL– Une extension de Protégé pour permettre :le chargement, lenregistrement de fichiersOWL, lédition graphique dexpressionsOWL, laccès à des fonctionnalités liées àlinférence (classifier)● Racer
  62. 62. O.Curé [316 ]Démonstration● Créer des classes, des propriétés, desinstances● Lancer la classification avec Racer.● Ecrire et exécuter des requêtes enRDQL.● Visualisation de graphes
  63. 63. O.Curé [317 ]Exercice● Ecrire la terminologie complète delontologie Personne :
  64. 64. O.Curé [318 ]Exercice 1● Ecrire un programme Java qui va afficher les déclarationsde la base de connaissances (Personne)● Ecrire une nouvelle méthode qui va permettre dafficherles sous-classes de la classe Man.● Ecrire une méthode qui va permettre dafficher toutes lesinstances de la Abox.● En vous aidant des tutoriaux sur les inférences avec Jena(que vous devriez déjà avoir étudié) et « using a DIGreasoner with Jena » (DIG = Description LogicImplementation Group), intégrez le raisonneur Racerdans le programme et chargez notre base deconnaissances.
  65. 65. O.Curé [319 ]Exercice 1 (2)● Afficher les instances qui sont des hommes(« Man »).● Afficher les instances qui sont des oncles(« uncle »). Le graphe des instances (générée avecRice) se trouve à ladresse :www.univ-mlv.fr/~ocure/Ex1PersonDLInst.png). Lesdonnées sur les oncles ne sont pas explicites.Regarder le code OWL pour comprendrelinférence : définition de la classe « Uncle », desclasses associées et des instances impliquées.● Définir à laide de manière programmatique en Javala classe suivante « HappyFather » définie commeun père ayant au moins un garçon et une fille.
  66. 66. O.Curé [320 ]Exercice 1 (fin)● Modifier la classe « HappyFather » et ajouter unecontrainte supplémentaire : na quun seul enfant.La base de connaissances contient maintenant uneclasse inconsistante. A laide du tutoriel,programmer lafficher des classes inconsistances.

×