Bonjour à tous,
Quelques remarques sur ta proposition et sur les réponses d'Alexandre et
de Charles.
Il est effectivement possible de récupérer une propriété ou une classe
définie par une autre ontologie (ou domaine de namespaces). Je suis du
même avis que Charles, c'est même une bonne pratique, il ne faut pas
réinventer la roue et les concepts quand ils existent, les namespaces
sont là pour ça. Il existe en fait plusieurs moyens de faire cela :
- Importation d'une ontologie avec la propriété <owl:imports
rdf:resource="URL_de_ontologie"/> de la classe Ontology :
<owl:Ontology rdf:about="">
<rdfs:label xml:lang="fr">Ontologie trucmuche</rdfs:label>
<owl:imports rdf:resource="http://www.w3.org/2006/time"/>
</owl:Ontology>
Dans ce cas, tu n'as pas besoin de redéclarer les propriétés et classes
de l'ontologie que tu importes, elles sont automatiquement récupérées,
il te suffit ensuite de raccorder ta propre ontologie à celle que tu as
importé. Mais, attention l'import ne fonctionne qu'avec des ontologies
décrites en OWL et non en RDFS (ce qui est logique, puisque les règles
d'inférence sont différentes). Donc pour Dublin Core, ça ne fonctionne
pas. De plus, cela peut ne pas se révéler intéressant, si tu n'as besoin
que d'une propriété ou d'une classe d'une autre ontologie.
- "Redéclaration" de classes ou de propriétés. Si tu veux que ton
ontologie soit consistante et que tu n'importes pas ou ne peut pas
importer, il te faut redéclarer les propriétés et classes dans ton
ontologie, comme tu l'as fait. Comme l'ont fait remarquer Charles et
Alex, il faut que les concepts soient les mêmes, sinon les agents ne
pourront pas appliquer les mêmes traitements à ton ontologie et à celles
d'origine. Je ne connais pas la notation que tu utilises, mais si je
comprends bien, ça a l'air bon, en RDF/XML ça donne cela :
<owl:Class
rdf:about="http://www.w3.org/2003/01/geo/wgs84_pos#SpatialThing"/> pour
une classe. Comme tu le vois, on ne peut pas utiliser le namespace à cet
endroit, il faut absolument déclarer l'URI ce qui n'empêche pas de
déclarer le namespace dans le RDF et que tu peux l'utiliser dans tes
instances.
<owl:DatatypeProperty
rdf:about="http://www.w3.org/2003/01/geo/wgs84_pos#long">
<rdfs:label xml:lang="fr">longitude</rdfs:label>
<rdfs:domain
rdf:resource="http://www.w3.org/2003/01/geo/wgs84_pos#SpatialThing"/>
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#float"/>
</owl:DatatypeProperty> pour une propriété
Tu as l'air de confondre propriété d'objet et propriété de type de
données. C'est une différence importante avec RDFS, il existe deux types
de propriétés de base en OWL :
- ObjectProperty qui désigne une propriété qui relie deux classes et
donc qui a besoin d'une propriété domain et d'une propriété range (qui
au passage appartiennent à RDFS et non à OWL), tu aura donc par exemple :
<owl:ObjectProperty rdf:ID="isPartOf">
<rdfs:label>is Part of</rdfs:label>
<rdfs:domain rdf:resource="#task"/>
<rdfs:range rdf:resource="#project"/>
</owl:ObjectProperty>
- DatatypeProperty qui désigne une propriété qui unit une classe avec
une données (une chaîne de caractères, un nombre entier, une URL, une
date...). C'est le cas par exemple de la propriété titre. Dans ce cas,
la propriété domain désigne la classe concernée et la propriété range le
type de données.
<owl:DatatypeProperty
rdf:about="http://purl.org/dc/elements/1.1/description">
<rdfs:label xml:lang="fr">Description de la tâche</rdfs:label>
<rdfs:domain rdf:resource="#task"/>
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
</owl:DatatypeProperty>
N'hésite pas à valider ton ontologie. Pour ce faire, je te conseille
deux validateurs que j'utilise assez souvent (surtout quand tu commences
à faire des ontologies) :
- Pellet OWL reasoner qui propose de vérifier la consistance d'une
ontologie dans la démo en ligne :
http://www.mindswap.org/2003/pellet/demo.shtml (dans le menu déroulant,
tu as un item dédié à cela)
- Un validateur OWL : http://phoebus.cs.man.ac.uk:9999/OWL/Validator
La dernière solution consiste à importer ton ontologie dans Protégé qui
est une très bonne solution (http://protege.stanford.edu/), de
l'enregistrer et de voir les modifs qu'a apporté Protégé automatiquement.
J'espère que cela t'aidera, bon courage !!
A+
Gautier
PS : c'est bien, je voulais écrire un billet sur ce sujet, tu m'as mis
le pied à l'étrier ;-)
Simon Rozet a écrit :
> Bonjour,
>
> J'ai écrit une ontologie pour décrire un système d'organisation
> de type Getting Thing Done [1] avec deux but en tête :
>
> - apprendre à écrire une ontologie
> - améliorer le petit - mais génial - programme b.py [2] de Sean B. Palmer
>
> Le début de l'ontologie :
>
> @prefix : <#> .
> @prefix rdfs: <http://www.w3.org/TR/rdf-schema/> .
> @prefix owl: <http://www.w3.org/2002/07/owl#> .
> @prefix dc: <http://purl.org/dc/elements/1.1/> .
>
> <> a owl:Ontology;
> dc:title "Geting Things Done";
> dc:creator "Simon Rozet";
> dc:description "An Ontology for describing the Getting Thing Done action management method."@en .
>
> :Task a owl:Class;
> rdfs:label "a task"@en .
>
> :Project a owl:Class;
> rdfs:label "a projet"@en .
>
> dc:title a owl:ObjectProperty;
> rdfs:comment "Description de la tâche."@fr;
> owl:domain :Task .
>
> dc:created a owl:ObjectProperty;
> rdfs:label "task creation date"@en;
> owl:domain :Task, :Project .
>
> dc:completed a owl:ObjectProperty;
> rdfs:label "task completion date"@en;
> owl:domain :Task .
>
> :tasks a owl:ObjectProperty;
> rdfs:label "tasks";
> owl:domain :Project .
>
> Et voici un exemple d'utilisation :
>
> @prefix : <#> .
> @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
> @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
> @prefix dc: <http://purl.org/dc/elements/1.1/> .
> @prefix gtd: <http://atonie.org/ns/gtd#> .
>
> :garage a gtd:Project;
> dc:title "re-peindre le garage";
> dc:created "2006-09-25";
> gtd:tasks [
> a rdf:Seq;
> rdf:_1 :a;
> rdf:_2 :b ] .
>
> :a a gtd:Task;
> dc:title "choisir la couleur";
> dc:created "2006-11-09";
> gtd:completed "2006-11-11" .
>
> :b a gtd:Task;
> dc:title "acheter la peinture";
> dc:created "2006-11-09" .
>
> L'ontologie est-elle bien écrite (j'ai notamment des doutes sur dc:completed a owl:ObjectProperty;), bien pensée ?
> Il reste aussi à intégrer les "Someday/Maybe", "Waiting for" et "Next actions".
>
> Merci d'avance pour vos remarques :)
>
> [1] http://fr.wikipedia.org/wiki/Getting_Things_Done
>
>
--
Liste de diffusion "websemantique@xmlfr.org"
(http://xmlfr.org/communautes/websemantique/listes/websemantique).
Contribuez au developpement du Web Semantique francophone
(http://websemantique.org) !
Pour resilier votre abonnement, envoyez un message contenant
la commande "unsubscribe" a websemantique-request@xmlfr.org
(mailto:websemantique-request@xmlfr.org?Subject=unsubscribe)
Received on Wed Nov 15 10:50:27 2006