Sommaire :
Quels sont les besoins
- nous souhaitons être libre d'ajouter simplement de nouvelles fonctionnalités portant sur des métadonnées non encore gérées par wikini (par exemple : l'UploadDeFichiers, la gestion des groupes d'utilisateurs, ActionEtDroitDUtilisation, administration fonctionnelle, etc.) : pour éviter de faire évoluer le modèle de données à chaque nouveauté, wikini a besoin d'un ModeleDeDonnees? évolutif. (Ce besoin est actuellement très fort au sein de l'équipe de wikini.)
- nous souhaitons offrir à l'utilisateur des moyens de gérer lui-même ses propres métadonnées : créer, supprimer, modifier, consolider, rechercher, etc.
- nous souhaitons que les métadonnées d'un site wikini puissent, en outre, être traitées par d'autres sites wikini : c'est ce qui est réalisé partiellement par la fonction de WikiNiSyndication
- nous souhaitons de surcroit que les métadonnées d'un site wikini puissent être traitées par d'autres outils que wikini : c'est ce qui est réalisé de façon embryonnaire par la fonction de WikiniEtLesFluxRSS
- nous souhaitons un format ouvert de description des métadonnées
- nous souhaitons être compatibles avec les standards du web
Solutions théoriques et exemples d'application
Pour toutes ces raisons, il faut concevoir un modèle de données évolutif qui permette, à nous comme au développeur indépendant, d'étendre
WikiNi sans remettre en cause le modèle de données. Pour cela (me trompe-je ?), je ne vois qu'une seule solution : construire un méta-modèle de données permettant de construire le modèle de données sans toucher au méta-modèle -- un peu à la façon de
MySQL dont les définitions des champs et des tables sont elles-mêmes des champs et des tables.
Il ne s'agit cependant pas non plus de définir quelque chose d'aussi complexe que le modèle de
MySQL !
Il suffirait peut-être de définir des champs ressource, propriété, valeur (exactement comme un triplet
RDF), ce qui permettrait de nombreuses applications. Nous listons ci-dessous des domaines d'application avec des exemples.
- gestion des triplets/métadonnées/propriétés
- une propriété doit pouvoir être obligatoirement renseignée (par exemple le nom de la page)
- une propriété doit avoir un et un seul type de valeur (par exemple les droits d'accès ne peuvent être donnés que pour des utilisateurs ou des groupes d'utilisateurs)
- configuration de base du moteur de wiki
- <ThisWiki?> <name> <WikiNi>
- <ThisWiki?> <debug> <aucun>
- <ThisWiki?> <page_purge> <24>
- <ThisWiki?> <referer_purge> <24>
- <ThisWiki?> <root_page> <PagePrincipale>
- <ThisWiki?> <fonctionnality> <NewUsers?>
- <ThisWiki?> <fonctionnality> <NewPages?>
- <ThisWiki?> <fonctionnality> <ModificationOfPages?>
- <ThisWiki?> <fonctionnality> <HTMLCode>
- <ThisWiki?> <language> <fr>
- description des droits d'accès par défaut du wiki
- <EveryNewPage?> <default read access> <*>
- <EveryNewPage?> <default write access> <*>
- <EveryNewPage?> <default comment access> <*>
- description de l'environnement éditorial de chaque page
- <ThisPage?> <keyword> <>
- <ThisPage?> <description> <>
- <ThisPage?> <author> <>
- <ThisPage?> <type> <Notice bibliographique|notice biographique|notice de site internet|etc.> (selon son type, la page affiche automatiquement certaines métadonnées à compléter)
- <ThisPage?> <HasAMetadataToBeCompleted?> <ThisProperty?> (pour forcer l'utilisateur à compléter une métadonnée dans une page donnée)
- <ThisPage?> <NavigationLinks?> <>
- vie du document (modifications, commentaires, etc.)
- <ThisPage?> <IsValidUntil?> <>
- description de l'animation éditoriale
- <ThisPage?> <ToBeCompletedBy?> <>
- <ThisPage?> <ToBeReviewedBy?> <>
- <ThisPage?> <ToBeValidatedBy?> <>
- description de la politique éditoriale
- <ThisPage?> <EmailedOnChangeTo?> <ThisUser?>
- <ThisPage?> <fonctionnality> <RSSFeed>
- <ThisPage?> <IsPartOfRecentChanges?> <[yes|no]>
- description de relations sémantiques entre les thèmes des pages
- synonymie, renvoi, alias
- hiérarchie, parenté
- proximité
- description de l'interface du wiki
- <ThisWiki?> <default_stylesheet> <>
- <ThisWiki?> <StylesheetForPrinting?> <>
- <EveryPage?> <navigation links> <DerniersChangements :: DerniersCommentaires>
- <EveryPage?> <HTMLvalidator> <>
- <EveryPage?> <CSSvalidator> <>
- <EveryPage?> <LinkChecker?> <>
- <EveryPage?> <fonctionnality> <comments>
- <EveryPage?> <fonctionnality> <alternative title>
- description des utilisateurs
- description de personnes (en utilisant FOAF par exemple)
- civilités
- coordonnées
- mél
- clef PGP
- communauté
- rôle
- spécialité, etc.
- ou je ne sais quoi d'autre (n'hésitez pas à ajouter vos exemples...).
- généalogie
- taxinomie de plantes
Je suis en train de regarder en détail le modèle
RDF afin de voir ce qu'il peut nous apporter. Il est peut-être envisageable d'en réaliser une version simplifiée qui réponde à nos besoins (quoique le modèle paraisse assez simple).
Je pense qu'il faut bien prendre le temps de discuter cet aspect parce qu'il va impacter tout le développement futur de
WikiNi.
--
CharlesNepote
L'esprit "wikini" serait
- de pouvoir écrire directement de tel triplet nom-qualité-valeur
- de pouvoir écrire une algèbre, une grammaire ( +, - *, /, inter, union...) de ceux-ci
Si j'inscris sur la page
NomAa? : Suivant_de_NomA. Une généralisation de la recherche-texte permet de retrouver tous les noms suivant_de_NomA. Soit {{recherche qualite ="suivant" nom="nomreel"}} (fonctionne sur mon
site
Plus ! j'aimerais pouvoir faire référence à l'ensemble des valeurs pour telle qualité d'une autre nom, par une écriture simple comme {{nom -> qualité}}. Je choisis cette notation, car il s'agit bien d'une action !
Mieux ! ceci me permettrait d'écrire des additions : Paul, ami de Pierre et Jacques, aurait : {{Pierre -> ami}} {{Jacques -> ami}} comme amis. Encore mieux ! mais comment écrire que Paul n'aime pas les amis de Pierre qui sont amis de Jacques ?
Autre remarque totalement inspirée par celle sur SQL "les définitions des champs et des tables sont elles-mêmes des champs et des tables".
L'esprit wiki serait de pouvoir créer aussi facilement des meta-pages que des pages... j'ai pas creusé l'idée...à voir. Mais j'ai le sentiment que l'idée de groupe de pages, de formats proposés n'est pas lointaine...Après tout, un meta-concept reste toujours un concept !
--
FidelioEspoir