Quelque chose de type "œuvre"
... etc
Information Management: A Proposal,
--Tim Berners-Lee, CERN, Marzo 1989
Foafnaut montre l'information comme des éléments (nodes) liés...
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:foaf="http://xmlns.com/foaf/0.1/" >
<foaf:Person>
<foaf:mbox rdf:resource="mailto:charles@w3.org"/>
<foaf:givenname xml:lang="en">Charles</foaf:givenname>
</foaf:Person>
</rdf:RDF>
Un outil utile - le validateur RDF
les "triples" (les déclarations):
sujet | prédicat | objet | |
---|---|---|---|
1 | genid:ARP14847 | http://www.w3.org/1999/02/22-rdf-syntax-ns#type | http://xmlns.com/foaf/0.1/Person |
2 | genid:ARP14847 | http://xmlns.com/foaf/0.1/mbox | mailto:charles@w3.org |
3 | genid:ARP14847 | http://xmlns.com/foaf/0.1/givenname | "Charles"@en |
Quelque chose sans identification, qui n'a qu'une description (nœud anonyme)
Utilisons :
Regardez un exemple de foaf, ou un exemple d'EARL, si vous ne voulez pas en créer
- declarations de origen independiente
- se prononce comme "cum"
python cwm.py --rdf rdf-ejem.rdf rdf2-ejem.rdf
résultat : les deux fichiers melangés
- l'important est la sémantique
En utilisant une autre forme de RDF, appelée n3, cwm peut
N3 utilise une syntaxe consistante pour tout, mais ce n'est pas XML
python cwm.py --rdf rdf-ejem.rdf rdf2-ejem.rdf --n3
(il est pratique de créer une instruction cwm au lieu de répéter python cwm.py...)
donne :
[ a <http://xmlns.com/foaf/0.1/Person>;
<http://xmlns.com/foaf/0.1/givenname> "Charles"@en;
<http://xmlns.com/foaf/0.1/mbox> <mailto:charles@w3.org> ].
[ a <http://xmlns.com/foaf/0.1/Person>;
<http://xmlns.com/foaf/0.1/mbox> <mailto:charles@w3.org>;
<http://xmlns.com/foaf/0.1/name> "Charles McCathieNevile"@fr ].
l'idée de n3 était de créer une syntaxe facile pour écrire et lire.
(mais en tout cas je préfère utiliser un logiciel)
La syntaxe de base : <url1> <url2> <url3>
.
pour deux déclarations :
<url1> <url2> <url3> .
<url4> <url5> <url6> .
[ <prédicat> <objet> ]
<x> a <y> .
<x>
est un membre de la classe
<y>
- c'est à dire
<x> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <y> .
<x> <pred1> <obj1> .
<x> <pred2> <obj2> .
"texto"@es
Cwm comprend des options dans les instructions
{ ?x a <http://xmlns.com/foaf/0.1/Person> ;
<http://xmlns.com/foaf/0.1/mbox> ?adresse ;
<http://xmlns.com/foaf/0.1/name> ?nom .
?y a <http://xmlns.com/foaf/0.1/Person> ;
<http://xmlns.com/foaf/0.1/mbox> ?adresse ;
<http://xmlns.com/foaf/0.1/givenname> ?prénom .
} =>
{ ?x a <http://xmlns.com/foaf/0.1/Person> ;
<http://xmlns.com/foaf/0.1/mbox> ?addresse ;
<http://xmlns.com/foaf/0.1/givenname> ?prénom ;
<http://xmlns.com/foaf/0.1/name> ?nom } .
Si ?x
est une Person
, avec une mbox
determiné et un name
,
y ?y
est une Person
avec la même
mbox
et un givenname
,
?x
a aussi ce givenname
=>
<http://www.w3.org/2000/10/swap/log#implies>
?qqChose
{ <x> <y> <z> }
cwm --rdf rdf-ejem.rdf rdf2-ejem.rdf --n3 regla-ejem.n3 --think
Le résultat inclut toute l'information donnée.
@prefix log: <http://www.w3.org/2000/10/swap/log#>
.
<x> <pred> <objUno> .
<x> <pred> <objDos> .
pour n'inclure que les résultats intéressants, on peut utiliser
cwm --rdf rdf-ejem.rdf rdf2-ejem.rdf --n3 regla-ejem.n3 --think --filter=regla-ejem.n3
Ainsi, on n'a que les déclarations correspondant à une implication de regla-ejem.n3
Note Si on veut des autres declarations, il faut les inclure :
{ ?z a ical:Vcalendar } =>
{ ?z a ical:Vcalendar } .
les règles dans le fichier evaluador.n3 incluent un nœud anonyme
{ [ a <http://xmlns.com/foaf/0.1/Person> ;
<http://xmlns.com/foaf/0.1/mbox> ?adresse ;
?relation ?objet ] .
?y a earl:Assertor ;
earl:email ?adresse }
=> { ?y ?relation ?objet } .
On peut utiliser le fichier FOAF, et celui d'EARL.
cwm --rdf earl-ejem.rdf foaf-ejem2.rdf --n3 > cwm-ejem.n3 cwm cwm-ejem.n3 evaluador.n3 --think --filter=evaluador.n3
pour chercher toutes les déclarations avec l'évaluateur comme sujet
{ ?ev a act:ActionItem ; dc:title ?titre ;
log:racine ?desde . ?desde dc:date ?laDate} =>
{ ?ev a ical:Vtodo ; ical:summary ?titre ;
ical:dtstart [ ical:dateTime ?laDate ];
is ical:component of <foo> } .
Note: <objet> is <relation> of
<sujet>
Plus d'information sur cwm (en anglais)
C'est de l'open source, mais en anglais seulement, à ma connaissance (mais Tim parle français).
Il possède des fonctions arithmétiques, entre autres posibilités intéressantes
Rappel
Etc...
RDF de base :
Sujet - Prédicat - Objet
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:exterms="http://www.example.org/terms/">
<rdf:Description rdf:about="http://www.example.org/index.html">
<exterms:creation-date>August 16, 1999</exterms:creation-date>
</rdf:Description>
</rdf:RDF>
trois attributs similaires pour identifier ce qui est décrit
par ex. <rdf:Description rdf:ID="ici">
se réfère
à #ici dans le document
p.ex. <rdf:Description
rdf:about="http://www.example.com/#ici">
Les proprietés sont les relations
Elles ont une URI - donc se décrivent en RDF
<rdf:Description rdf:about="http://www.w3.org/1999/02/22-rdf-syntax-ns#Property"> <rdfs:comment xml:lang="es">Une relation entre 2 choses identifiées (normalement) par une URIs</rdf:label> </rdf:Description>
Une classe est un type de ressource.
Par exemple, chaque classe RDF est de type
http://www.w3.org/1999/02/22-rdf-syntax-ns#Class
(et elle peut être de plusieurs types à la fois)
Deux choses distinctes, avec un but similaire
<foaf:Person><foaf:name>Charles</foaf:name></foaf:Person>
<quelquechose:anonyme><dc:title rdf:value="Un
titre"/></quelquechose:anonyme>
first
, rest
, nil
, ...subClass
- hiérarchie en RDFSUne classe peut être une sous-classe d'autres classes
Par exemple, on peut dire que "maClasse
" est une sous-classe
de Class
cela implique que toute chose de type myclass est de type Class (mais la réciproque est fausse)
Il y a aussi subProperty
pour les proprietés
Il y a 6 spécifications pour RDF, et 6 de plus pour OWL...
RDFS est une abréviation du nom du langage pour définir des vocabulaires
Il possèfe les proprietés label
et comment
, qui
sont utiles pour presenter un vocabulaire dans une interface, ou le décrire
d'une manière sémantique.
<rdf:Description rdf:about="http://www.w3.org/2000/01/rdf-schema#label">
<rdfs:label xml:lang="es">Titulo</rdfs:label>
<rdfs:comment xml:lang="es">Un titulo breve pour un termino en un vocabulario RDF</rdfs:comment>
<rdfs:label xml:lang="fr">Titre</rdfs:label>
<rdfs:comment xml:lang="fr">Un titre bref pour un terme dans un vocabulaire RDF</rdfs:comment>
</rdf:Description>
Un langage RDF qui peut mieux definir un vocabulaire
Par exemple
- ou décrit quelquechose d'équivalent....
créer (utilisez rdfs:label
et rdfs:comment
!) ou
chercher ?
Chercher de préférence, mais où ?