Outils personnels
User menu

Tutoriel édition de mappings

De Dbpedia.fr.

(Différences entre les versions)
(Édition des mappings : mapping simple)
(supression de la doc migrée vers "Documentation mappings")
 
(6 versions intermédiaires masquées)
Ligne 1 : Ligne 1 :
-
Les mappings sont édités sur le site http://mappings.dbpedia.org, la documentation en Anglais peut être consultée [http://mappings.dbpedia.org/index.php/How_to_edit_DBpedia_Mappings cette la page].
+
Les mappings sont édités sur le site http://mappings.dbpedia.org, ce tutoriel présente le fonctionnalités de base des mappings. Une présentation plus complète est donnée dans la page [[Documentation mappings]], la documentation en Anglais peut être consultée [http://mappings.dbpedia.org/index.php/How_to_edit_DBpedia_Mappings cette la page].
-
Il s'agit d'un mediawiki, différentes données de DBpedia y sont éditées :
 
-
* l'ontologie
 
-
** les classes
 
-
** les propriétés
 
-
** les datatypes
 
-
* les mappings pour faire correspondre les modèles à des classes de l'ontologie et leurs attributs à des propriétés.
 
-
== Édition de l'ontologie ==
+
== En pratique ==
-
=== Édition des classes ===
+
=== Scénario 1: mapping de modèles les plus fréquents ===
-
Chaque classes est définie par un modèle [http://mappings.dbpedia.org/index.php/Template:Class <nowiki>{{Class}}</nowiki>] dans la page dans l'espace de noms ''OntologyClass:'' avec le nom de la classe.  
+
* Choisir un modèle à mapper dans la liste http://mappings.dbpedia.org/server/statistics/fr/. Les plus fréquents apparaissent en premier, un code de couleur indique l'état de complétude du mapping : du vert pour un mapping qui couvre presque toutes les propriétés, au rouge pour un mapping inexistant.
 +
* Cliquer sur le modèle choisi pour aller sur la page d'édition du mapping, si la page existe,  créer la page au besoin.
 +
* Mapper le type de l'instance : voir [[Documentation_mappings#Mapping élémentaire d'un modèle|TemplateMapping]]
 +
