Consultation de graphes RDF : SPARQL



Documents pareils
LES TECHNOLOGIES DU WEB APPLIQUÉES AUX DONNÉES STRUCTURÉES

Plan... as Architecture des Systèmes d Information. Constats. as Architecture des Systèmes d Information

Évaluation d une architecture de stockage RDF distribuée

Le Web de Données Dan VODISLAV Université de Cergy-Pontoise Master Informatique M2 Plan

Web Sémantique. Examen

Catalogue des formations Edition 2015

JDev Atelier Datalift

Linked Open Data. Le Web de données Réseau, usages, perspectives. Eric Charton. Eric Charton

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

XML par la pratique Bases indispensables, concepts et cas pratiques (3ième édition)

Je catalogue, tu FRBRises, il/elle googlise. L évolution des catalogues et les bibliothécaires Vendredi 29 mars 2013 Manufacture des tabacs

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Le Langage SQL version Oracle

MEMOIRE DE STAGE. Amélioration de l'outillage support à une méthodologie de "Cartographie Sémantique"

Vues d ensembles de documents RDF

Module BDWEB. Maîtrise d informatique Cours 9 - Xquery. Anne Doucet. anne.doucet@lip6.fr

Le langage SQL Rappels

OpenPaaS Le réseau social d'entreprise

SQL Parser XML Xquery : Approche de détection des injections SQL

Bases de données relationnelles

Evolution et architecture des systèmes d'information, de l'internet. Impact sur les IDS. IDS2014, Nailloux 26-28/05/2014

OASIS Date de publication

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

BASE DE DONNÉES XML NATIVE

Plateforme PAYZEN. Définition de Web-services

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Paginer les données côté serveur, mettre en cache côté client

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

La base de données XML exist. A. Belaïd

Programmer en JAVA. par Tama

Java Licence Professionnelle CISII,

Java DataBaseConnectivity

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW

Approche de couplage de BD et d ontologie pour l aide à la décision sémantique : contribution pour la satisfaction des requêtes SQL et SPARQL.

Mysql. Les requêtes préparées Prepared statements

Accès à l'information XML par des requêtes XQuery au travers de son XSchema

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Cours Base de données relationnelles. M. Boughanem, IUP STRI

4. SERVICES WEB REST 46

clef primaire ; clef étrangère ; projection ; restriction ; jointure ; SQL ; SELECT ; FROM ; WHERE

Apache Camel. Entreprise Integration Patterns. Raphaël Delaporte BreizhJUG

RDF Schema pour les ontologies légères

Extension SSO Java. Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java.

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

MS SQL Express 2005 Sauvegarde des données

Les structures de données. Rajae El Ouazzani

Bases de données et fournisseurs de contenu

Définition des Webservices Ordre de paiement par . Version 1.0

Introduction à ElasticSearch

Compte-rendu re union Campus AAR 3 mars 2015

Introduction à JDBC. Accès aux bases de données en Java

Langage SQL : créer et interroger une base

FileMaker Server 11. Publication Web personnalisée avec XML et XSLT

Thierry BOULANGER. par la pratique. Bases indispensables Concepts et cas pratiques XML. 3 ième édition. Nouvelle édition

Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications

Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184. Frédéric BERTIN

Programmation Par Objets

Introduction au Système de Gestion de Base de Données et aux Base de Données

Gestion de base de données

Cours 8 Not Only SQL

Master I Génie Logiciel

INTRODUCTION À PYRAMID Gaël Bearstech. Crédits: Blaise Laflamme

Bases de données cours 4 Construction de requêtes en SQL. Catalin Dima

Mysql avec EasyPhp. 1 er mars 2006

Connexion à SQL Server 2005 à partir du serveur d application SJSAS 9 Utilisation d une interface JDBC

Cours Bases de données

PHP 5. La base de données MySql. A. Belaïd 1

Business Intelligence

Initiation à la Programmation en Logique avec SISCtus Prolog

Paris Airports - Web API Airports Path finding

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

Présentation du PL/SQL

