Voici la 4e partie de ma traduction du fameux tutorial  » How to Publish Linked Data on the Web? « écrit par Chris Bizer (Web-based Systems Group, Freie Universität Berlin, Germany), Richard Cyganiak (Web-based Systems Group, Freie Universität Berlin, Germany) et Tom Heath (Knowledge Media Institute, The Open University, Milton Keynes, UK).

4 – Quels vocabulaires dois-je utiliser pour représenter l’information ?

Afin de faciliter le traitement de vos données aux applications clientes, vous devez réutiliser autant que faire se peut les termes de vocabulaires bien connus. Vous ne devez définir de nouveaux termes vous-même que si vous ne trouvez pas les termes requis dans les vocabulaires existants.

4.1 – Réutilisation des termes existants

L’ensemble des vocabulaires bien connus évolue dans la communauté du Web sémantique. Pour vérifier si vos données peuvent être représentées en utilisant des termes de ces vocabulaires avant d’en définir de nouveaux, commencez par regarder ici :

Une liste plus complète de vocabulaires bien connus est maintenue par le projet communautaire W3C SWEO Linking Open Data dans le wiki ESW. Une liste des 100 espaces de nom RDF les plus courants (août 2006) est fournie par UMBC eBiquity Group.

Il est courant de mélanger des termes de vocabulaires différents. Nous recommandons particulièrement l’utilisation des propriétés rdfs:label et foaf:depiction chaque fois que possible, car ces termes sont bien utilisés par les applications clientes.

Si vous avez besoin des références URI pour des lieux géographiques, des domaines de recherche, des thèmes généraux, des artistes, des livres ou des CD, vous devriez considérer l’utilisation des URI de sources de données présentes dans le projet communautaire W3C SWEO Linking Open Data, par exemple, Geonames, DBpedia, Musicbrainz, dbtune ou RDF Book Mashup. Les deux principaux avantages à utiliser des URI à partir de ces sources de données sont les suivants :

  1. Les URI sont déréférençables, cela signifie qu’une description de ce concept peut être trouvée sur le Web. Par exemple, en utilisant l’URI DBpedia http://dbpedia.org/page/Doom pour identifier le jeu vidéo Doom vous obtenez une description détaillée du jeu, y compris les résumés en 10 langues différentes et de diverses classifications.
  2. Les URI sont déjà liés à des URI d’autres sources de données. Par exemple, vous pouvez naviguer à partir de l’URI DBpedia http://dbpedia.org/resource/Berlin vers des données sur Berlin fournies par Geonames et Eurostat. Ainsi, en utilisant des URI de ces ensembles de données, vous reliez vos données grâce à un réseau de sources de données dense et en croissance rapide .

Une liste plus étendue d’ensembles de données avec des URI déréférençables est maintenue par le projet de la communauté Linking Open Data dans le wiki ESW.

Dans les profils FOAF de Tim Berners-Lee et Ivan Herman, vous trouverez de bons exemples sur la façon dont des termes de différents vocabulaires bien connus sont mélangés au sein d’un seul document et sur la manière de réutiliser des URI existants.

4.2 – Comment définir les conditions ?

Lorsque vous ne pouvez pas trouver de bons vocabulaires existants qui couvrent toutes les classes et les propriétés dont vous avez besoin, vous devez définir vos propres termes. La définition de nouveaux termes n’est pas difficile. Les classes et les propriétés RDF sont elles-mêmes des ressources identifiées par des URI et publiées sur le Web. Donc tout ce que nous avons dit à propos de la publication des données liées s’applique à elles aussi.

Vous pouvez définir des vocabulaires RDF en utilisant le langage RDF Vocabulary Description Language 1.0: RDF Schema ou le langage Web Ontology Language (OWL). Pour les introductions aux RDFS, voir la section sur le vocabulaire de documentation dans le tutorial SWAP, et la section très détaillée RDF Schema du Primer RDF. OWL est introduit dans OWL Overview.

Nous donnons ici quelques conseils pour ceux qui sont familiers avec ces langues :

  1. Ne définissez pas un nouveau vocabulaire à partir de zéro, mais complétez les vocabulaires existants avec des termes supplémentaires (dans votre propre espace de noms) pour représenter vos données selon vos besoins.
  2. Définissez pour les humains et pour les machines. Au stade actuel du développement du Web de données, il y a plus de gens que de machines qui viennent visiter votre site, même si le Web de données est a priori plus destiné aux machines. N’oubliez pas d’ajouter de la prose, par exemple rdfs:comment pour chaque terme inventé. Et fournissez toujours une étiquette pour chaque terme qui utilise la propriété rdfs:label.
  3. Faites des termes d’URI dereferenceables. Il est essentiel que les termes d’URI soient déréférenceables afin que les clients puissent rechercher la définition d’un terme. Suivez donc les recettes du W3C sur les meilleures pratiques de la publication de vocabulaires RDF pour faire des termes d’URI déréférenceables.
  4. Faites usage de termes d’autres personnes. L’utilisation de termes d’autres personnes, ou de mapping sur eux, contribue à promouvoir le niveau d’échange de données sur le Web de données, de la même manière que les liens hypertextes construisent le Web de documents. Des propriétés communes pour fournir des telles applications sont rdfs:subClassOf ou rdfs:subPropertyOf.
  5. Faites état explicitement de toutes les informations importantes. Par exemple, indiquez explicitement tous les ranges [c’est le terme anglais] et tous les domaines. N’oubliez pas : les humains peuvent souvent faire des conjectures, mais pas les machines. Ne négligez pas d’informations importantes !
  6. Ne créez pas de termes trop limités, ou fragiles ; laissez une certaine souplesse pour permettre les évolutions. Par exemple, si vous utilisez des fonctionnalités OWL complètes pour définir votre vocabulaire, vous pourrez avoir des choses qui conduisent à des conséquences non désirées et à des incohérences quand quelqu’un d’autre utilisera vos références dans une définition de vocabulaire différent. Ainsi, à moins que vous sachiez exactement ce que vous faites, utilisez RDF-Schema pour définir des vocabulaires.

L’exemple suivant contient la définition d’une classe et une propriété en suivant les règles ci-dessus. L’exemple utilise la syntaxe de Turtle. Les déclarations d’espace de noms ont été omises.

# Définition de la classe « Lover »

<http://sites.wiwiss.fu-berlin.de/suhl/bizer/pub/LoveVocabulary#Lover>
rdf:type rdfs:Class ;
rdfs:label « Lover »@en ;
rdfs:label « Liebender »@de ;
rdfs:comment « A person who loves somebody. »@en ;
rdfs:comment « Eine Person die Jemanden liebt. »@de ;
rdfs:subClassOf foaf:Person .

# Définition de la propriété « aime »

<http://sites.wiwiss.fu-berlin.de/suhl/bizer/pub/LoveVocabublary#loves>
rdf:type rdf:Property ;
rdfs:label « loves »@en ;
rdfs:label « liebt »@de ;
rdfs:comment « Relation between a lover and a loved person. »@en ;
rdfs:comment « Beziehung zwischen einem Liebenden und einer geliebten Person. »@de ;
rdfs:subPropertyOf foaf:knows ;
rdfs:domain <http://sites.wiwiss.fu-berlin.de/suhl/bizer/pub/LoveVocabulary#Lover> ;
rdfs:range foaf:Person .

Notez que les termes sont définis dans un espace qui est contrôlée par Chris Bizer et qu’elles sont liées au vocabulaire FOAF utilisant des liens rdfs:subPropertyOf et rdfs:subClassOf liens.