* Mapper les propriétés : voir [[Documentation_mappings#Mapping élémentaire d'un modèle|PropertyMapping]]
 +
** Pour voir la liste des propriétés à mapper : enregister la page de mapping et cliquer sur le lien «''properties are not mapped yet.''»
 +
* Tester le mapping : après avoir enregistré la page, cliquer sur le lien «''Test this mapping''».
-
Par exemple la classe ''http://dbpedia.org/ontology/Person'' est définie dans la page http://mappings.dbpedia.org/index.php/OntologyClass:Person qui contient :
 
-
<nowiki>{{Class
 
-
| labels =
 
-
{{label|en|person}}
 
-
{{label|de|Person}}
 
-
{{label|fr|personne}}
 
-
[...]
 
-
| rdfs:subClassOf = Agent
 
-
| owl:equivalentClass = foaf:Person, schema:Person
 
-
}}</nowiki>
 
-
Le nom de la classe est donnée par le nom de la page qui contient ce modèle (ici ''Person''), le modèle contient en plus les champs :
+
=== Scénario 2: à partir d'un article en particulier ===
-
* ''label'' qui permet de donner les labels dans différentes langues en utilisant le modèle [http://mappings.dbpedia.org/index.php/Template:Label <nowiki>{{label}}</nowiki>]. Ces entrées gênèrent des triplets avec la propriété ''rdfs:label''.
+
-
* ''comments'' qui permet de donner une explication plus détaillée de la classe dans différentes langues avec les modèles [http://mappings.dbpedia.org/index.php/Template:Comment <nowiki>{{comment}}</nowiki>]. Ces entrées génèrent des triplets avec la propriété ''rdfs:comment''. Une bonne pratique est d'y inclure une référence à un article Wikipédia ou Wiktionnaire.
+
-
* ''rdfs:subClassOf'', ''owl:equivalentClass'' et ''owl:disjointWith'' pour placer la classe dans la hiérarchie de classes.
+
-
* ''specificProperties'' permet de spécifier l'unité par défaut à utiliser pour les valeurs d'une propriété applicable à cette classe.
+
 +
* L'identifiant de la ressource correspondante dans «DBpedia en français» est obtenu en remplaçant '''<nowiki>http://fr.wikipedia.org/wiki/</nowiki>''' par '''<nowiki>http://fr.dbpedia.org/resource/</nowiki>''' dans l'adresse de l'article Wikipédia.<br/>Par exemple le '''Musée du Louvre''', dont l'article wikipédia a l'adresse '''http://fr.wikipedia.org/wiki/Musée_du_Louvre''' est identifié par la resource DBpedia '''http://fr.dbpedia.org/resource/Musée_du_Louvre'''.
-
''Liens utiles'':
+
* Pour obtenir la liste des modèles utilisés dans l'article, remplacer '''<nowiki>http://fr.dbpedia.org/resource/Musée_du_Louvre</nowiki>''' par la ressource voulue dans la requête SPARQL :
-
* Hiérarchie de classes existantes : http://mappings.dbpedia.org/server/ontology/classes/
+
<nowiki>select ?t where {
-
* Liste des classes sans label en français : http://mappings.dbpedia.org/server/ontology/labels/missing/fr/
+
  <http://fr.dbpedia.org/resource/Musée_du_Louvre>
 +
    <http://fr.dbpedia.org/property/wikiPageUsesTemplate> ?t .
 +
}</nowiki><br/>
 +
Dans l'exemple on obtient trois modèles : http://fr.dbpedia.org/resource/Modèle:Autres_projets, http://fr.dbpedia.org/resource/Modèle:Lien_web,
 +
http://fr.dbpedia.org/resource/Modèle:Infobox_Musée .
 +
La plupart du temps, ce sont les infobox qui nous intéressent : on va éditer le mapping des '''Infobox Musée'''.
 +
* Éditer le modèle comme pour le [[#Scénario 1: mapping de modèles les plus fréquents|Scénario 1]].
 +
* Pour tester le résultat du mapping sur la page voulue, tapper le titre (Ici '''Musée du Louvre''') dans le champ '''Page title''' de la page http://mappings.dbpedia.org/server/extraction/fr/ .
-
=== Édition des propriétés ===
+
=== Chercher une classe ===
-
Chaque propriété est définie dans la page dans l'espace de noms ''OntologyProperty:'' avec le nom de la propriété.  
+
* Le plus rapide est de parcourir la hiérarchie des classes : http://mappings.dbpedia.org/server/ontology/classes/ .
 +
* Pour mapper un modèle, comparer à ce qui est fait pour les autres langues :
 +
** il y a parfois des liens interlangues dans la page de définition du modèle (dont le lien est donné sur la page du mapping). Voir s'il existe des mappings pour ces modèles correspondants dans d'autres langues.
 +
** prendre quelques ressources échantillon et chercher leur type sur les endpoints d'autres chapitres.
-
Deux modèles sont utilisés suivant s'il s'agit
 
-
* d'une propriété ayant pour valeur des instances : [http://mappings.dbpedia.org/index.php/Template:ObjectProperty <nowiki>{{ObjectProperty}}</nowiki>],
 
-
* ou une propriété ayant pour valeur des litéraux : [http://mappings.dbpedia.org/index.php/Template:DatatypeProperty <nowiki>{{DatatypeProperty}}</nowiki>].
 
-
Les champs de ces modèles sont les mêmes, la seule différence concerne les valeurs admises pour le champ ''rdfs:range''.
+
=== Chercher une propriété ===
-
Par exemple pour propriété ''http://dbpedia.org/ontology/locationCity'' est définie dans la page http://mappings.dbpedia.org/index.php/OntologyProperty:LocationCity qui contient :
+
C'est le plus difficile.
-
  <nowiki>{{ObjectProperty
+
* La liste des propriétés est accessible à partir du menu à gauche du wiki de mappings : http://mappings.dbpedia.org/index.php?title=Special:AllPages&namespace=202 . C'est suffisant pour chercher des propriétés suivant les noms possibles (souvent les noms utilisés dans les infobox de Wikipedia en).
-
| labels =
+
* Comparer à ce qui est fait dans d'autres langues. Si vous connaissez le type associé à l'infobox à mapper, par exemple '''http://dbpedia.org/ontology/Museum''', la requête suivante permet d'obtenir les propriétés les plus fréquentes :
-
{{label|en|location city}}
+
  <nowiki>select distinct ?p (count (distinct ?s) as ?nb)
-
{{label|fr|situé dans la ville}}
+
where {
-
[...]
+
?s rdf:type <http://dbpedia.org/ontology/Museum> .
-
| rdfs:domain = Organisation
+
?s ?p ?v .
-
| rdfs:range = City
+
filter(strstarts(str(?p),"http://dbpedia.org/ontology"))
-
| rdfs:subPropertyOf = location
+
}
-
|comments =
+
group by ?p order by desc(?nb)</nowiki>
-
{{comment|en|City the thing is located.}}
+
Cette requête peut être un peu trop lourde pour des modèles fréquemment utilisés, essayer de retirer la ligne avec "''filter''".
-
}}</nowiki>
+
Sinon, ne prenez qu'un échantillon :
-
Le champ ''rdfs:range'' doit contenir une classe définie dans le wiki.
+
<nowiki>select distinct ?p (count (distinct ?s) as ?nb)
 +
where {
 +
{select distinct ?s
 +
  where {?s rdf:type <http://dbpedia.org/ontology/Museum> .} limit 10000
 +
}
 +
?s ?p ?v .
 +
filter(strstarts(str(?p),"http://dbpedia.org/ontology"))
 +
}
 +
group by ?p order by desc(?nb)</nowiki>
 +
* Autre aide : cliquer sur le nom d'une classe dans la hiérarchie de classes, la page contient un tableau avec l'ensemble des propriétés déjà mappées à l'une des instances de cette classe.
-
La propriété ''http://dbpedia.org/ontology/birthDate'' est définie dans la page http://mappings.dbpedia.org/index.php/OntologyProperty:BirthDate qui contient :
 
-
<nowiki>{{DatatypeProperty
 
-
| labels =
 
-
{{label|en|birth date}}
 
-
{{label|fr|date de naissance}}
 
-
{{label|de|Geburtsdatum}}
 
-
[...]
 
-
| rdfs:domain = Person
 
-
| rdfs:range = xsd:date
 
-
| rdf:type = owl:FunctionalProperty
 
-
| owl:equivalentProperty = schema:birthDate
 
-
}}</nowiki>
 
-
Le champ ''rdfs:range'' doit contenir soit un datatype [http://www.w3.org/TR/xmlschema-2/#built-in-datatypes XSD], soit un datatype défini dans le wiki (voir [[#Édition_des_datatypes]]).
 
 +
=== Liens utiles ===
-
Les autres champs sont en commun :
+
Pour l'édition de l'ontologie :
-
* ''labels'' et ''comments'', définis comme pour les classes permettent d'exprimer et d'expliquer la propriété dans différentes langues.
+
* Hiérarchie des classes : http://mappings.dbpedia.org/server/ontology/classes/
-
* ''rdfs:domain'' donne le domaine de la propriété, c'est-à-dire une classe à laquelle doivent appartenir les sujets de la propriété, celle-ci doit avoir été définie dans le wiki.
+
* Labels manquants en français : http://mappings.dbpedia.org/server/ontology/labels/missing/fr/
-
* ''rdfs:subPropertyOf'' et ''owl:equivalentProperty'' permettent de définir des relations de généralisation/spécialisation ou d'équivalence par rapport à d'autres propriétés, celles-ci doivent être définies dans le wiki.
+
-
* ''rdf:type'' permet de préciser le type de la propriété (au delà du type ''owl:ObjectProperty'' / ''owl:DatatypeProperty''). Actuellement seul le type ''owl:FunctionalProperty'' peut être donné, il signifie que la propriété définit une fonction, c'est-à-dire qu'elle ne peut prendre qu'une valeur par sujet.
+
-
 
+
Pour l'édition de mappings :
-
''Liens utiles'' :
+
* Statistiques des mappings en français http://mappings.dbpedia.org/server/statistics/fr/
-
* Liste des propriétés  : http://mappings.dbpedia.org/index.php?title=Special:AllPages&namespace=202
+
* Liste des attribut à mapper pour un modèle : lien «''properties are not mapped yet.''» depuis la page du mapping
-
* Liste des propriétés sans label en français : http://mappings.dbpedia.org/server/ontology/labels/missing/fr/
+
* Vérifier le rendu de l'extraction
-
 
+
** d'un article particulier avec http://mappings.dbpedia.org/server/extraction/fr/
-
 
+
** d'un mapping : lien «''Test this mapping''» depuis la page du mapping
-
 
+
-
=== Édition des datatypes ===
+
-
 
+
-
Les '''datatypes''' (ou types de données) permettent de définir des types de valeurs absents du vocabulaire [http://www.w3.org/TR/xmlschema-2/#built-in-datatypes XSD], notemment pour définir des unités (centimètre, litre, ...)
+
-
 
+
-
Chaque type de donnée est définie par un modèle [http://mappings.dbpedia.org/index.php/Template:Datatype <nowiki>{{Datatype}}</nowiki>] dans la page dans l'espace de noms ''Datatype:'' avec le nom du type de donnée.  
+
-
 
+
-
Par exemple la classe ''http://dbpedia.org/ontology/Currency'' est définie dans la page http://mappings.dbpedia.org/index.php/Datatype:Currency qui contient :
+
-
<nowiki>{{Datatype
+
-
|labels =
+
-
{{label|en|Currency}}
+
-
{{label|fr|Monnaie}}
+
-
[...]
+
-
}}</nowiki>
+
-
 
+
-
 
+
-
Liens utiles :
+
-
* Liste des datatypes http://mappings.dbpedia.org/index.php?title=Special:AllPages&namespace=206
+
-
* Liste des datatypes sans label en français : http://mappings.dbpedia.org/server/ontology/labels/missing/fr/
+
-
 
+
-
 
+
-
 
+
-
== Édition des mappings ==
+
-
 
+
-
=== Principe ===
+
-
 
+
-
Les modèles (''template'' en anglais), en particulier les infobox sont utilisés pour donner des informations factuelles sur les éléments décrits.
+
-
Différents modèles sont utilisés suivant le type du sujet décrit (Artiste, Batiment, Évènement ...)
+
-
 
+
-
Chaque modèle contient une liste d'attributs qui contiennent les valeurs décrivant le sujet.
+
-
La signification des attributs dépend du modèle, par exemple dans les [http://fr.wikipedia.org/wiki/Modèle:Infobox_Musée Infobox Musée], l'attribut '''pays''' désigne l'emplacement du musée, alors que dans les [http://fr.wikipedia.org/wiki/Modèle:Infobox_Cycliste Infobox Cycliste] il désigne la nationalité sportive du cycliste.
+
-
 
+
-
Les mappings permettent deux choses :
+
-
* typer les instances en associant une classe de l'ontologie à chaque modèle
+
-
* traduire les attributs des modèles en propriétés de l'ontologie.
+
-
 
+
-
 
+
-
=== Mapping élémentaire d'un modèle ===
+
-
 
+
-
Le mapping d'un modèle de Wikipédia en français est défini par un modèle [http://mappings.dbpedia.org/index.php/Template:TemplateMapping <nowiki>{{TemplateMapping}}</nowiki> dans une page de l'espace de noms '''Mapping_fr:''' suivi du nom du modèle.
+
-
 
+
-
Par exemple le mapping du modèle [[http://fr.wikipedia.org/wiki/Modèle:Infobox_Arbitre Infobox Arbitre]] est défini dans la page http://mappings.dbpedia.org/index.php/Mapping_fr:Infobox_Arbitre qui contient :
+
-
<nowiki>{{TemplateMapping
+
-
| mapToClass = Referee
+
-
| mappings =
+
-
  {{PropertyMapping | templateProperty = nom | ontologyProperty = foaf:name }}
+
-
  {{PropertyMapping | templateProperty = nom_de_l'arbitre  | ontologyProperty = foaf:name }}
+
-
  {{PropertyMapping | templateProperty = surnom | ontologyProperty = foaf:nick }}
+
-
  {{PropertyMapping | templateProperty = date_de_naissance | ontologyProperty = birthDate }}
+
-
[...]
+
-
}}</nowiki>
+
-
 
+
-
Le champ '''mapToClass''' donne la classe a associer au modèle mappé, ici toutes les instances dont l'article Wikipédia contient une [[http://fr.wikipedia.org/wiki/Modèle:Infobox_Arbitre Infobox Arbitre]] prendra le type '''http://dbpedia.org/ontology/Referee'''. La classe doit être définie dans le wiki.
+
-
 
+
-
Le champ '''mappings''' contient les mappings des attributs (appelés ici ''template properties''). Les mappings d'attributs sont définis dans les modèles [http://mappings.dbpedia.org/index.php/Template:PropertyMapping <nowiki>{{PropertyMapping}}</nowiki>] avec les champs :
+
-
* '''templateProperty''' : l'attribut du modèle mappé
+
-
* '''ontologyProperty''' : propriété associée à l'attribut (doit être définie dans le wiki).
+
-
* '''unit''' permet de spécifier le type de données associé si la propriété est de type ''owl:DatatypeProperty'' (soit un dataype xsd, soit [[#Édition de datatype|défini dans le wiki]])
+
-
* '''facteur''' permet de multiplier la valeur trouvée par ce facteur, par exemple si un nombre est exprimé en millions.
+
-
 
+
-
 
+
-
=== Mappings constants ===
+
-
 
+
-
=== Introduction de noeuds intermédiaires ===
+
-
 
+
-
=== Mappings conditionnels ===
+

Version actuelle en date du 12 avril 2013 à 21:54

Les mappings sont édités sur le site http://mappings.dbpedia.org, ce tutoriel présente le fonctionnalités de base des mappings. Une présentation plus complète est donnée dans la page Documentation mappings, la documentation en Anglais peut être consultée cette la page.


Sommaire

En pratique

Scénario 1: mapping de modèles les plus fréquents

  • Choisir un modèle à mapper dans la liste http://mappings.dbpedia.org/server/statistics/fr/. Les plus fréquents apparaissent en premier, un code de couleur indique l'état de complétude du mapping : du vert pour un mapping qui couvre presque toutes les propriétés, au rouge pour un mapping inexistant.
  • Cliquer sur le modèle choisi pour aller sur la page d'édition du mapping, si la page existe, créer la page au besoin.
  • Mapper le type de l'instance : voir TemplateMapping
  • Mapper les propriétés : voir PropertyMapping
    • Pour voir la liste des propriétés à mapper : enregister la page de mapping et cliquer sur le lien «properties are not mapped yet.»
  • Tester le mapping : après avoir enregistré la page, cliquer sur le lien «Test this mapping».


Scénario 2: à partir d'un article en particulier

  • Pour obtenir la liste des modèles utilisés dans l'article, remplacer http://fr.dbpedia.org/resource/Musée_du_Louvre par la ressource voulue dans la requête SPARQL :
select ?t where {
  <http://fr.dbpedia.org/resource/Musée_du_Louvre>
    <http://fr.dbpedia.org/property/wikiPageUsesTemplate> ?t .
}

Dans l'exemple on obtient trois modèles : http://fr.dbpedia.org/resource/Modèle:Autres_projets, http://fr.dbpedia.org/resource/Modèle:Lien_web, http://fr.dbpedia.org/resource/Modèle:Infobox_Musée . La plupart du temps, ce sont les infobox qui nous intéressent : on va éditer le mapping des Infobox Musée.


Chercher une classe

  • Le plus rapide est de parcourir la hiérarchie des classes : http://mappings.dbpedia.org/server/ontology/classes/ .
  • Pour mapper un modèle, comparer à ce qui est fait pour les autres langues :
    • il y a parfois des liens interlangues dans la page de définition du modèle (dont le lien est donné sur la page du mapping). Voir s'il existe des mappings pour ces modèles correspondants dans d'autres langues.
    • prendre quelques ressources échantillon et chercher leur type sur les endpoints d'autres chapitres.


Chercher une propriété

C'est le plus difficile.

  • La liste des propriétés est accessible à partir du menu à gauche du wiki de mappings : http://mappings.dbpedia.org/index.php?title=Special:AllPages&namespace=202 . C'est suffisant pour chercher des propriétés suivant les noms possibles (souvent les noms utilisés dans les infobox de Wikipedia en).
  • Comparer à ce qui est fait dans d'autres langues. Si vous connaissez le type associé à l'infobox à mapper, par exemple http://dbpedia.org/ontology/Museum, la requête suivante permet d'obtenir les propriétés les plus fréquentes :
select distinct ?p (count (distinct ?s) as ?nb)
where {
 ?s rdf:type <http://dbpedia.org/ontology/Museum> .
 ?s ?p ?v .
 filter(strstarts(str(?p),"http://dbpedia.org/ontology"))
}
group by ?p order by desc(?nb)

Cette requête peut être un peu trop lourde pour des modèles fréquemment utilisés, essayer de retirer la ligne avec "filter". Sinon, ne prenez qu'un échantillon :

select distinct ?p (count (distinct ?s) as ?nb)
where {
 {select distinct ?s 
  where {?s rdf:type <http://dbpedia.org/ontology/Museum> .} limit 10000
 }
 ?s ?p ?v .
 filter(strstarts(str(?p),"http://dbpedia.org/ontology"))
}
group by ?p order by desc(?nb)
  • Autre aide : cliquer sur le nom d'une classe dans la hiérarchie de classes, la page contient un tableau avec l'ensemble des propriétés déjà mappées à l'une des instances de cette classe.


Liens utiles

Pour l'édition de l'ontologie :

Pour l'édition de mappings :

  • Dernière modification de cette page le 12 avril 2013 à 21:54.
  • Cette page a été consultée 4 901 fois.