BASE DE DONNÉES XML NATIVE

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Exemples de reque tes dans data.bnf.fr

Big Data. Cyril Amsellem Consultant avant-vente. 16 juin Talend

Bases de Données NoSQL

PHP 4 PARTIE : BASE DE DONNEES

Raja Bases de données distribuées A Lire - Tutoriel

Une approche langage pour la gestion de données dans les systèmes de méta-modélisation

SQL Historique

Premiers Pas en Programmation Objet : les Classes et les Objets

données en connaissance et en actions?

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework

Java et les bases de données

Cours de Master Recherche

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

Les bases de données

Entity API. Alexandre Todorov, Felip Manyer i Ballester. Montpellier, le 17 septembre 2014

PHP. PHP et bases de données

TD3: tableaux avancées, première classe et chaînes

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Programmation MacOSX / ios

SQL Serveur Programme de formation. France Belgique Suisse - Canada. Formez vos salariés pour optimiser la productivité de votre entreprise

Transcription:

I.Mougenot LIRMM Mastère informatique 2014 Mastère informatique 2014 1 /

Préalable Tirer parti d un modèle RDF Comment tirer parti au mieux d un graphe RDF? Exploiter des patrons sur les triplets (exemples avec l API RDF de Jena) Recours à différents langages de requêtage : RQL (RDF Query Language) - syntaxe proche de OQL RDQL (W3C) - SeRQL syntaxe proche de SQL Utiliser XML: XSLT, XPath, XQuery SPARQL - Recommandation du W3C depuis 2008 Mastère informatique 2014 2 /

Manipulation modèle RDF Exemple Selector dans Jena Poser des filtres sur les déclarations du modèle StmtIterator stmti = m.liststatements( new SimpleSelector(null,p, (RDFNode) null)); while (stmti.hasnext()) {Statement sti = stmti.nextstatement(); Resource rssi = (Resource) sti.getsubject(); Resource rsoi = (Resource) sti.getobject(); System.out.println (rssi.getlocalname()+" " +rsoi.getlocalname());} Listing 1: Notion de filtre avec selector Mastère informatique 2014 3 /

Manipulation modèle RDF Exemple Naviguer dans les classes Poser des filtres sur les déclarations du modèle ExtendedIterator<OntClass> classes = m.listclasses(); while (classes.hasnext()) {OntClass thisclass = (OntClass) classes.next(); if (thisclass.isuriresource()) System.out.println("UriRef "+ thisclass.getlocalname()); else if (thisclass.isanon()) System.out.println("classe anonyme "+ thisclass.getid()); ExtendedIterator instances = thisclass.listinstances(); while (instances.hasnext()) {Individual thisinstance = (Individual) instances.next(); System.out.println(" i "+ thisinstance.getlocalname()); } } Listing 2: Naviguer dans les triplets Mastère informatique 2014 4 /

SPARQL SPARQL, Simple Protocol and RDF Query Language Standard W3C pour faciliter l interrogation de sources de données distribuées, dernière évolution SPARQL 1.1 langage de requête pour RDF (calcul d une requête par appariement de graphes) protocole : spécification pour émettre et envoyer des requêtes SPARQL (services Web) vers des serveurs dédiés et en recevoir les résultats formats divers dont XML (requêtes de type SELECT et ASK) ou RDF (requêtes de type CONSTRUCT et DESCRIBE) pour l affichage des résultats obtenus Mastère informatique 2014 5 /

Illustration SPARQL A la fois requêtage et communication PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT?name?website FROM <http://planetrdf.com/bloggers.rdf> WHERE {?person foaf:weblog?website ; foaf:name?name. } http://.../qps? query-lang=http://www.w3.org/tr/rdf-sparql-query/ &graph-id=http://planetrdf.com/bloggers.rdf &query=prefix foaf: <http://xmlns.com/foaf/0.1/... Extrait de : http://www.dajobe.org/talks/200603-sparql-stanford/ Listing 3: Requête et protocole Mastère informatique 2014 6 /

