Introduction
Ici on discute de la manière d'implémenter les droits d'accès dans SweetWiki.
Utilisateurs, groupes, rôles et actions
Inspiration 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.
![Snap1.jpg](/@api/deki/files/134/=Snap1.jpg)
After long discussion, we create our dependence own between "roles" and "action":
![table_htm (1).png](/@api/deki/files/210/=table_htm%20(1).png)
Spécification des droits pour une resource
Dans 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.
![Snap2 (2).jpg](/@api/deki/files/135/=Snap2%20(2).jpg)
Ontologies proposées et exemples d'annotation pour SweetWiki
Nous 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).
Example home page of user
<?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/#"
xml:base="http://sweetwiki.inria.fr/AMO_ontology.rdfs"
xmlns:xfoaf="http://www.foafrealm.org/xfoaf/0.1/#"
xmlns="http://sweetwiki.inria.fr/AMO_ontology.rdfs#"> <!-- Access Managment Ontology-->
<foaf:Person rdf:about="#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"/>
<hasRole rdf:resource="#Admin"/>
<foaf:knows>
<foaf:Person rdf:about="#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 restreint
Ici, la page a un accès privé, accessible et modifiable par Ania et le groupe des admins.
<?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/#"
xml:base="http://sweetwiki.inria.fr/AMO_ontology.rdfs"
xmlns:xfoaf="http://www.foafrealm.org/xfoaf/0.1/#"
xmlns="http://sweetwiki.inria.fr/AMO_ontology.rdfs#"> <!-- Access Managment Ontology-->
<Document rdf:about="#PageBy_AnnaKolomoiska">
<foaf:name>
PageBy_AnnaKolomoiska
</foaf:name>
<creator rdf:resource="#AnnaKolomoiska"/>
<hasAccessType rdf:resource="#Private"/>
</Document>
</rdf:RDF>
Example annotation groupe of admins
<?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/#"
xml:base="http://sweetwiki.inria.fr/AMO_ontology.rdfs"
xmlns:xfoaf="http://www.foafrealm.org/xfoaf/0.1/#"
xmlns="http://sweetwiki.inria.fr/AMO_ontology.rdfs#"> <!-- Access Managment Ontology-->
<Group rdf:about="#GroupAdmins">
<foaf:name>
Group of Admins
</foaf:name>
<foaf:member>
<foaf:Person rdf:about="#AnnaKolomoiska"/>
</foaf:member>
<hasRole rdf:resource="#Admin"/>
</Group>
</rdf:RDF>
Ontology
<?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/#"
xml:base="http://sweetwiki.inria.fr/AMO_ontology.rdfs"
xmlns:xfoaf="http://www.foafrealm.org/xfoaf/0.1/#"
xmlns="http://sweetwiki.inria.fr/AMO_ontology.rdfs#">
<!-- Access Managment Ontology-->
<owl:Ontology rdf:about="http://sweetwiki.inria.fr/AMO_ontology.rdfs">
<rdfs:comment>
Ontology for managment access rights
</rdfs:comment>
<rdfs:label>
Access Managment Ontology
</rdfs:label>
</owl:Ontology>
<!-- external clesses
Class: foaf:Agent (http://xmlns.com/foaf/spec/#term_Agent)
Agent - An agent (eg. person, group, software or physical artifact).
Class: foaf:Document (http://xmlns.com/foaf/spec/#term_Document)
Document - A document.
-->
<rdfs:Class rdf:ID="Agent">
<rdfs:subClassOf rdf:resource="foaf:Agent"/>
</rdfs:Class>
<rdfs:Class rdf:ID="Document">
<rdfs:subClassOf rdf:resource="foaf:Document"/>
</rdfs:Class>
<rdf:Property rdf:ID="creator">
<rdfs:domain rdf:resource="#Document"/>
<rdfs:range rdf:resource="#Agent"/>
<rdfs:label xml:lang="en">
creator of resourse
</rdfs:label>
<rdfs:subPropertyOf rdf:resource="foaf:maker"/>
</rdf:Property>
<!--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">
<rdf:type rdf:resource="#Role"/>
<rdfs:label xml:lang="en">
administrator
</rdfs:label>
<rdfs:comment xml:lang="en">
role of administrator
</rdfs:comment>
</rdfs:Class>
<rdfs:Class rdf:ID="Contributor">
<rdf:type rdf:resource="#Role"/>
<rdfs:label xml:lang="en">
contributor
</rdfs:label>
<rdfs:comment xml:lang="en">
role of contributor
</rdfs:comment>
</rdfs:Class>
<rdfs:Class rdf:ID="Guest">
<rdf:type rdf:resource="#Role"/>
<rdfs:label xml:lang="en">
guest
</rdfs:label>
<rdfs:comment xml:lang="en">
of guest
</rdfs:comment>
</rdfs:Class>
<rdfs:Class rdf:ID="AuthorizedActionOnResource">
<rdfs:subClassOf rdf:resource="#Action"/>
<rdfs:label xml:lang="en">
Authorized action on resource
</rdfs:label>
<rdfs:comment xml:lang="en">
an action on a resource
</rdfs:comment>
</rdfs:Class>
<rdfs:Class rdf:ID="Action">
<rdfs:label xml:lang="en">
action
</rdfs:label>
<rdfs:comment xml:lang="en">
an action on a resource
</rdfs:comment>
</rdfs:Class>
<rdfs:Class rdf:ID="ReadContent">
<rdf:type rdf:resource="#Action"/>
<rdfs:label xml:lang="en">
read
</rdfs:label>
<rdfs:comment xml:lang="en">
kind of action-read content of resource
</rdfs:comment>
</rdfs:Class>
<rdfs:Class rdf:ID="ModifyUserRights">
<rdf:type 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">
<rdf:type rdf:resource="#Action"/>
<rdfs:label xml:lang="en">
modify content
</rdfs:label>
<rdfs:comment xml:lang="en">
kind of action-modify content of resource
</rdfs:comment>
</rdfs:Class>
<rdfs:Class rdf:ID="ModifyAccessType">
<rdf:type rdf:resource="#Action"/>
<rdfs:label xml:lang="en">
delete
</rdfs:label>
<rdfs:comment xml:lang="en">
kind of action-Modify Access Type of resource
</rdfs:comment>
</rdfs:Class>
<rdfs:Class rdf:ID="ModifyListOfGivenAgent">
<rdf:type rdf:resource="#Action"/>
<rdfs:label xml:lang="en">
delete
</rdfs:label>
<rdfs:comment xml:lang="en">
kind of action-Modify List Of Given Agent of resource
</rdfs:comment>
</rdfs:Class>
<rdfs:Class rdf:ID="DeleteContent">
<rdf:type rdf:resource="#Action"/>
<rdfs:label xml:lang="en">
delete
</rdfs:label>
<rdfs:comment xml:lang="en">
kind of action-delete content of resource
</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">
<rdf:type 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">
<rdf:type 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">
<rdf:type 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="#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="#Document"/>
<rdfs:range rdf:resource="#AccessType"/>
<rdfs:label xml:lang="en">
access type to document
</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="hasGivenAgent">
<rdfs:domain rdf:resource="#Document"/>
<rdfs:range rdf:resource="#Agent"/>
<rdfs:label xml:lang="en">
agent, who has rights to modify and delete page
</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="hasAuthorizedActionOnResource">
<rdfs:domain rdf:resource="#Agent"/>
<rdfs:range rdf:resource="#AuthorizedActionOnResource"/>
<rdfs:label xml:lang="en">
authorized action, wich agent has on resouce
</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="hasActionOnResource">
<rdfs:domain rdf:resource="#AuthorizedActionOnResource"/>
<rdfs:range rdf:resource="#Action"/>
<rdfs:label xml:lang="en">
actions, wich agent has on resouce
</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="hasResource">
<rdfs:domain rdf:resource="#AuthorizedActionOnResource"/>
<rdfs:range rdf:resource="#Document"/>
<rdfs:label xml:lang="en">
resource, where agent has an action
</rdfs:label>
</rdf:Property>
<!--Descriptions-->
<rdf:Description rdf:about="#Guest">
<hasAction rdf:resource="#ReadContent"/>
</rdf:Description>
<rdf:Description rdf:about="#Contributor">
<hasAction rdf:resource="#CreateContent"/>
<hasAction rdf:resource="#ReadContent"/>
<hasAction rdf:resource="#ModifyContent"/>
<hasAction rdf:resource="#DeleteContent"/>
<hasAction rdf:resource="#ModifyListOfGivenAgent"/>
<hasAction rdf:resource="#ModifyAccessType"/>
</rdf:Description>
<rdf:Description rdf:about="#Admin">
<hasAction rdf:resource="#CreateContent"/>
<hasAction rdf:resource="#ReadContent"/>
<hasAction rdf:resource="#ModifyUserRights"/>
<hasAction rdf:resource="#ModifyContent"/>
<hasAction rdf:resource="#DeleteContent"/>
<hasAction rdf:resource="#ModifyListOfGivenAgent"/>
<hasAction rdf:resource="#ModifyAccessType"/>
</rdf:Description>
</rdf:RDF>
Rules
rule_about_access (1).rul
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rdf:RDF [
<!ENTITY cos "http://www.inria.fr/acacia/corese#">
<!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#">
<!ENTITY amo "http://sweetwiki.inria.fr/AMO_ontology.rdfs#">
<!ENTITY foaf "http://xmlns.com/foaf/0.1/#">
]>
<rdf:RDF xmlns:rdfs="&rdfs;" xmlns:rdf="&rdf;" xmlns:cos="&cos;" xmlns:amo="&amo;" xmlns:foaf="&foaf;">
<cos:rule cos:name="for_Given_Agent">
<!-- given agents have only such actions -->
<cos:if>
PREFIX amo: <&amo;>
{
?resource rdf:type amo:Document.
?resource amo:hasGivenAgent ?agent
}
</cos:if>
<cos:then>
{
?agent amo:hasAuthorizedActionOnResource ?auth_action_on_res.
?auth_action_on_res amo:hasActionOnResource amo:ReadContent.
?auth_action_on_res amo:hasActionOnResource amo:ModifyContent.
?auth_action_on_res amo:hasActionOnResource amo:DeleteContent.
?auth_action_on_res amo:hasActionOnResource amo:ModifyListOfGivenAgent.
?auth_action_on_res amo:hasActionOnResource amo:ModifyAccessType.
?auth_action_on_res amo:hasResource ?resource
}
</cos:then>
</cos:rule>
<cos:rule cos:name="Creator_is_Given">
<!-- access for creator -->
<cos:if>
PREFIX amo: <&amo;>
{
?resource amo:creator ?agent
}
</cos:if>
<cos:then>
{
?resource amo:hasGivenAgent ?agent
}
</cos:then>
</cos:rule>
<cos:rule cos:name="for_Admin">
<!-- admins have only such actions -->
<cos:if>
PREFIX amo: <&amo;>
{
?resource rdf:type amo:Document.
?agent amo:hasRole amo:Admin
}
</cos:if>
<cos:then>
{
?resource amo:hasGivenAgent ?agent.
?agent amo:hasAuthorizedActionOnResource ?auth_action_on_res.
?auth_action_on_res amo:hasActionOnResource amo:ModifyUserRights.
?auth_action_on_res amo:hasResource ?resource
}
</cos:then>
</cos:rule>
<cos:rule cos:name="Public_for_Guest">
<!-- if access Type of page "Public"-enyone have such actions -->
<cos:if>
PREFIX amo: <&amo;>
{
?resource amo:hasAccessType amo:Public.
?agent rdf:type amo:Agent
}
</cos:if>
<cos:then>
{
?agent amo:hasAuthorizedActionOnResource ?auth_action_on_res.
?auth_action_on_res amo:hasActionOnResource amo:ReadContent.
?auth_action_on_res amo:hasResource ?resource
}
</cos:then>
</cos:rule>
<cos:rule cos:name="Public_for_Contributor">
<!-- if access Type of page "Public" - contributors have such actions -->
<cos:if>
PREFIX amo: <&amo;>
{
?resource amo:hasAccessType amo:Public.
?agent amo:hasRole amo:Contributor
}
</cos:if>
<cos:then>
{
?agent amo:hasAuthorizedActionOnResource ?auth_action_on_res.
?auth_action_on_res amo:hasActionOnResource amo:ReadContent.
?auth_action_on_res amo:hasActionOnResource amo:ModifyContent.
?auth_action_on_res amo:hasActionOnResource amo:DeleteContent.
?auth_action_on_res amo:hasResource ?resource
}
</cos:then>
</cos:rule>
<cos:rule cos:name="SemiPublic_for_Guest_or_Contributor">
<!-- if access Type of page "SemiPublic"- everyone have such actions -->
<cos:if>
PREFIX amo: <&amo;>
{
?resource amo:hasAccessType amo:SemiPublic.
?agent rdf:type amo:Agent
}
</cos:if>
<cos:then>
{
?agent amo:hasAuthorizedActionOnResource ?auth_action_on_res.
?auth_action_on_res amo:hasActionOnResource amo:ReadContent.
?auth_action_on_res amo:hasResource ?resource
}
</cos:then>
</cos:rule>
</rdf:RDF>
SPARQL Requests examples
Example 1.
using all files
Query :
prefix amo: <http://sweetwiki.inria.fr/AMO_ontology.rdfs#>
select ?resource ?agent where {
?agent amo:hasAuthorizedActionOnResource ?auth_action_on_res.
?auth_action_on_res amo:hasResource ?resource
?auth_action_on_res amo:hasActionOnResource amo:DeleteContent
}
Result :
<?xml version='1.0' encoding='Cp1251'?>
<cos:result xmlns:cos='http://www.inria.fr/acacia/corese#'>
<cos:tquery>
<![CDATA[prefix amo: <http://sweetwiki.inria.fr/AMO_ontology.rdfs#>
select list display xml ?resource ?agent
where
{ ?agent amo:hasAuthorizedActionOnResource ?auth_action_on_res . ?auth_action_on_res amo:hasResource ?resource . ?auth_action_on_res amo:hasActionOnResource amo:DeleteContent . }
]]></cos:tquery>
<cos:info><![CDATA[
0.00 s for 5 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='resource'/>
<variable name='agent'/>
</head>
<results ordered='false' distinct='false' >
<result>
<binding name='resource'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#PageBy_AngelaBeesley</uri></binding>
<binding name='agent'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#AnnaKolomoiska</uri></binding>
</result>
<result>
<binding name='resource'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#PageBy_AngelaBeesley</uri></binding>
<binding name='agent'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#GroupAdmins</uri></binding>
</result>
<result>
<binding name='resource'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#PageBy_AngelaBeesley</uri></binding>
<binding name='agent'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#AngelaBeesley</uri></binding>
</result>
<result>
<binding name='resource'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#PageBy_AnnaKolomoiska</uri></binding>
<binding name='agent'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#GroupAdmins</uri></binding>
</result>
<result>
<binding name='resource'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#PageBy_AnnaKolomoiska</uri></binding>
<binding name='agent'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#AnnaKolomoiska</uri></binding>
</result>
</results>
</sparql>
</cos:result>
Example 2
using all files
Query:
prefix amo: <http://sweetwiki.inria.fr/AMO_ontology.rdfs#>
select ?agent ?action where
{
?agent amo:hasAuthorizedActionOnResource ?auth_act.
?auth_act amo:hasActionOnResource ?action.
?auth_act amo:hasResource amo:PageBy_AnnaKolomoiska
}
order by ?agent
Result:
<?xml version='1.0' encoding='Cp1251'?>
<cos:result xmlns:cos='http://www.inria.fr/acacia/corese#'>
<cos:tquery>
<![CDATA[prefix amo: <http://sweetwiki.inria.fr/AMO_ontology.rdfs#>
select list display xml ?agent ?action
where
{ ?agent amo:hasAuthorizedActionOnResource ?auth_act . ?auth_act amo:hasActionOnResource ?action . ?auth_act amo:hasResource <amo:PageBy_AnnaKolomoiska> . } order by ?agent
]]></cos:tquery>
<cos:info><![CDATA[
0.00 s for 12 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='agent'/>
<variable name='action'/>
</head>
<results ordered='true' distinct='false' >
<result>
<binding name='agent'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#AnnaKolomoiska</uri></binding>
<binding name='action'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#ModifyUserRights</uri></binding>
</result>
<result>
<binding name='agent'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#AnnaKolomoiska</uri></binding>
<binding name='action'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#ReadContent</uri></binding>
</result>
<result>
<binding name='agent'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#AnnaKolomoiska</uri></binding>
<binding name='action'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#ModifyContent</uri></binding>
</result>
<result>
<binding name='agent'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#AnnaKolomoiska</uri></binding>
<binding name='action'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#ModifyAccessType</uri></binding>
</result>
<result>
<binding name='agent'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#AnnaKolomoiska</uri></binding>
<binding name='action'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#ModifyListOfGivenAgent</uri></binding>
</result>
<result>
<binding name='agent'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#AnnaKolomoiska</uri></binding>
<binding name='action'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#DeleteContent</uri></binding>
</result>
<result>
<binding name='agent'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#GroupAdmins</uri></binding>
<binding name='action'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#ModifyUserRights</uri></binding>
</result>
<result>
<binding name='agent'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#GroupAdmins</uri></binding>
<binding name='action'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#ReadContent</uri></binding>
</result>
<result>
<binding name='agent'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#GroupAdmins</uri></binding>
<binding name='action'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#ModifyContent</uri></binding>
</result>
<result>
<binding name='agent'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#GroupAdmins</uri></binding>
<binding name='action'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#ModifyAccessType</uri></binding>
</result>
<result>
<binding name='agent'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#GroupAdmins</uri></binding>
<binding name='action'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#ModifyListOfGivenAgent</uri></binding>
</result>
<result>
<binding name='agent'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#GroupAdmins</uri></binding>
<binding name='action'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#DeleteContent</uri></binding>
</result>
</results>
</sparql>
</cos:result>
Discussions et questions
- Au lieu de définir les groupes et les rôles par défaut : utiliser des règles OWL lite ?
- Utilisation de SIOC:user ou sioc:user_groups_of au lieu de foaf:agent
- Problème de sécurité, ne pas indiquer à quels groupes les personnes appartiennent dans le home page, mais dans des annotations non accessibles de l'extérieur,
- Utiliser SIOC types qui définit déjà ce qu'est un contributeur, un guest, un admin ? Soucis : SIOC Types a l'air non fini et surtout ces rôles sont au niveau du "site" et mal définis...