Skip to content

Sparql : deuxième pas

18/06/2012

Le billet précédent s’était arrêté sur l’exécution d’une requête Sparql dans Twinkle.14

PREFIX table: <http://www.daml.org/2003/01/periodictable/PeriodicTable#>
SELECT ?name
FROM <http://www.daml.org/2003/01/periodictable/PeriodicTable.owl>
WHERE { ?element table:name ?name. }

Cette requête exploite une source : c’est la ligne FROM. Je reviens donc un peu en arrière pour expliquer la structuration des données dans cette source.

Tableau périodique des éléments

Comme déjà indiqué, je suis ce tutoriel d’apprentissage de Sparql (ce n’est pas forcément le meilleur, c’est juste celui sur lequel je suis tombé et avec lequel j’ai bien accroché)

Les exemples qu’il propose s’appuient sur l’exploitation d’un fichier en ligne : la table périodique des éléments, en RDF (sous forme de triplets, donc).

Traduction partielle et arbitraire du début du tutoriel

(à partir de la page 2, mais vous pouvez lire aussi la page 1)

Le fichier qui décrit le tableau périodique des éléments est un fichier XML. Vous pouvez d’ailleurs l’ouvrir avec XML Copy Editor (par exemple), en choisissant d’ouvrir un fichier (Ctrl+O) et en y collant l’URL de ce fichier : http://www.daml.org/2003/01/periodictable/PeriodicTable.owl

Pour chaque atome du tableau des éléments, le fichier fournit diverses informations : le nom, le symbole (symbol), le poids atomique (atomicWeight), etc

Voici ce que ça donne pour le sodium :

<Element rdf:ID="Na" xmlns="http://www.daml.org/2003/01/periodictable/PeriodicTable#">
    <name>sodium</name>
    <symbol>Na</symbol>
    <atomicNumber>11</atomicNumber>
    <atomicWeight>22.989770</atomicWeight>
    <group rdf:resource="#group_1"/>
    <period rdf:resource="#period_3"/>
    <block rdf:resource="#s-block"/>
    <standardState rdf:resource="#solid"/>
    <color>silvery white</color>
    <classification rdf:resource="#Metallic"/>
    <casRegistryID>7440-23-5</casRegistryID>
</Element>

La première ligne (qui commence par <Element) permet deux choses :

  • indiquer qu’on va appeler toutes les propriétés de cet élément au moyen de son identifiant Na.
  • définir un espace de nom.
    Difficile ici de décrire tout ce qu’impliquent les espaces de noms (j’aurais dû le faire dans ma série XSL, je serais moins embêté maintenant…)
    Si je manipule plusieurs fichiers issus de plusieurs sources, ils peuvent avoir des propriétés <name> qui ne sont pas équivalentes. Chacun aura donc un espace de nom différents, qui utilisera une URL comme identifiant unique. Pour les éléments de ma table, l’URL sera donc : http://www.daml.org/2003/01/periodictable/PeriodicTable#
    L’espace de noms, devant une balise ou un attribut XML, précède toujours le nom de cette balise ou élément du caractère « : ».

Rappel : exemple de triplet

Dans ce contexte, un triplet va par exemple permettre de dire : tel élément a pour nom « sodium »

  • Le « tel élément » utilisera l’identifiant de l’élément (l’attribut rdf:ID="Na")
  • « a pour nom » appellera la propriété name, avec l’espace de nom nécessaire :
    Il n’est pas nécessaire de toujours rappeler l’intégralité de l’URL : on peut l’exprimer comme dénominateur commun en début de fichier, puis, pour indiquer la propriété name :
    table:name
  • « sodium » est la chaîne de caractère.

Donc :

<http://www.daml.org/2003/01/periodictable/PeriodicTable#Na> table:name "sodium".

est un triplet exprimé selon la syntaxe turtle.

Remarque :

<Element rdf:ID="Na" xmlns="http://www.daml.org/2003/01/periodictable/PeriodicTable#">
    <name>sodium</name>
</Element>

dit la même chose en RDF/XML

Un peu de SPARQL

Sparql va permettre d’extraire des informations de ce fichier.

Par exemple, la liste des elements qui ont une propriété Name. Voici la requête déjà indiquée :

PREFIX table: <http://www.daml.org/2003/01/periodictable/PeriodicTable#>
SELECT ?name
FROM <http://www.daml.org/2003/01/periodictable/PeriodicTable.owl>
WHERE { ?element table:name ?name. }

Vous pouvez sauvegarder la requête (bouton Save au-dessus de la zone de saisie).

Vous pouvez aussi sauvegarder les résultats :

Si vous enregistrez les résultats sur votre ordinateur, vous obtiendrez un fichier qui, ouvert avec un simple éditeur de texte (Notepad++ par exemple), contient :

One Comment

Trackbacks

  1. Sparql : 3e pas (transposition sur une notice IdRef) « Bibliothèques [reloaded]

Les commentaires sont fermés.

%d blogueurs aiment cette page :