SPARQL Langage de requête SPARQL en tant que langage d interrogation Quatre formes de requêtage (LMD) 1 SELECT : rechercher des ressources du modèle, qui seront ensuite souvent restituées sous un format tabulaire 2 ASK : indique si la requête retourne un résultat non vide 3 DESCRIBE : obtenir des informations à propos de ressources présentes dans le modèle (le moins exploité des quatre) 4 CONSTRUCT : la requête sert de template pour construire de nouveaux graphes RDF en guise de résultats Prise en charge des autres opérations CRUD depuis SPARQL 1.1 Mastère informatique 2014 7 /

SPARQL Langage de requête ordre SELECT : exploiter des patterns de graphes PREFIX indique l adresse (espace de noms) d un schéma pouvant être exploité ensuite dans la construction de la requête SELECT...[FROM]...WHERE retourne les ressources qui sont associées aux variables liées dans la clause WHERE UNION groupes de patterns de graphes alternatifs (correspond à au au moins un des graphes précisés) OPTIONAL groupes de patterns de graphes dont un au moins esr requis et un au moins est optionnel (si l information est présente) FILTER rajouter des conditions devant être satisfaites notamment sur les littéraux - des fonctions peuvent venir se surajouter. concaténation de groupes de patterns de graphes Mastère informatique 2014 8 /

SPARQL Langage de requête ordre SELECT : graphe requête Appariement de graphes pour trouver des occurrences dans le graphe source - éléments manipulés : variables, ressource URI ou anonyme, littéraux (constantes) Figure: Généralités sur une requête SELECT Mastère informatique 2014 9 /

Exemples Exemples tirés de la documentation ARQ - Jena Présentation du vocabulaire exemple <rdf:rdf xmlns:rdf= http://www.w3.org/1999/02/22-rdf-syntax-ns# xmlns:vcard= http://www.w3.org/2001/vcard-rdf/3.0# xmlns:info= http://somewhere/peopleinfo# > <rdf:description rdf:about="http://somewhere/rebeccasmith/"> <vcard:fn>becky Smith</vCard:FN> <info:age>23</info:age> <vcard:n rdf:parsetype="resource"> <vcard:family>smith</vcard:family> <vcard:given>rebecca</vcard:given> </vcard:n> </rdf:description> Listing 4: Jeu de données RDF Mastère informatique 2014 10 /

