Vous n'êtes pas connecté. Connexion
|
|
Droits d'accès dans SweetWikiDe $1Table des matières
Utilisateurs, groupes, rôles et actionsInspiration première : la manière dont DekiWiki gère les droits. Dans la partie admin, il y a un control panel qui permet de gérer des "Roles", un rôle étant associé à une action (cf screenshot ci-dessous). Il y a aussi la gestion des utilisateurs et des groupes, un groupe pouvant se composer d'une liste d'utilisateurs et/ou d'autres groupes. Un utilisateur ou un groupe a un role par défaut.
Spécification des droits pour une resourceDans DekiWiki, pour chaque page, on spécifie son accès "public, semi-public ou privé", et pour les deux derniers cas, on donne la liste des utilisateurs et/ou des groupes qui ont le droit de modifier ou de voir et modifier.
Ontologies proposées et exemples d'annotation pour SweetWikiNous proposons d'étendre l'ontologie du wiki et d'utiliser conjointement une ontologie intitulée provisoirement amo_ont (Access Management Ontology). Nous supposons que les home page de SweetWiki contiennent un profil FOAF dédié à SweetWiki (qui pourra être référencé par un profil FOAF "global", un peu à la manière d'Adil qui a des profils FOAF légers/dédiés sur lastfm, etc... et un gros profil FOAF sur un URL de l'inria). Exemple de profil FOAF dans une home page de sweetwiki<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:xfoaf="http://www.foafrealm.org/xfoaf/0.1/" xmlns:ex="http://example.org/ex#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:wiki="http://sweetwiki.inria.fr/ontology" xmlns:sparql="http://www.w3.org/2005/sparql-results#" xml:base="http://sweetwiki.inria.fr/AMO_ontology#" xmlns:amo="http://sweetwiki.inria.fr/AMO_ontology#"> <!-- Access Managment Ontology--> <foaf:Person rdf:nodeID="AnnaKolomoiska" > <foaf:name> Anna Kolomoiska </foaf:name> <foaf:mbox rdf:resource="kalamo4ka@ukr.net"/> <foaf:nick> kalamo4ka </foaf:nick> <foaf:interest rdf:resource="http://www.wikipedia.org" rdfs:label="Wikipedia"/> <foaf:interest> Rollers </foaf:interest> <foaf:homepage rdf:resource="/HomePage_AnnaKolomoiska"/> <amo:hasRole> <amo:Role rdf:nodeID="Admin"/> </amo:hasRole> <foaf:knows> <foaf:Person rdf:nodeID="AngelaBeesley"> <foaf:name> Angela Beesley </foaf:name> <xfoaf:friendshipLevel> 0.7 </xfoaf:friendshipLevel> <foaf:homepage rdf:resource="/HomePage_AngelaBeesley"/> </foaf:Person> </foaf:knows> <foaf:knows> <foaf:Person> <foaf:name> Nastya Baranenko </foaf:name> <xfoaf:friendshipLevel> 0.9 </xfoaf:friendshipLevel> </foaf:Person> </foaf:knows> </foaf:Person> </rdf:RDF> Exemple de page annotée pour spécifier un accès restreintIci, la page a un accès privé, accessible et modifiable par Ania et le groupe des admins. <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:xfoaf="http://www.foafrealm.org/xfoaf/0.1/" xmlns:ex="http://example.org/ex#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:wiki="http://sweetwiki.inria.fr/ontology" xmlns:sparql="http://www.w3.org/2005/sparql-results#" xml:base="http://sweetwiki.inria.fr/AMO_ontology#" xmlns:amo="http://sweetwiki.inria.fr/AMO_ontology#"> <!-- Access Managment Ontology--> <foaf:Document rdf:nodeID="PageBy_AnnaKolomoiska"> <foaf:name> PageBy_AnnaKolomoiska </foaf:name> <foaf:maker rdf:nodeID="AnnaKolomoiska"/> <amo:hasAccessType rdf:nodeID="Private"/> <amo:givenAgent> <foaf:Person rdf:nodeID="AnnaKolomoiska"/> </amo:givenAgent> <amo:givenAgent> <foaf:Group rdf:nodeID="GroupAdmin"/> </amo:givenAgent> </foaf:Document> </rdf:RDF> Exemple d'annotation définissant le groupe des admins et leurs rôle/actions par défaut<?xml version="1.0" encoding="UTF-8"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:xfoaf="http://www.foafrealm.org/xfoaf/0.1/" xmlns:ex="http://example.org/ex#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:wiki="http://sweetwiki.inria.fr/ontology" xmlns:sparql="http://www.w3.org/2005/sparql-results#" xml:base ="http://sweetwiki.inria.fr/AMO_ontology.rdfs/" xmlns:amo="http://sweetwiki.inria.fr/AMO_ontology.rdfs#" > <!-- Access Managment Ontology--> <foaf:Group rdf:nodeID="GroupAdmin"> <foaf:name> Group of Admins </foaf:name> <foaf:member> <foaf:Person rdf:nodeID="AnnaKolomoiska"/> </foaf:member> <amo:hasRole> <amo:Role rdf:nodeID="Admin"/> </amo:hasRole> </foaf:Group> </rdf:RDF> Description des rôles<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:wiki="http://sweetwiki.inria.fr/ontology#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xml:base ="http://sweetwiki.inria.fr/AMO_ontology.rdfs/" xmlns:amo="http://sweetwiki.inria.fr/AMO_ontology.rdfs#" > <!-- Access Managment Ontology--> <rdf:Description rdf:about="#Guest"> <amo:Guest> <amo:hasAction rdf:nodeID="Read"/> </amo:Guest> </rdf:Description> <rdf:Description rdf:about="#Contributor"> <amo:Contributor> <amo:hasAction rdf:nodeID="Read"/> </amo:Contributor> <amo:Contributor> <amo:hasAction rdf:nodeID="ModifyContents"/> </amo:Contributor> </rdf:Description> <rdf:Description rdf:about="#Admin"> <amo:Admin> <amo:hasAction rdf:nodeID="Read"/> </amo:Admin> <amo:Admin> <amo:hasAction rdf:nodeID="ModifyRights"/> </amo:Admin> <amo:Admin> <amo:hasAction rdf:nodeID="ModifyContents"/> </amo:Admin> <amo:Admin> <amo:hasAction rdf:nodeID="Delete"/> </amo:Admin> </rdf:Description> </rdf:RDF> Descrition des types d'accès<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:wiki="http://sweetwiki.inria.fr/ontology#" xmlns:foaf="http://xmlns.com/foaf/0.1/#" xml:base ="http://sweetwiki.inria.fr/AMO_ontology.rdfs/" xmlns:amo="http://sweetwiki.inria.fr/AMO_ontology.rdfs#" > <!-- Access Managment Ontology--> <rdf:Description rdf:about="#Private"> <rdfs:comment> nobody can do nothing, except given ageents </rdfs:comment> </rdf:Description> <rdf:Description rdf:about="#SemiPublic"> <amo:availableAction rdf:nodeID="ModifyContents"/> <amo:availableAction rdf:nodeID="Delete"/> </rdf:Description> <rdf:Description rdf:about="#Public"> <amo:availableAction rdf:nodeID="Read"/> <amo:availableAction rdf:nodeID="ModifyContents"/> <amo:availableAction rdf:nodeID="Delete"/> </rdf:Description> <rdf:Description rdf:about="#givenAgent"> <amo:hasAction rdf:nodeID="Read"/> <amo:hasAction rdf:nodeID="ModifyContents"/> <amo:hasAction rdf:nodeID="Delete"/> </rdf:Description> </rdf:RDF> Et enfin l'ontologie dans sa version de travail<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:wiki="http://sweetwiki.inria.fr/ontology#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xml:base ="http://sweetwiki.inria.fr/AMO_ontology.rdfs/"> <!-- Access Managment Ontology--> <owl:Ontology rdf:about="#"> <rdfs:comment> Ontology for managment access rights </rdfs:comment> <rdfs:label> Access Managment Ontology </rdfs:label> </owl:Ontology> <!--Meta --> <owl:TransitiveProperty rdf:about="http://www.w3.org/2000/01/rdf-schema#subClassOf"/> <!--Class--> <rdfs:Class rdf:ID="Role"> <rdfs:label xml:lang="en"> role </rdfs:label> <rdfs:comment xml:lang="en"> a role </rdfs:comment> </rdfs:Class> <rdfs:Class rdf:ID="Admin"> <rdfs:subClassOf rdf:resource="#Role"/> <rdfs:label xml:lang="en"> administrator </rdfs:label> <rdfs:comment xml:lang="en"> have the role of administrator </rdfs:comment> </rdfs:Class> <rdfs:Class rdf:ID="Contributor"> <rdfs:subClassOf rdf:resource="#Role"/> <rdfs:label xml:lang="en"> contributor </rdfs:label> <rdfs:comment xml:lang="en"> have the role of contributor </rdfs:comment> </rdfs:Class> <rdfs:Class rdf:ID="Guest"> <rdfs:subClassOf rdf:resource="#Role"/> <rdfs:label xml:lang="en"> guest </rdfs:label> <rdfs:comment xml:lang="en"> have the role of guest </rdfs:comment> </rdfs:Class> <rdfs:Class rdf:ID="Action"> <rdfs:label xml:lang="en"> action </rdfs:label> <rdfs:comment xml:lang="en"> an action </rdfs:comment> </rdfs:Class> <rdfs:Class rdf:ID="Read"> <rdfs:subClassOf rdf:resource="#Action"/> <rdfs:label xml:lang="en"> read </rdfs:label> <rdfs:comment xml:lang="en"> kind of action-read </rdfs:comment> </rdfs:Class> <rdfs:Class rdf:ID="ModifyRights"> <rdfs:subClassOf rdf:resource="#Action"/> <rdfs:label xml:lang="en"> modify rights </rdfs:label> <rdfs:comment xml:lang="en"> kind of action-modify rights of users </rdfs:comment> </rdfs:Class> <rdfs:Class rdf:ID="ModifyContent"> <rdfs:subClassOf rdf:resource="#Action"/> <rdfs:label xml:lang="en"> modify content </rdfs:label> <rdfs:comment xml:lang="en"> kind of action-modify content of pages </rdfs:comment> </rdfs:Class> <rdfs:Class rdf:ID="Delete"> <rdfs:subClassOf rdf:resource="#Action"/> <rdfs:label xml:lang="en"> delete </rdfs:label> <rdfs:comment xml:lang="en"> kind of action-delete </rdfs:comment> </rdfs:Class> <rdfs:Class rdf:ID="AccessType"> <rdfs:label xml:lang="en"> access type </rdfs:label> <rdfs:comment xml:lang="en"> type of access </rdfs:comment> </rdfs:Class> <rdfs:Class rdf:ID="Private"> <rdfs:subClassOf rdf:resource="#AccessType"/> <rdfs:label xml:lang="en"> private </rdfs:label> <rdfs:comment xml:lang="en"> private access-nobody can read, modify, delete, except given persons and groups </rdfs:comment> </rdfs:Class> <rdfs:Class rdf:ID="SemiPublic"> <rdfs:subClassOf rdf:resource="#AccessType"/> <rdfs:label xml:lang="en"> semiPublic </rdfs:label> <rdfs:comment xml:lang="en"> semiPublic access-everyone can read, but only given persons and groups can modify and delete </rdfs:comment> </rdfs:Class> <rdfs:Class rdf:ID="Public"> <rdfs:subClassOf rdf:resource="#AccessType"/> <rdfs:label xml:lang="en"> public </rdfs:label> <rdfs:comment xml:lang="en"> public access-everyone can read, modify and delete </rdfs:comment> </rdfs:Class> <!--Properties--> <rdf:Property rdf:ID="hasAction"> <rdfs:domain rdf:resource="#Role"/> <rdfs:range rdf:resource="#Action"/> <rdfs:label xml:lang="en"> action for this role </rdfs:label> </rdf:Property> <rdf:Property rdf:ID="hasRole"> <rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/#Agent"/> <rdfs:range rdf:resource="#Role"/> <rdfs:label xml:lang="en"> role of agent </rdfs:label> </rdf:Property> <rdf:Property rdf:ID="hasAccessType"> <rdfs:domain rdf:resource="http://sweetwiki.inria.fr/ontology#Document"/> <rdfs:range rdf:resource="#AccessType"/> <rdfs:label xml:lang="en"> access type to document </rdfs:label> </rdf:Property> <rdf:Property rdf:ID="givenAgent"> <rdfs:domain rdf:resource="#Document"/> <rdfs:range rdf:resource="http://xmlns.com/foaf/0.1/#Agent"/> <rdfs:label xml:lang="en"> agent, who has rights to modify and delete page </rdfs:label> </rdf:Property> <rdf:Property rdf:ID="availableAction"> <rdfs:domain rdf:resource="#AccessType"/> <rdfs:range rdf:resource="http://xmlns.com/foaf/0.1/#Action"/> <rdfs:label xml:lang="en"> rights witch you have on page with such access type, if you're ordinary user </rdfs:label> </rdf:Property> </rdf:RDF> Guillaume : je ne comprend pas la dernière déclaration dans l'ontology, on a dans l'ontologie 'givenAgent' qui a pour domain 'Document' et pour range 'Agent'
pas de gestion de l'héritage des droits? Rien n'empêche de le modéliser même si on ne l'implèmente pas ca peut être intéressant si on publit l'ontologie SPARQL Requests examplesOntology file used : Annotation file used : PREFIX foaf: <http://xmlns.com/foaf/0.1/> select ?name where{ ?x foaf:nick ?name } Result : <?xml version='1.0' encoding='Cp1251'?> <cos:result xmlns:cos='http://www.inria.fr/acacia/corese#'> <cos:tquery> <![CDATA[prefix foaf: <http://xmlns.com/foaf/0.1/> select list display xml ?name where { ?x foaf:nick ?name . } ]]></cos:tquery> <cos:info><![CDATA[ 0.00 s for 1 projections ]]></cos:info> <sparql xmlns='http://www.w3.org/2005/sparql-results#' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' > <head> <variable name='name'/> </head> <results ordered='false' distinct='false' > <result> <binding name='name'><literal datatype='http://www.w3.org/2001/XMLSchema#string'> kalamo4ka </literal></binding> </result> </results> </sparql> </cos:result> Discussions et questions
|
Powered by MindTouch Deki Open Source Edition v.8.08 |