Note : les liens compris dans cette page sont partie intégrante
de notre travail.
L' Histoire de l'informatique débute avec la création d'ordinateurs de plus en plus puissants et de plus en plus miniaturisés. C'est dans les années 60 qu'apparait la "mini-informatique " (circuit intégré (1958), systèmes d'exploitation multi-utilisateurs (1961) et des systèmes d'exploitation à temps partagé (1964)) ainsi que les prémices d'Internet.
Jusque là, l'ordinateur était une énorme machine inaccessible et destinée à traiter des masses de données sans intervention extérieure. L'augmentation des performances va maintenant permettre à l'ordinateur de "communiquer" avec l'être humain !
C'est aussi à ce moment que le premier réseau d'ordinateurs ARPANET, ancêtre d'Internet, va naître. La création de l'ARPA (Advenced Research Projects Agency) a fait partie de la réaction des Etats-Unis face au lancement par l'Union soviétique de Sputnik 57. C'est donc un ensemble de projets essentiellement militaires. Le but étant d'avoir un système de communication viable, même en temps de guerre. Cette technologie, envoi par paquets grâce au protocole TCP/IP, a ensuite été mise dans le domaine public et les universitaires américains ont commencé à s'y intéresser. De nombreux projets après, Tim Berners-Lee écrit, en septembre 1990 , le premier navigateur Web, et le nomme "World Wide Web". Ce navigateur repose sur l'hypertexte
En 1994, Tim
Berners-Lee va créer et diriger le W3C poussé par
la nécessité de standardisation. Notons que W3C sont
les initiales du World Wide Web Consortium et qu'étant un consortium,
c'est-à-dire un rassemblement d'entreprises, cette organisation
n'est donc pas indépendante des pressions des grands groupes industriels...
Nous allons parler de plusieurs de ces standardisations du W3C.
Le Web traditionnel reposant sur l'hypertexte, on a écrit le langage HTML (HyperText Markup Language). Il est conçu comme un langage spécifiant le contenu d'un document avec d'importantes extensions d'hypertexte sans en spécifier la forme à l'origine. Il n'est pas conçu pour être le langage de traitement de texte d'impression CONFORME à LA VISUALISATION (WYSIWYG) telle que Word et WordPerfect. Ce choix a été fait parce qu'un même document HTML peut être affiché par de nombreux navigateurs de différentes capacités. Ainsi, par exemple, le HTML permet de marquer des parties de texte comme les titres ou les paragraphes (spécification précisée ici), et puis laisse l'interprétation de ces éléments marqués au navigateur ce qui donne une interprétation différente suivant le navigateur utilisé. Mais tout le monde y a rajouté des choses bien specifiques, (frame de netscape) ou finalement on en est arrivé à une foison de balises specifiant l'apparence en noyant le contenu !
Face à ce problème de séparation
contenu/forme on a développé un langage structuré
: SGML(Standard Generalized Markup Language).
SGML
a été très utilisé pour le traitement de la
documentation technique dans l'industrie (aviation, automobile, etc) et
relativement peu pour le traitement de la documentation institutionnelle
ou commercialisée. Mais c'est un langage complexe, on a donc développé
un nouveau langage : XML.
1°) Le coeur de XML:
L'idée de départ de XML était de
créer un langage ayant 80% de l'expressivité de SGML et 20%
de sa complexité.
XML plus simple et visant essentiellement à permettre
la diffusion, la récéption et le traitement de contenus SGML
génériques sur le Web, est appelé à prendre
une place majeure, sinon hégémonique.
XML, eXtensible Markup Language, est donc un langage permettant de générer des langages de balises pour la structuration de données et de documents, puisqu'il dérive du SGML. Il a cependant des règles moins strictes.
Le format
XML est
extensible. En effet, le développeur XML peut créer
et utiliser dans les documents ses propres balises. Cela lui
permet aussi de décrire le contenu avec la précision voulue.
Un document XML typique se présente, par exemple, ainsi :
<catalogue>
<roller>
<marque>RollerBlade</marque>
<modele>Coyote </modele>
</roller>
<roller>
<marque>Mission</marque>
<modele>RL
<type>
<roulement>ABEC3608</roulement>
</type>
</modele>
</roller>
</catalogue>
Ce document présente une structure logique, de type arborescent, semblable à la structure d'un document HTML mais dénuée de toute informatioin de présentation.
Il est représenté
sous la forme d'un fichier texte qui n'est pas destiné à
être lu, l'avantage étant qu'un simple éditeur de texte
permet son débogage. De plus, c'est un format d'échange
très pratique entre des plates-formes différentes. En
effet, XML peut être envisagé :
- comme format de stockage, puisqu'il s'agit d'un format générique
susceptible de décliner un document dans des formats et des types
d'édition différents
- comme format d'échange
- en importation
- en exportation, notamment pour un affichage Web en réponse à
une requête
Mais dans l'immédiat, les outils
de création font défaut. On parlera donc essentiellement
de XML comme format d'échange.
Le fichier créé
est
"bavard".
Cependant, l'espace disque étant de moins en moins coûteux
et les méthodes de compression de plus en plus efficaces, cela ne
représente pas un problème : la répétition
d'un tag pour une balise ouvrante et une balise fermante, est quelque chose
qui disparaît bien à la compression.
Il existe un grand nombre d'autres
recommandations et extensions autour d'XML que nous présenterons
dans les parties suivantes : DTD, XPath, XPointer, XLink, XSL, XSLT,
XSL-FO, SAX, DOM.
2°) DTD ou XML-Schema : structure imposée
Ce n'est pas une nécessité, mais dans le contexte où XML décrit, notamment, des échanges électroniques entre entreprises et principalement des transactions, disposer d'une structure imposée paraît essentiel pour que le fichier soit compris en bout de chaîne. Dans cette optique, la DTD (Document Type Definition) a été le premier moyen pour contraindre la structure des documents. C'est un outil hérité de SGML.
Le principe est le suivant : on va décrire le contenu d'un document XML. On va y préciser le nom des balises que l'on peut ou doit utiliser dans un document XML, et leurs imbrications possibles. On va préciser également quel type de données ces éléments pourront contenir : numériques, textuelles, alphanumériques. Le fait de définir le document à réaliser permet d'être sûr qu'il sera compris à l'arrivée.
Une des utilisations des DTD est de
valider un document. On va vérifier s'il est valide après
avoir vérifier que le document XML est bien formé, c'est-à-dire
que toutes les balises sont correctement fermées et que les attributs
sont corrects. Si une DTD est déclarée et que le document
XML la respecte, on dira alors que ce dernier est valide. Pour cela, il
faut déclarer la DTD dans le code XML :
<!DOCTYPE catalogue SYSTEM "catalogue.dtd">
La DTD sera contenue dans un fichier texte, que l'on appelera
ici "catalogue.dtd".
<!ELEMENT catalogue (roller)*>
<!ELEMENT roller (marque*, modele*)>
<!ELEMENT modele (type*)>
<!ELEMENT type (roulement*)>
<!ELEMENT marque (#PCDATA)>
<!ELEMENT roulement (#PCDATA)>
L'astérisque signifie qu'il peut y avoir plusieurs fils d'un même élément (plusieurs rollers dans le même catalogue, plusieurs marques et plusieurs modèles pour un roller, etc). Les éléments "marque" et "roulement" n'ont pas de fils et peuvent contenir n'importe quel type de données alphanumériques (code #PCDATA).
Remarquons que cette hiérarchie a un caractère arbitraire, mais que quiconque voudra metttre à jour le document XML devra la suivre, sous peine d'erreur !
Plusieurs DTD "standardisées" existent. Elles définissent, entres autres, les langages MathML ou ebXML, pour ne citer qu'eux.
Bien que les DTD ont été utilisées par SGML et HTML pendant 20 ans, les schémas XML (XML Schemata) les remplacent très vite et ceci pour plusieurs raisons. Tout d'abord, les DTD ne sont pas écrites en XML, XML Schema si. Ensuite, XML Schema ajoute du typage. Pour le reste, un schéma XML fonctionne sur le même principe que les DTD.
Pour avoir un aperçu, voici la syntaxe XML Schema
correspondante aux deux dernières lignes de notre exemple précédent
:
<element name='marque' type='string'/>
<element name='roulement' type='CodeRoulement'/>
<simpleType name='CodeRoulement' base='string'>
<pattern value='[A-Z]{4}d{4}'/>
</simpleType>
3°) Les "espaces de nom" XML.
Les espaces de nom (namespaces)
permettent de disposer, dans un document XML, de balises provenant de différentes
syntaxes (DTD) : par exemple des balises HTML, MathML, etc. Il se peut
que deux syntaxes fournissent des balises de même nom, mais de significations
différentes. Les espaces de nom résolvent ce problème
en nommant de manière unique un objet (élément
ou attribut) en associant un domaine à un ensemble de noms. En pratique,
on préfixera l'objet de l'espace de nom correspondant.
Les espaces de nom sont identifiés par des URIs (Uniform Resource Identifiers), mais l'on précise pour chacun d'eux un "label" qui servira de préfixe aux balises concernés. Ainsi, on écrira par exemple :
<UnElement xmlns:UnEspaceDeNom="UneURI">
xmlns étant le "mot-clé" XML
permettant de définir un espace de nom.
Le champ d'utilisation de notre
espace de nom est délimité par les balises d'ouverture et
de fermeture de l'élément auquel il est associé (UnElement
ici) ; l'URI (Une URI ici) peut par exemple être :
http://www.w3.org/REC-html40 pour les balises HTML 4.0
http://www.w3.org/REC-MathML pour les balises MathML
quant au préfixe, il n'est pas déterminant (seul l'URI caractérise l'espace de nom) mais commode. Si l'on écrit :
<exemple xmlns:H="http://www.w3.org/REC-html40"
xmlns:M="http://www.w3.org/REC-MathML">
<H:b><M:mn>2</M:mn></H:b>
</exemple>
Les balises HTML et MathML sont parfaitement identifiées grâce aux préfixes H et M qui renvoient aux URI correspondantes. Remarquons que notre élément "exemple" doit avoir été défini au préalable et correspondre à une DTD. On peut ainsi écrire :
<exemple xmlns="UneURI"
xmlns:H="http://www.w3.org/REC-html40"
xmlns:M="http://www.w3.org/REC-MathML">
L'intérêt des espaces de nom est particulièrement notable dans le cas où il y a "conflit" de nommage. Si l'on fait appel à une DTD contenant des balises nommées B, et que l'on inclut dans le même document XML du code HTML utilisant la balise B, il faudra définir un espace de nom (par exemple xmlns:H="http://www.w3.org/REC-html40) qui permettra de lever l'ambiguité (la balise <b> étant syntaxiquement distincte de la balise <H:b> dans notre exemple).
Les applications e-business
tirent également profit des espaces de nom, et notamment les portails
: les espaces de nom leur permettent en effet d'identifier la source
des données présentées, mais également,
si besoin est, de disposer (via les balises spécifiques) des outils
d'affichage, par exemple, propres à la source des données.
4°) XPath : XML Path langage.
XPath est un langage pour servir à la fois à XSL Transformations et XPointer. Son principal objectif est d'accéder à un endroit spécifique d'un arbre XML. Ce n'est pas seulement un langage d'adressage, il offre aussi des facilités pour la manipulation des chaines de caractères, des nombres et des booléens. Pour faciliter son utilisation, XPath n'a pas la même syntaxe que XML. Il agit sur la structure abstraite et logique du document XML.
Voici les 3 normes qui ont été
créées :
- XPath est un langage pour décrire des chemins qui désignent
des fragments d'un document.
- XPointer spécifie des "cibles" via XPath.
- XLink décrit des liens entre des XPointers.
Afin de pointer sur un objet
précis, XPath est une chaîne spécifiant la sélection
d'un ensemble de noeuds dans un document. Il utilise :
- un modèle de données sur l'organisation du document : noeud
/ attributs / texte,
- des expressions permettant de faire des calculs sur les paths,
- des chemins d'accès "locations paths".
La notation Xpath permet de définir des
patterns, c'est-à-dire des chaînes de caractères permettant
de repérer un noeud dans le document XML. Les principaux patterns
sont :
Pattern | Exemple | Signification |
---|---|---|
| | Gauche|Milieu | Indique une alternative (un noeud ou bien l'autre (ou les deux)) |
/ | personne/nom | Chemin d'accès aux éléments (personne/bras/gauche) au même titre que l'arborescence utilisée généralement pour les fichiers (/usr/bin/toto) |
* | * | Motif "joker" désignant n'importe quel élément |
// | //personne | Indique tous les descendants d'un noeud |
. | . | Caractérise le noeud courant |
.. | .. | Désigne le noeud parent |
@ | @valeur | Indique un attribut caractéristique (dans l'exemple l'attribut value) |
Voici un exemple :
<book title="Starsip Titanic" price="$14">
<author name="douglas Adams"/>
<author name="Terry Jones"/>
"Where is Leovinus?" demanded the Gat of Blerontis
</book>
|
|
/book/author[2] | <author name="Terry Jones"/> |
/book/author/@name | douglas AdamsTerry Jones |
/book/author | <author name="douglas Adams"/> <author name="Terry Jones"/> |
/book/text() | "Where is Leovinus?" demanded the Gat of Blerontis |
XPath est donc très puissant mais difficile à
maîtriser.
5°) La présentation avec XSL.
XSL définit la présentation
d'un élément XML sans sémantique. Après traitement
des sources, on obtiendra différentes versions d'un document. XSL
est donc un langage de réécriture pour XML. Il est subdivisé
en :
- un langage de transformation des documents XML : XSLT
- un vocabulaire pour formater le contenu d'un document XML : XSL-FO.
a) XSLT
Un processeur XSLT utilise :
- un document XSL contenant des règles de présentation
(en fait un document XML) appelé feuille de style,
- et un arbre source résultant de l'analyse syntaxique d'un document
XML (tout document XML bien construit pouvant être représenté
par un arbre qui contient sa structure).
Et il renvoie un arbre résultant qui représente
non plus une structure logique mais une structure de présentation.
Le document XML résultant précise donc comment présenter
le document XML source.
b) XSLT/FO
Une fois l'arbre
source créé, XSL/FO permet de formatter le résultat,
c'est-à-dire d'interpréter l'arbre résultat, ou plus
exactement les objets de flux le composant en leur appliquant des
objets de mise en forme afin d'en faire une représentation visuelle
(papier, écran, ...)
c) Feuille de style
Une feuille de style (stylesheet) est une succesion de règles de réécriture : les xsl:template. L'attribut "match" de la balise <xsl:template> permet de définir (grâce à la notation XPath) le ou les éléments du document XML sur lesquels s'applique la transformation.
- de la description d'une action qui définie la transformation à
appliquer sur un noeud.
Voici un exemple :
<?xml version="1.0">
<xsl : stylesheet>
<xsl:template match="/">
[action]
</xsl:template>
<xsl:template match="roller">
[action]
</xsl:template>
...
</xsl : stylesheet>
d) exemple
Un exemple permet de clarifier tout cela. Voici un document XML très simple :
<?xml version='1.0' ?>
<doc>
<title>Exemple de document</title>
<para>Voici un <em>court</em> document XML</para>
<figure>
<title>Exemple d'image</title>
<graphic fileref="image.gif"/>
</figure>
</doc>
Et voici un exemple de document XSL (sans objets formatés) qui transforme ce type de document XML (une partie de ce dernier pour être tout à fait exact) :
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template pattern="doc">
<HTML>
<HEAD>
<TITLE>A Document</TITLE>
<HEAD>
<BODY>
<xsl:process-children/>
</BODY>
</HTML>
</xsl:template>
<xsl:template pattern="title">
<H1> <xsl:process-children/> </H1>
</xsl:template>
</xsl:stylesheet>
L'examen des deux documents ci-dessus
se passe de commentaires supplémentaires : la structure du document
XML contient des éléments pour lesquels (ou certains desquels
ici) des règles de présentation sont définis dans
le document XSL.
XML permet donc de s'adapter à différents profils d'agents (humains ou logiciels) mais aussi de proposer plusieurs formats d'affichage.
XML fournit donc une syntaxe de structuration de données
mais ne fournit rien pour décrire la sémantique des
balises. Le web sémantique s'attache à palier à ce
manque.
1°) Un exemple d'application.
Jean écoute de la musique quand
son téléphone sonne. Il répond, son téléphone
baisse alors le volume de la musique en envoyant un message à tous
les autres dispositifs locaux ayant un contrôle de volume. Sa soeur,
Sylvie appelle de chez le docteur car leur mère doit voir un spécialiste
et puis faire une série de séances de thérapie bi-hebdomadaire.
Elle dit qu'elle va faire arranger les rendez-vous par son agent. Jean
est tout de suite d'accord pour remplir le rôle de chauffeur pour
ces rendez-vous.
Sur place, Sylvie donne des instructions
à son agent grâce à son Palm (navigateur de poche).
L'agent prend la prescription chez l'agent du docteur, cherche des listes
de fournisseurs et choisit ceux compatibles avec l'assurance de leur
mère dans un rayon de 20 km de chez elle et avec une mention excellente
ou très bonne aux services d'évaluation de confiance. Il
commence alors à essayer de trouver un compromis entre horaires
de rendez-vous possibles (fournis par les agents des fournisseurs à
travers leur site web) et les emplois du temps chargés de Jean et
Sylvie.
En quelques minutes l'agent a trouvé
et revient avec un plan. Jean ne l'aime pas, l'hôpital de l'Université
est à l'autre bout de la ville par rapport à chez sa mère
et cela l'obligerait à la reconduire en heure pleine. Il demande
alors à son propre agent de refaire la recherche avec des préférences
strictes concernant le lieu et l'heure. L'agent de sylvie ayant entièrement
confiance en l'agent de Jean dans le contexte de la tâche présente,
il aide ce dernier en fournissant des certificats et des raccourcis d'accès
aux données qu'il a déjà triées.
Presque instantannément, le
nouveau plan est présenté : une clinique plus proche
et un rendez-vous plus tôt, mais il y a 2 avertissements. Tout d'abord,
Jean doit déplacer 2 rendez-vous de moindre importance. Il regarde
quels sont-ils, pas un problème. L'autre avertissement est que la
liste de la compagnie d'assurance n'inclut pas ce fournisseur pour ce genre
de thérapie. Son agent lui propose de voir les détails.
Sylvie enregistre son consentement
au même moment où Jean est en train de murmurer "épargne
moi les détails".
2°) Définition.
Jean et Sylvie n'auraient pas pu utiliser
leur agent pour faire ce travail sur le Web, mais avec le Web sémantique
de demain oui. Le contenu du Web d'aujourd'hui est lisible par des humains
et par des machines mais il n'est compréhensible que pour les humains.
Le Web sémantique vise à ajouter des annotations sémantiques,
à propos des ressources du Web, qui soient compréhensibles
et exploitables par des logiciels (les agents).
Le Web sémantique crée un environnement
où les agents qui parcourent de pages en pages ce web, peuvent effectuer
des tâches sophistiquées pour des utilisateurs. Un tel agent
venant sur la page web de la clinique saura non seulement que la
page contient des mots clés comme "traitement, médicaments,
thérapie" (tel que c'est codé aujourd'hui) mais aussi
que le Docteur Hartman travaille dans cette clinique les lundis, mercredis
et jeudis et que le script prend une date au format aaaa-mm-jj et renvoie
un rendez-vous. Et il saura cela sans l'aide d'intelligence artificielle.
Le Web sémantique n'est pas une page web séparée mais une extension de l'actuel dans lequel l'information a un sens bien défini, permettant ainsi aux ordinateurs et aux personnes de travailler en coopération. Les premières étapes pour tisser le Web sémantique dans la structure du Web existant sont déjà franchies.
La propriété essentielle du Web traditionnel est son universalité. La puissance des liens hypertextes est que n'importe quoi peut être lié à n'importe quoi. La technologie du web ne doit donc pas être dicriminante entre des informations commerciales ou académiques, parmi les cultures, les langues, les médias, etc ... L'information du Web varie selon plusieurs axes. L'un d'eux est la différence entre l'information produite pour la compréhension humaine et celle produite principalement pour les machines. D'un côté, nous avons tout du programme TV à la poésie et de l'autre, nous avons des bases de données , des programmes et des sorties. Le but du web sémantique est d'harmoniser tout cela.
Comme Internet, le Web sémantique sera aussi décentralisé que possible. Cela demande de faire des compromis : on doit accepter l'idée de la croissance exponantielle des erreurs.
Pour fonctionner, les ordinateurs doivent
avoir accès à des collections d'information et à des
ensembles de règles d'inférence pour effectuer un raisonnement
automatique. La Représentation des connaissances ("knowledge
representation"), pour réaliser son potentiel, doit être
liée à un système unique et global.
Mais si tout le monde partage la même définition
pour des concepts communs, cela devient vite étouffant et entraîne
une augmentation de taille. Le système devient alors ingérable.
Le challenge est de produire un langage qui permet aux
règles en provenance de n'importe quelle "représentation
du savoir" d'être exportée par le Web.
Deux technologies sont déjà en place :
- eXtensible Markup Langage (XML),
- Ressource Description Framework (RDF).
XML permet à chacun de créer ses propres balises qui entourent
des pages Web ou des sections de texte. Les scripts ou les programmes peuvent
alors utiliser ces balises de façon sophistiquée. En clair,
XML permet aux utilisateurs d'ajouter des structures arbitraires à
leurs documents sans rien dire de leur signification.
3°) RDF.
RDF exprime le sens de ces balises. C'est encodé sous la forme de triplets, un peu comme sujet-verbe-complément d'une phrase très simple.
Dans RDF, un document fait des affirmations : des choses (personnes, pages web ou autres) ont des propriétés (est la soeur de, est l'auteur de ) avec une valeur (autre personne, autre page web). Sujets, verbes et compléments sont identifiés par URI, utilisés exactement comme un lien sur une page web. Cela permet à chacun de définir un nouveau concept, juste en définissant une URI pour lui sur le web.
Considérez comme un exemple
simple, la phrase :
Ora Lassila est le créateur de la ressource http://www.w3.org/Home/Lassila.
Cette phrase est composée
des parties suivantes :
Sujet (Ressource)
http://www.w3.org/Home/Lassila
Prédicat (Propriété)
Créateur
Objet (littéral)
"Ora Lassila"
Ensuite RDF a une syntaxe XML pour exprimer ce modèle de triplet. Dans notre exemple, cela donne:
<rdf:RDF>
<rdf:Description about="http://www.w3.org/Home/Lassila"
s:Créateur="Ora Lassila" />
</rdf:RDF>
Voici quelques productions de la grammaire simplifiée
de RDF :
[1] RDF
::= ['<rdf:RDF>'] description* ['</rdf:RDF>']
[2] description ::= '<rdf:Description' idAboutAttr?
'>' propertyElt* '</rdf:Description>'
[3] idAboutAttr ::= idAttr | aboutAttr
[4] aboutAttr ::= 'about="' URI-reference
'"'
[5] idAttr ::= 'ID="' IDsymbol
'"'
[6] propertyElt ::= '<' propName '>' value '</'
propName '>'
| '<' propName resourceAttr '/>'
[7] propName ::= Qname
[8] value ::= description
| string
[9] resourceAttr ::= 'resource="' URI-reference '"'
[10] Qname ::= [
NSprefix ':' ] name
[11] URI-reference ::= string, interpreted per [URI]
[12] IDsymbol ::= (any legal XML name
symbol)
[13] name ::=
(any legal XML name symbol)
[14] NSprefix ::= (any legal XML namespace
prefix)
[15] string ::= (any XML
text, with "<", ">", and "&" escaped)
3°) RDF Schema.
Rendre explicite la sémantique des annotations permet d'éviter des difficultés dues à l'ambiguïté du langage. Ils donnent l'exemple du mot 'adresse' qui peut désigner une adresse routière (5 rue du général machin) ou purement postale (BP 87). Si les systèmes ne sont pas capables de comprendre la différence il se peut que lorsque vous commandez des pizzas elles soient livrées à votre boîte postale (c'est sympa pour les employés de la poste) parce que votre système a donné cette adresse au système du livreur de pizzas. Le fait de définir un concept et de lui donner un identificateur unique (URI) permet à deux systèmes de s'assurer qu'ils parlent de la même chose (ex. le système du livreur de Pizza veut votre adresse routière personnelle et utilise une URI qui définit cette notion de façon à lever l'ambiguïté). La structure permettant de définir des concepts et leur relation est un Schéma RDF. Ce schéma est décrit à l'aide de primitives donnée par RDF Schema (RDFS).
RDF(s) propose des constructeurs très généraux
permettant de construire ces schémas spécialisés.
En effet, un ensemble de déclarations de classes et de propriétés
peut-être défini par raffinement du schéma du noyau
RDFS. Les données instances sont ensuite décrites en utilisant
ce nouveau vocabulaire.
Voici une figure qui illustre les concepts basiques de
classe, sous-classe et ressource. :
Les classes et les propriétés spécifiques
à un domaine son déclarées respectivement comme instances
de la ressource Class et Property.
Voici un exemple simple de leur utilisation
:
Et voici la syntaxe RDF correspondante :
<rdf:RDF xml:lang="en" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"> <!-- Note: this RDF schema would typically be used in RDF instance data by referencing it with an XML namespace declaration, for example xmlns:xyz="http://www.w3.org/2000/03/example/vehicles#". This allows us to use abbreviations such as xyz:MotorVehicle to refer unambiguously to the RDF class 'MotorVehicle'. --> <rdf:Description ID="MotorVehicle"> <rdf:type resource="http://www.w3.org/2000/01/rdf-schema#Class"/> <rdfs:subClassOf rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/> </rdf:Description> <rdf:Description ID="PassengerVehicle"> <rdf:type resource="http://www.w3.org/2000/01/rdf-schema#Class"/> <rdfs:subClassOf rdf:resource="#MotorVehicle"/> </rdf:Description> <rdf:Description ID="Truck"> <rdf:type resource="http://www.w3.org/2000/01/rdf-schema#Class"/> <rdfs:subClassOf rdf:resource="#MotorVehicle"/> </rdf:Description> <rdf:Description ID="Van"> <rdf:type resource="http://www.w3.org/2000/01/rdf-schema#Class"/> <rdfs:subClassOf rdf:resource="#MotorVehicle"/> </rdf:Description> <rdf:Description ID="MiniVan"> <rdf:type resource="http://www.w3.org/2000/01/rdf-schema#Class"/> <rdfs:subClassOf rdf:resource="#Van"/> <rdfs:subClassOf rdf:resource="#PassengerVehicle"/> </rdf:Description> </rdf:RDF> |
4°) Axes de développement.
Le système Annotea
est un projet du W3C. C'est un système d'annotation collaboratif.
Par annotation, on entend commentaires, notes, explications ou autres types
de remarques qui peuvent être attachées à n'importe
quel document Web ou à une partie selectionnée du document.
Quand l'utilisateur prend le document, il peut charger les annotations
attachées à ce document d'un ou plusieurs serveurs sélectionnés
d'annotation et voir ce que son "groupe de paire" (peer group) pense.
Annotea utilise pour l'instant un
schéma d'annotation basé sur RDF pour décrire des
annotations. Ce système fait donc partie des efforts liés
au Web sémantique.
Les annotations sont rangées
dans des serveurs d'annotations comme des métadonnées et
présentées à l'utilisateur par un client HTTP capable
:
- d'interagir avec un serveur d'annotation,
- d'interpréter ces métadonnées,
- de les utiliser pour la présentation d'informations et de services
au client.
Le premier client est le navigateur
Amaya, rien n'empêche d'autres clients d'implémenter aussi
ces possibilités.
Ce système pourra être à la
base de futures applications comme des recommandations de produits ou de
services.
Voici les 2 principaux axes de développements
futurs :
- contrôle d'accès, preuve, confiance (signature électronique),
- raisonnement, règles, logique.
Une facette importante des agents
est l'échange de preuves, écrites en langage unifié
du Web sémantique. Un agent qui a effectué une tâche
pour un utilisateur peut lui proposer de voir certaines pages Web s'il
a des doutes concernant la solution apportée par son agent.
Les ordinateurs et les agents utilisent
pour se faire des signatures digitales. Ce sont des blocs de données
encryptées qui permettent de vérifier que l'information attachée
a bien été envoyée par une source spécifique.
Par exemple, cela peut s'avérer utile pour vérifier qu'une
facture online ne vient pas de l'ordinateur de votre voisin adolescent
!
Les schémas RDF ne permettent
pas de raisonner. Ajouter la logique au Web est un axe important
de développement pour la communauté du Web sémantique.
C'est très compliqué. La logique doit être assez puissante
pour décrire des propriétés complexes d'objet mais
pas trop pour que les agents ne s'égarent pas à avoir à
considérer un paradoxe.
Voici un schéma représentant
l'architecture en couches et ... en cours du Web sémantique.
On peut voir dans ce schéma qu'un axe de développement est de standardiser les moyens de définir des ontologies qui peuvent être utilisées sur le Web . Pour ce faire, on part des schémas RDF puis on étend ces constructions pour permettre des relations plus complexes entre entités. On va utiliser DAML et OIL pour définir un nouveau standard : l'OWL (Ontology Web Language).
DAML vient de DARPA Agent Markup Language
Program et OIL de Ontology Interchange Language. Ce couple est le résultat
d'un groupe de travail du W3C.
Il apporte une extension de RDFS :
- classes (intersection, union, complémént, ...),
- définition de nouveau types de données avec XML Schema,
- différents types de propriétés, sous-propriétés,
...
- restriction des propriétés.
Mais aussi tout la puissance d'une
logique de description si munie de mécanismes inférentiels
(et, ou, non, rôle transitif, inverse, ...).
Il existe des besoins très différents
:
- vocabulaire conceptuel pour étiqueter ou indexer des documents,
- publier ou échanger de l'information type base de données,
- inétgration semi-automatique d'information entre agents logiciels,
- vérification du bon usage des règles,
- Ontologies de petite taille disponibles partout versus de grandes ontologies.
Il existe tout de même des éditeurs
d'ontologies, par exemple Ontolingua/Chimeara et Protégé
2000(université de stanford), OILEd (université de Manchester),
WebOnto, ou encore OntoEdit.
Prochaine étape : le WS va s'étendre dans notre monde physique. Les URI peuvent pointer sur n'importe quoi, notamment des entités physiques, ce qui signifie qu'on peut utiliser le language RDF pour décrire des objets comme un téléphone cellulaire ou une TV. Des dispositifs peuvent donner leur fonctionnalités (ce qu'ils font et comment ils sont contrôlés), tout comme des agents.
Construit sur RDF, il existe un
standard, appellé Composite Capability/Preference Profile (CC/PP).
Les clients non standarts pourront alors automatiquement décrire
leurs caractéristiques pour que le contenu du WEB puisse être
adapté à eux sur le champs. Plus tard, ils pourront automatiquement
aller chercher pour les employer d'autres services et engins pour s'ajouter
une fonctionalité ou une information. Une des applications est la
domotique (automatisation de la maison) : il n'est pas dur de s'imaginer
votre four micro-onde couplé au WEB consultant le site WEB d'un
fabricant de surgelé pour optmiser les paramètres de la préparation.
Le WS n'est pas seulement un outil pour effectuer les tâches personnelles dont nous avons parlées il peut assister s'il est bien conçu l'évolution du savoir humain comme un tout. L'effort humain est tiraillé entre l'efficacité de petits groupes agissant de façon indépendante et le besoin de se mettre en réseau avec une plus large communauté. Un petit groupe peut inover rapidement et efficacement mais cela entraine une sous culture dont les concepts ne sont pas compris par tous les autres. Coordonner les actions au travers d'un plus large groupe est péniblement long et produit une énorme quantité de communication. Un procédé essentiel est donc la jonction de sous-cultures quand on a besoin d'un plus large langage commun. Souvent 2 groupes qui développent des concepts proches et qui décrivent la relation entre eux, en retirent de grands bénéfices. Le Web sémantique laisse chacun exprimer de nouveaux concepts et cet unique langage permettra à ces concepts d'être progressivement liés dans un Web universel.
Concrètement, il est clair qu'au
vu de la complexité du travail à mener et de la formalisation
à réaliser que le seul moyen d'espérer travailler
avec un Web sémantique à court ou moyen terme est de procéder
par étapes successives. Pour cela, la meilleure méthode semble
être une vérification et correction humaine des résultats
produits par automatisation logicielle. Une communauté de volontaires,
classifiant sous forme hiérarchisée des liens internet, pourrait
donc, en théorie, contribuer à "sémantiser" le Web
actuel. Cependant à la vitesse où les documents sont créés,
modifiés ou supprimés sur Internet (par exemples, les sites
générant des bulletins d'informations réguliers changent
fréquemment de contenu) , il sera très difficile d'espérer
"sémantiser" le web sans un effort des éditeurs de contenus
on-line. Les seuls espoirs du Web sémantique sont :
- d'avoir une adoption en masse des standards qui émergeront du
W3C,
- la disponibilité d'outils logiciels permettant de l'exploiter,
aussi bien de bas niveau tels que des moteurs de règles capables
de faire des déductions mais aussi des outils de plus haut niveau
comme des moteurs de recherches évolués et des agents intelligents
capables d'exploiter la sémantique des documents.
Les sources utilisées :
Retour à la page d'accueil
Le site du W3C, grande mine de renseignements : www.w3c.org"Introduction to HTML" par Ian Graham
Last Update: 20 September 2000"A Practical Introduction to SGML." Prepared by Michel Goossens and Janne
Saarela, CERN. "...discusses the basic ideas of SGML and looks at a
few interesting tools... [June 1995]Plusieurs articles sur www.XML.com et developpeurs.journaldunet.com/tutoriels/xml/...
Les cours des licences MIAGE : Technolgies du Web par Stéphane Lavirotte et
Dominique Broeglin disponible sur cours.essi.fr/miage/tehnoweb"Le Web sémantique n'attend plus que vous !" par Jérôme BERNARD, juin 2001,
xmlfr.org/documentations/articles/010601-0001"Les langages de représentation du Web" par P. Laublet, Ontosaurus
L'article "The Semantic Web" , Scientific American, May 2001.