Exemples Exemples tirés de la documentation ARQ - Jena Exemple d interrogation simple, les variables à lier sont préfixées par? ou $ et peuvent correspondre à tout type noeud présent dans le modèle RDF SELECT?person WHERE {?person <http://www.w3.org/2001/vcard-rdf/3.0#fn> "John Smith" } PREFIX vcard: <http://www.w3.org/2001/vcard-rdf/3.0#> SELECT?person WHERE {?person vcard:fn "John Smith" } Listing 5: Notion de variable Mastère informatique 2014 11 /

Exemples Exemples tirés de la documentation ARQ - Jena Plusieurs variables PREFIX vcard: <http://www.w3.org/2001/vcard-rdf/3.0#> SELECT?person?fname WHERE {?person vcard:fn?fname} Listing 6: Illustration variables Mastère informatique 2014 12 /

Exemples Exemples tirés de la documentation ARQ - Jena BGP - Basic Graph Pattern - Ensemble collection de triplets - Le. : conjonction entre patterns PREFIX vcard: <http://www.w3.org/2001/vcard-rdf/3.0#> SELECT?givenName WHERE {?y vcard:family "Smith".?y vcard:given?givenname. } Listing 7: Illustration conjonction de patterns Mastère informatique 2014 13 /

Exemples Exemples tirés de la documentation ARQ - Jena Nœud anonyme consultable comme toute autre ressource PREFIX vcard: <http://www.w3.org/2001/vcard-rdf/3.0#> SELECT?y?givenName WHERE {?y vcard:family "Smith".?y vcard:given?givenname. } Listing 8: Illustration noeud anonyme Mastère informatique 2014 14 /

Exemples Exemple Primitives RDF/RDFS Exprimer des requêtes sur les représentations sous-jacentes RDF, RDFS PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> SELECT?subject?object WHERE {?subject rdfs:subclassof?object } PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> SELECT?subject?object WHERE {?subject rdf:type?object } Listing 9: Consulter les modèles sous-jacents Mastère informatique 2014 15 /

Exemples Accès au jeu de données Accéder à l ensemble du jeu de données SELECT * {?s?p?o } Listing 10: Requête ouverte Mastère informatique 2014 16 /

Exemple Union Exemples Clause UNION : réaliser une union de graphes alternatifs PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX famille: <http://www.lirmm.fr/famille#> SELECT?individu WHERE {{?individu rdf:type family:femme } UNION {?individu rdf:type family:homme }} Listing 11: énoncé UNION Mastère informatique 2014 17 /

Exemples Exemple OPTIONAL Clause OPTIONAL : restituer l information potentiellement associée à des sous-graphes PREFIX info: <http://somewhere/peopleinfo#> PREFIX vcard: <http://www.w3.org/2001/vcard-rdf/3.0#> SELECT?name?age WHERE {?person vcard:fn?name. OPTIONAL {?person info:age?age } } Listing 12: énoncé OPTIONAL Mastère informatique 2014 18 /

Poser des filtres Exemples syntaxe accompagnant les filtres (FILTER) - conditions facilitant le rejet de résultats non souhaités Opérateurs logiques (OR, AND, NOT) : &&,,! pour construire des expressions à évaluer Opérateurs arithmétiques : +, -, *, / Opérateurs de comparaison =,!=, <, >, <=, >= Tests SPARQL : isuri, isblank, isliteral, bound Accesseurs SPARQL : str, lang, datatype Autres opérateurs : sameterm, langmatches, regex Mastère informatique 2014 19 /

Exemples Exemple Filtre et fonction regex Exploiter les expressions régulières FILTER regex(?x, "pattern" [, "flags"]) PREFIX vcard: <http://www.w3.org/2001/vcard-rdf/3.0#> SELECT?g WHERE {?y vcard:given?g. FILTER regex(?g, "r", "i") } Listing 13: Illustration FILTER Mastère informatique 2014 20 /

Exemples Exemple Filtre et comparaison Personnes d au moins 24 ans PREFIX info: <http://somewhere/peopleinfo#> SELECT?resource WHERE {?resource info:age?age. FILTER (?age >= 24) } Listing 14: Illustration FILTER Mastère informatique 2014 21 /

Filtre + facultatif Exemples Personnes et eventuellement leur âge quand plus de 24 ans PREFIX info: <http://somewhere/peopleinfo#> PREFIX vcard: <http://www.w3.org/2001/vcard-rdf/3.0#> SELECT?name?age WHERE {?person vcard:fn?name. OPTIONAL {?person info:age?age. FILTER (?age > 24 ) } } Listing 15: Illustration FILTER et OPTIONAL Mastère informatique 2014 22 /

Exemples Filtre + facultatif + Variable non liée Personnes dont l âge est inconnu ou qui ont plus de 24 ans PREFIX info: <http://somewhere/peopleinfo#> PREFIX vcard: <http://www.w3.org/2001/vcard-rdf/3.0#> SELECT?name?age WHERE {?person vcard:fn?name. OPTIONAL {?person info:age?age. } FILTER (!bound(?age)?age > 24 ) } Listing 16: FILTER Mastère informatique 2014 23 /

Exemple Filtre Exemples Exploiter les filtres avec opérateurs logiques SELECT DISTINCT?b?start?end WHERE {?b a b:employeebooking ; b:startdate?start ; b:enddate?end. FILTER ( (?start > "2008-03-05T09:00:00"ˆˆxsdt:dateTime &&?start < "2008-03-07T09:00:00"ˆˆxsdt:dateTime) (?start < "2008-03-05T09:00:00"ˆˆxsdt:dateTime &&?end > "2008-03-05T09:00:00"ˆˆxsdt:dateTime) ) } Listing 17: Opérateurs logiques Mastère informatique 2014 24 /

Exemples Evolutions avec SPARQL 1.1 Négation par l échec avec SPARQL 1.0 Prédicats OPTIONAL et BOUND # Personnes avec age non renseigne SELECT?person WHERE {?person vcard:fn?fname. OPTIONAL {?person info:age?age }. FILTER (!bound(?age)) } Listing 18: Négation par l échec Mastère informatique 2014 25 /

Exemples Evolutions avec SPARQL 1.1 Not Exists avec SPARQL 1.1 Prédicats OPTIONAL et BOUND # Personnes avec age non renseigne "SELECT?person WHERE {?person vcard:fn?fname. FILTER NOT EXISTS {?person info:age?age } } Listing 19: NOT EXISTS Mastère informatique 2014 26 /

Test de vacuité Exemples Evolutions avec SPARQL 1.1 Prédicats Exists et Not Exists avec filter # Personnes qui connaissent d autres personnes au temps t PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT?name WHERE {?x foaf:givenname?name. FILTER (EXISTS {?x foaf:knows?who }) } Listing 20: EXISTS Mastère informatique 2014 27 /

Partitionnement Exemples Evolutions avec SPARQL 1.1 Syntaxe Group By avec opérations count, sum PREFIX vcard: <http://www.w3.org/2001/vcard-rdf/3.0#> SELECT?person (COUNT(?tel) AS?nbreTel) " + WHERE {?person vcard:fn?fname.?person vcard:tel?tel. } " + GROUP BY?person Listing 21: Illustration Partitionnement Mastère informatique 2014 28 /

Partitionnement Exemples Evolutions avec SPARQL 1.1 Syntaxe Group By avec condition having PREFIX vcard: <http://www.w3.org/2001/vcard-rdf/3.0#> SELECT?person (COUNT(?tel) AS?nbreTel) " + WHERE {?person vcard:fn?fname.?person vcard:tel?tel. } " + GROUP BY?person HAVING(COUNT(?tel) > 3) Listing 22: Illustration Partitionnement avec condition Mastère informatique 2014 29 /

Exemples Evolutions avec SPARQL 1.1 SPARQL avec Jena : exemple partiel String prolog2 = "PREFIX rdf: <"+RDF.getURI()+">" ; String querystring = prolog1 + NL + prolog2 + NL + "SELECT?ind WHERE {?ind rdf:type family:femme }" ; Query query = QueryFactory.create(queryString) ; QueryExecution qexec = QueryExecutionFactory.create(query, m) ; try { ResultSet rs = qexec.execselect() ; for ( ; rs.hasnext() ; ) { QuerySolution rb = rs.nextsolution() ; RDFNode y = rb.get("ind");...} Listing 23: Illustration RDF/XML Mastère informatique 2014 30 /

Exemples Evolutions avec SPARQL 1.1 SPARQL avec Jena : exemple partiel String prolog2 = "PREFIX rdf: <"+RDF.getURI()+">" ; String querystring = prolog1 + NL + prolog2 + NL + "SELECT?ind WHERE {?ind rdf:type family:femme }" ; Query query = QueryFactory.create(queryString) ; QueryExecution qexec = QueryExecutionFactory.create(query, m) ; query.serialize(new IndentedWriter(System.out,true)) ; try { ResultSet rs = qexec.execselect() ; ResultSetFormatter.out(System.out,rs,query); } finally { qexec.close() ; } Listing 24: Illustration Jena et ARQ Mastère informatique 2014 31 /

Exemples Evolutions avec SPARQL 1.1 SPARQL avec Jena : exemple partiel import com.hp.hpl.jena.rdf.model.anonid;... import com.hp.hpl.jena.rdf.model.rdfvisitor; public class Skos_UnVisiteur implements RDFVisitor { public Object visitblank(resource r, AnonId id) { System.out.println("anon: " + id); return null;} public Object visituri(resource r, String uri) { System.out.println("qualified name : " + r.getlocalname()); return null;} public Object visitliteral(literal l) { System.out.println(l); return null;}} Listing 25: Illustration Jena et ARQ Mastère informatique 2014 32 /

Exemples Evolutions avec SPARQL 1.1 Exemple CONSTRUCT Restituer une portion de modèle au format RDF CONSTRUCT {?person info:nomcomplet?fname } WHERE {?person vcard:fn?fname } Listing 26: Illustration CONSTRUCT Mastère informatique 2014 33 /

Exemples Evolutions avec SPARQL 1.1 Exemple CONSTRUCT Exemple de résultat @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>. @prefix xsd: <http://www.w3.org/2001/xmlschema#>. @prefix owl: <http://www.w3.org/2002/07/owl#>. @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>. @prefix vcard: <http://www.w3.org/2001/vcard-rdf/3.0#>. @prefix info: <http://somewhere/peopleinfo#>. info:johnsmith info:nomcomplet "John Smith". info:mattjones info:nomcomplet "Matt Jones". info:rebeccasmith info:nomcomplet "Becky Smith". info:sarahjones info:nomcomplet "Sarah Jones". Listing 27: Illustration CONSTRUCT Mastère informatique 2014 34 /

Exemples Evolutions avec SPARQL 1.1 Exemple CONSTRUCT Implémentation Jena String rdq = prolog1 + NL + prolog2 + NL + prolog3 + NL + "CONSTRUCT {?person info:nomcomplet?fname } WHERE {?person vcard:fn?fname }" ; Query query = QueryFactory.create(rdq); QueryExecution qexec = QueryExecutionFactory.create(query, m); Model results = qexec.execconstruct(); results.write(system.out, "N3"); qexec.close(); Listing 28: Illustration CONSTRUCT Mastère informatique 2014 35 /

Exemple ASK Exemples Evolutions avec SPARQL 1.1 Evaluer la validité d une requête sur un modèle ASK {?person vcard:fn?fname } Listing 29: Illustration ASK avec pour résultats : Ask result = TRUE Mastère informatique 2014 36 /

Exemple ASK Exemples Evolutions avec SPARQL 1.1 Implémentation Jena String rdq = prolog1 + NL + prolog2 + NL + prolog3 + NL + "ASK {?person vcard:fn?fname }" ; Query query = QueryFactory.create(rdq); QueryExecution qexec = QueryExecutionFactory.create(query, m); boolean b = qexec.execask(); System.out.println("Ask result = " + ((b)?"true":"false")); qexec.close(); Listing 30: Illustration ASK Mastère informatique 2014 37 /

Exemples Evolutions avec SPARQL 1.1 Exemple DESCRIBE Restituer la description d une ressource DESCRIBE?person WHERE {?person vcard:fn?fname } Listing 31: Illustration DESCRIBE Mastère informatique 2014 38 /

Exemples Evolutions avec SPARQL 1.1 Exemple DESCRIBE Exemple de résultat @prefix rdfs:... info:johnsmith info:age "\"25\"ˆˆxsd:integer" ; vcard:fn "John Smith" ; vcard:n [ vcard:family "Smith" ; vcard:given "John" ] ; vcard:tel [ a vcard:work, vcard:voice ; rdf:value "+44 117 555 5555" ] ; vcard:tel [ a vcard:home, vcard:voice ; rdf:value "+44 117 555 7777" ]. Listing 32: Illustration DESCRIBE Mastère informatique 2014 39 /

Exemples Evolutions avec SPARQL 1.1 Exemple DESCRIBE Implémentation Jena // Query string. String rdq = prolog1 + NL + prolog2 + NL + prolog3 + NL + "DESCRIBE?person WHERE {?person vcard:fn?fname }" ; Query query = QueryFactory.create(rdq); QueryExecution qexec = QueryExecutionFactory.create(query, m); Model results = qexec.execdescribe(); results.write(system.out, "N3"); qexec.close(); Listing 33: Illustration DESCRIBE Mastère informatique 2014 /