Accueil > Intranet Michel Buffa > Droits d'accès dans SweetWiki

Droits d'accès dans SweetWiki

De $1

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

After long discussion, we create our dependence own between "roles" and "action":

table_htm (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

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

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <rdf:RDF  
  3.  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"  
  4.  xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"  
  5.  xmlns:owl="http://www.w3.org/2002/07/owl#"  
  6.  xmlns:foaf="http://xmlns.com/foaf/0.1/#"  
  7.  xml:base="http://sweetwiki.inria.fr/AMO_ontology.rdfs"  
  8.  xmlns:xfoaf="http://www.foafrealm.org/xfoaf/0.1/#"  
  9.  xmlns="http://sweetwiki.inria.fr/AMO_ontology.rdfs#">   <!-- Access Managment Ontology-->   
  10.       
  11.     <foaf:Person rdf:about="#AnnaKolomoiska" >  
  12.         <foaf:name>  
  13.             Anna Kolomoiska  
  14.         </foaf:name>  
  15.         <foaf:mbox rdf:resource="kalamo4ka@ukr.net"/>  
  16.         <foaf:nick>  
  17.             kalamo4ka  
  18.         </foaf:nick>  
  19.         <foaf:interest rdf:resource="http://www.wikipedia.org" rdfs:label="Wikipedia"/>  
  20.         <foaf:interest>  
  21.             Rollers  
  22.         </foaf:interest>  
  23.         <foaf:homepage rdf:resource="#HomePage_AnnaKolomoiska"/>  
  24.         <hasRole rdf:resource="#Admin"/>  
  25.         <foaf:knows>  
  26.             <foaf:Person rdf:about="#AngelaBeesley">  
  27.                 <foaf:name>  
  28.                     Angela Beesley  
  29.                 </foaf:name>  
  30.                 <xfoaf:friendshipLevel>  
  31.                     0.7  
  32.                 </xfoaf:friendshipLevel>  
  33.                 <foaf:homepage rdf:resource="#HomePage_AngelaBeesley"/>  
  34.             </foaf:Person>  
  35.         </foaf:knows>  
  36.         <foaf:knows>  
  37.             <foaf:Person>  
  38.                 <foaf:name>  
  39.                     Nastya Baranenko  
  40.                 </foaf:name>  
  41.                 <xfoaf:friendshipLevel>  
  42.                     0.9  
  43.                 </xfoaf:friendshipLevel>  
  44.             </foaf:Person>  
  45.         </foaf:knows>  
  46.           
  47.     </foaf:Person>  
  48.       
  49. </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.

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <rdf:RDF  
  3.  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"  
  4.  xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"  
  5.  xmlns:owl="http://www.w3.org/2002/07/owl#"  
  6.  xmlns:foaf="http://xmlns.com/foaf/0.1/#"  
  7.  xml:base="http://sweetwiki.inria.fr/AMO_ontology.rdfs"  
  8.  xmlns:xfoaf="http://www.foafrealm.org/xfoaf/0.1/#"  
  9.  xmlns="http://sweetwiki.inria.fr/AMO_ontology.rdfs#">   <!-- Access Managment Ontology-->    
  10.   
  11.     <Document rdf:about="#PageBy_AnnaKolomoiska">  
  12.         <foaf:name>  
  13.             PageBy_AnnaKolomoiska  
  14.         </foaf:name>  
  15.         <creator rdf:resource="#AnnaKolomoiska"/>  
  16.         <hasAccessType rdf:resource="#Private"/>              
  17.     </Document>  
  18.       
  19. </rdf:RDF>  

 

Example annotation groupe of admins

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <rdf:RDF  
  3.  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"  
  4.  xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"  
  5.  xmlns:owl="http://www.w3.org/2002/07/owl#"  
  6.  xmlns:foaf="http://xmlns.com/foaf/0.1/#"  
  7.  xml:base="http://sweetwiki.inria.fr/AMO_ontology.rdfs"  
  8.  xmlns:xfoaf="http://www.foafrealm.org/xfoaf/0.1/#"  
  9.  xmlns="http://sweetwiki.inria.fr/AMO_ontology.rdfs#">   <!-- Access Managment Ontology-->   
  10.    
  11.     <Group rdf:about="#GroupAdmins">  
  12.         <foaf:name>  
  13.             Group of Admins   
  14.         </foaf:name>  
  15.         <foaf:member>  
  16.             <foaf:Person rdf:about="#AnnaKolomoiska"/>  
  17.         </foaf:member>    
  18.         <hasRole rdf:resource="#Admin"/>       
  19.     </Group>  
  20.       
  21. </rdf:RDF>  

 

Ontology

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <rdf:RDF  
  3.  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"  
  4.  xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"  
  5.  xmlns:owl="http://www.w3.org/2002/07/owl#"  
  6.  xmlns:foaf="http://xmlns.com/foaf/0.1/#"  
  7.  xml:base="http://sweetwiki.inria.fr/AMO_ontology.rdfs"  
  8.  xmlns:xfoaf="http://www.foafrealm.org/xfoaf/0.1/#"  
  9.  xmlns="http://sweetwiki.inria.fr/AMO_ontology.rdfs#">  
  10.       
  11.     <!-- Access Managment Ontology-->  
  12.       
  13.     <owl:Ontology rdf:about="http://sweetwiki.inria.fr/AMO_ontology.rdfs">  
  14.         <rdfs:comment>  
  15.             Ontology for managment access rights  
  16.         </rdfs:comment>  
  17.         <rdfs:label>  
  18.             Access Managment Ontology  
  19.         </rdfs:label>  
  20.     </owl:Ontology>  
  21.       
  22.       
  23.     <!-- external clesses  
  24.       
  25.     Class: foaf:Agent (http://xmlns.com/foaf/spec/#term_Agent)  
  26.     Agent - An agent (eg. person, group, software or physical artifact).  
  27.       
  28.     Class: foaf:Document (http://xmlns.com/foaf/spec/#term_Document)  
  29.     Document - A document.  
  30.       
  31.     -->  
  32.       
  33.     <rdfs:Class rdf:ID="Agent">  
  34.         <rdfs:subClassOf rdf:resource="foaf:Agent"/>  
  35.     </rdfs:Class>  
  36.       
  37.     <rdfs:Class rdf:ID="Document">  
  38.         <rdfs:subClassOf rdf:resource="foaf:Document"/>  
  39.     </rdfs:Class>  
  40.       
  41.       
  42.     <rdf:Property rdf:ID="creator">  
  43.         <rdfs:domain rdf:resource="#Document"/>  
  44.         <rdfs:range rdf:resource="#Agent"/>  
  45.         <rdfs:label xml:lang="en">  
  46.             creator of resourse  
  47.         </rdfs:label>  
  48.         <rdfs:subPropertyOf rdf:resource="foaf:maker"/>  
  49.     </rdf:Property>  
  50.       
  51.     <!--Class-->  
  52.       
  53.     <rdfs:Class rdf:ID="Role">  
  54.         <rdfs:label xml:lang="en">  
  55.             role  
  56.         </rdfs:label>  
  57.         <rdfs:comment xml:lang="en">  
  58.             a role  
  59.         </rdfs:comment>  
  60.     </rdfs:Class>  
  61.       
  62.     <rdfs:Class rdf:ID="Admin">  
  63.         <rdf:type rdf:resource="#Role"/>  
  64.         <rdfs:label xml:lang="en">  
  65.             administrator  
  66.         </rdfs:label>  
  67.         <rdfs:comment xml:lang="en">  
  68.             role of administrator  
  69.         </rdfs:comment>  
  70.     </rdfs:Class>  
  71.       
  72.     <rdfs:Class rdf:ID="Contributor">  
  73.         <rdf:type rdf:resource="#Role"/>  
  74.         <rdfs:label xml:lang="en">  
  75.             contributor  
  76.         </rdfs:label>  
  77.         <rdfs:comment xml:lang="en">  
  78.             role of contributor  
  79.         </rdfs:comment>  
  80.     </rdfs:Class>  
  81.       
  82.     <rdfs:Class rdf:ID="Guest">  
  83.         <rdf:type rdf:resource="#Role"/>  
  84.         <rdfs:label xml:lang="en">  
  85.             guest  
  86.         </rdfs:label>  
  87.         <rdfs:comment xml:lang="en">  
  88.             of guest  
  89.         </rdfs:comment>  
  90.     </rdfs:Class>     
  91.       
  92.     <rdfs:Class rdf:ID="AuthorizedActionOnResource">  
  93.         <rdfs:subClassOf rdf:resource="#Action"/>  
  94.         <rdfs:label xml:lang="en">  
  95.             Authorized action on resource  
  96.         </rdfs:label>  
  97.         <rdfs:comment xml:lang="en">  
  98.             an action on a resource  
  99.         </rdfs:comment>  
  100.     </rdfs:Class>   
  101.       
  102.     <rdfs:Class rdf:ID="Action">  
  103.         <rdfs:label xml:lang="en">  
  104.             action  
  105.         </rdfs:label>  
  106.         <rdfs:comment xml:lang="en">  
  107.             an action on a resource  
  108.         </rdfs:comment>  
  109.     </rdfs:Class>  
  110.       
  111.     <rdfs:Class rdf:ID="ReadContent">  
  112.         <rdf:type rdf:resource="#Action"/>  
  113.         <rdfs:label xml:lang="en">  
  114.             read  
  115.         </rdfs:label>  
  116.         <rdfs:comment xml:lang="en">  
  117.             kind of action-read content of resource  
  118.         </rdfs:comment>  
  119.     </rdfs:Class>  
  120.       
  121.     <rdfs:Class rdf:ID="ModifyUserRights">  
  122.         <rdf:type rdf:resource="#Action"/>  
  123.         <rdfs:label xml:lang="en">  
  124.             modify rights  
  125.         </rdfs:label>  
  126.         <rdfs:comment xml:lang="en">  
  127.             kind of action-modify rights of users  
  128.         </rdfs:comment>  
  129.     </rdfs:Class>  
  130.       
  131.     <rdfs:Class rdf:ID="ModifyContent">  
  132.         <rdf:type rdf:resource="#Action"/>  
  133.         <rdfs:label xml:lang="en">  
  134.             modify content  
  135.         </rdfs:label>  
  136.         <rdfs:comment xml:lang="en">  
  137.             kind of action-modify content of resource  
  138.         </rdfs:comment>  
  139.     </rdfs:Class>  
  140.     
  141.     <rdfs:Class rdf:ID="ModifyAccessType">  
  142.         <rdf:type rdf:resource="#Action"/>  
  143.         <rdfs:label xml:lang="en">  
  144.             delete  
  145.         </rdfs:label>  
  146.         <rdfs:comment xml:lang="en">  
  147.             kind of action-Modify Access Type of resource  
  148.         </rdfs:comment>  
  149.     </rdfs:Class>  
  150.       
  151.     <rdfs:Class rdf:ID="ModifyListOfGivenAgent">  
  152.         <rdf:type rdf:resource="#Action"/>  
  153.         <rdfs:label xml:lang="en">  
  154.             delete  
  155.         </rdfs:label>  
  156.         <rdfs:comment xml:lang="en">  
  157.             kind of action-Modify List Of Given Agent of resource  
  158.         </rdfs:comment>  
  159.     </rdfs:Class>    
  160.       
  161.     <rdfs:Class rdf:ID="DeleteContent">  
  162.         <rdf:type rdf:resource="#Action"/>  
  163.         <rdfs:label xml:lang="en">  
  164.             delete  
  165.         </rdfs:label>  
  166.         <rdfs:comment xml:lang="en">  
  167.             kind of action-delete content of resource  
  168.         </rdfs:comment>  
  169.     </rdfs:Class>  
  170.          
  171.     <rdfs:Class rdf:ID="AccessType">  
  172.         <rdfs:label xml:lang="en">  
  173.             access type  
  174.         </rdfs:label>  
  175.         <rdfs:comment xml:lang="en">  
  176.             type of access  
  177.         </rdfs:comment>  
  178.     </rdfs:Class>  
  179.       
  180.     <rdfs:Class rdf:ID="Private">  
  181.         <rdf:type rdf:resource="#AccessType"/>  
  182.         <rdfs:label xml:lang="en">  
  183.             private  
  184.         </rdfs:label>  
  185.         <rdfs:comment xml:lang="en">  
  186.             private access-nobody can read, modify, delete, except given persons and groups  
  187.         </rdfs:comment>  
  188.     </rdfs:Class>  
  189.       
  190.     <rdfs:Class rdf:ID="SemiPublic">  
  191.         <rdf:type rdf:resource="#AccessType"/>  
  192.         <rdfs:label xml:lang="en">  
  193.             semiPublic  
  194.         </rdfs:label>  
  195.         <rdfs:comment xml:lang="en">  
  196.             semiPublic access-everyone can read, but only given persons and groups can modify and delete  
  197.         </rdfs:comment>  
  198.     </rdfs:Class>  
  199.       
  200.     <rdfs:Class rdf:ID="Public">  
  201.         <rdf:type rdf:resource="#AccessType"/>  
  202.         <rdfs:label xml:lang="en">  
  203.             public  
  204.         </rdfs:label>  
  205.         <rdfs:comment xml:lang="en">  
  206.             public access-everyone can read, modify and delete  
  207.         </rdfs:comment>  
  208.     </rdfs:Class>  
  209.       
  210.       
  211.     <!--Properties-->  
  212.       
  213.     <rdf:Property rdf:ID="hasAction">  
  214.         <rdfs:domain rdf:resource="#Role"/>  
  215.         <rdfs:range rdf:resource="#Action"/>  
  216.         <rdfs:label xml:lang="en">  
  217.             action for this role  
  218.         </rdfs:label>  
  219.     </rdf:Property>  
  220.       
  221.     <rdf:Property rdf:ID="hasRole">  
  222.         <rdfs:domain rdf:resource="#Agent"/>  
  223.         <rdfs:range rdf:resource="#Role"/>  
  224.         <rdfs:label xml:lang="en">  
  225.             role of agent  
  226.         </rdfs:label>  
  227.     </rdf:Property>  
  228.       
  229.     <rdf:Property rdf:ID="hasAccessType">  
  230.         <rdfs:domain rdf:resource="#Document"/>  
  231.         <rdfs:range rdf:resource="#AccessType"/>  
  232.         <rdfs:label xml:lang="en">  
  233.             access type to document  
  234.         </rdfs:label>  
  235.     </rdf:Property>  
  236.       
  237.     <rdf:Property rdf:ID="hasGivenAgent">  
  238.         <rdfs:domain rdf:resource="#Document"/>  
  239.         <rdfs:range rdf:resource="#Agent"/>  
  240.         <rdfs:label xml:lang="en">  
  241.             agent, who has rights to modify and delete page  
  242.         </rdfs:label>  
  243.     </rdf:Property>  
  244.       
  245.     <rdf:Property rdf:ID="hasAuthorizedActionOnResource">  
  246.           
  247.         <rdfs:domain rdf:resource="#Agent"/>  
  248.         <rdfs:range rdf:resource="#AuthorizedActionOnResource"/>  
  249.         <rdfs:label xml:lang="en">  
  250.             authorized action, wich agent has on resouce  
  251.         </rdfs:label>  
  252.     </rdf:Property>  
  253.   
  254.     <rdf:Property rdf:ID="hasActionOnResource">  
  255.           
  256.         <rdfs:domain rdf:resource="#AuthorizedActionOnResource"/>  
  257.         <rdfs:range rdf:resource="#Action"/>  
  258.         <rdfs:label xml:lang="en">  
  259.             actions, wich agent has on resouce  
  260.         </rdfs:label>  
  261.     </rdf:Property>  
  262.   
  263.     <rdf:Property rdf:ID="hasResource">  
  264.           
  265.         <rdfs:domain rdf:resource="#AuthorizedActionOnResource"/>  
  266.         <rdfs:range rdf:resource="#Document"/>  
  267.         <rdfs:label xml:lang="en">  
  268.             resource, where agent has an action  
  269.         </rdfs:label>  
  270.     </rdf:Property>       
  271.         
  272.     <!--Descriptions-->  
  273.       
  274.     <rdf:Description rdf:about="#Guest">  
  275.         <hasAction rdf:resource="#ReadContent"/>  
  276.     </rdf:Description>  
  277.       
  278.     <rdf:Description rdf:about="#Contributor">  
  279.         <hasAction rdf:resource="#CreateContent"/>  
  280.         <hasAction rdf:resource="#ReadContent"/>  
  281.         <hasAction rdf:resource="#ModifyContent"/>  
  282.         <hasAction rdf:resource="#DeleteContent"/>  
  283.         <hasAction rdf:resource="#ModifyListOfGivenAgent"/>  
  284.         <hasAction rdf:resource="#ModifyAccessType"/>  
  285.     </rdf:Description>  
  286.       
  287.     <rdf:Description rdf:about="#Admin">  
  288.         <hasAction rdf:resource="#CreateContent"/>  
  289.         <hasAction rdf:resource="#ReadContent"/>  
  290.         <hasAction rdf:resource="#ModifyUserRights"/>  
  291.         <hasAction rdf:resource="#ModifyContent"/>  
  292.         <hasAction rdf:resource="#DeleteContent"/>  
  293.         <hasAction rdf:resource="#ModifyListOfGivenAgent"/>  
  294.         <hasAction rdf:resource="#ModifyAccessType"/>  
  295.     </rdf:Description>  
  296.       
  297. </rdf:RDF>  

 Rules

rule_about_access (1).rul

 

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2.   
  3. <!DOCTYPE rdf:RDF [  
  4.   
  5. <!ENTITY cos "http://www.inria.fr/acacia/corese#">  
  6. <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#">  
  7. <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#">  
  8. <!ENTITY amo "http://sweetwiki.inria.fr/AMO_ontology.rdfs#">  
  9. <!ENTITY foaf "http://xmlns.com/foaf/0.1/#">  
  10.  ]>  
  11.   
  12.   
  13. <rdf:RDF xmlns:rdfs="&rdfs;" xmlns:rdf="&rdf;" xmlns:cos="&cos;" xmlns:amo="&amo;" xmlns:foaf="&foaf;">  
  14.       
  15.     <cos:rule cos:name="for_Given_Agent">  
  16.         <!-- given agents have only such actions -->  
  17.         <cos:if>  
  18.             PREFIX amo: &lt;&amo;&gt;  
  19.             {  
  20.             ?resource rdf:type amo:Document.  
  21.             ?resource amo:hasGivenAgent ?agent  
  22.             }  
  23.         </cos:if>  
  24.         <cos:then>  
  25.             {  
  26.             ?agent amo:hasAuthorizedActionOnResource ?auth_action_on_res.  
  27.             ?auth_action_on_res amo:hasActionOnResource amo:ReadContent.  
  28.             ?auth_action_on_res amo:hasActionOnResource amo:ModifyContent.  
  29.             ?auth_action_on_res amo:hasActionOnResource amo:DeleteContent.  
  30.             ?auth_action_on_res amo:hasActionOnResource amo:ModifyListOfGivenAgent.  
  31.             ?auth_action_on_res amo:hasActionOnResource amo:ModifyAccessType.  
  32.             ?auth_action_on_res amo:hasResource ?resource  
  33.             }  
  34.         </cos:then>  
  35.     </cos:rule>     
  36.       
  37.     <cos:rule cos:name="Creator_is_Given">  
  38.         <!--  access for creator -->  
  39.         <cos:if>  
  40.             PREFIX amo: &lt;&amo;&gt;  
  41.             {  
  42.             ?resource amo:creator ?agent  
  43.             }  
  44.         </cos:if>  
  45.         <cos:then>  
  46.             {  
  47.             ?resource amo:hasGivenAgent ?agent  
  48.             }  
  49.         </cos:then>  
  50.     </cos:rule>  
  51.               
  52.     <cos:rule cos:name="for_Admin">  
  53.         <!-- admins have only such actions -->  
  54.         <cos:if>  
  55.             PREFIX amo: &lt;&amo;&gt;  
  56.             {  
  57.             ?resource rdf:type amo:Document.  
  58.             ?agent amo:hasRole amo:Admin  
  59.             }  
  60.         </cos:if>  
  61.         <cos:then>  
  62.             {  
  63.             ?resource amo:hasGivenAgent ?agent.  
  64.             ?agent amo:hasAuthorizedActionOnResource ?auth_action_on_res.  
  65.             ?auth_action_on_res amo:hasActionOnResource amo:ModifyUserRights.  
  66.             ?auth_action_on_res amo:hasResource ?resource  
  67.               
  68.             }  
  69.         </cos:then>  
  70.     </cos:rule>  
  71.                   
  72.     <cos:rule cos:name="Public_for_Guest">  
  73.         <!-- if access Type of page "Public"-enyone have such actions -->  
  74.         <cos:if>  
  75.             PREFIX amo: &lt;&amo;&gt;  
  76.             {  
  77.             ?resource amo:hasAccessType amo:Public.  
  78.             ?agent rdf:type amo:Agent  
  79.             }  
  80.         </cos:if>  
  81.         <cos:then>  
  82.             {  
  83.             ?agent amo:hasAuthorizedActionOnResource ?auth_action_on_res.  
  84.             ?auth_action_on_res amo:hasActionOnResource amo:ReadContent.  
  85.             ?auth_action_on_res amo:hasResource ?resource  
  86.             }  
  87.         </cos:then>  
  88.     </cos:rule>  
  89.       
  90.     <cos:rule cos:name="Public_for_Contributor">  
  91.         <!-- if access Type of page "Public" - contributors have such actions -->  
  92.         <cos:if>  
  93.             PREFIX amo: &lt;&amo;&gt;  
  94.             {  
  95.             ?resource amo:hasAccessType amo:Public.  
  96.             ?agent amo:hasRole amo:Contributor  
  97.             }  
  98.         </cos:if>  
  99.         <cos:then>  
  100.             {  
  101.             ?agent amo:hasAuthorizedActionOnResource ?auth_action_on_res.         
  102.             ?auth_action_on_res amo:hasActionOnResource amo:ReadContent.  
  103.             ?auth_action_on_res amo:hasActionOnResource amo:ModifyContent.  
  104.             ?auth_action_on_res amo:hasActionOnResource amo:DeleteContent.  
  105.             ?auth_action_on_res amo:hasResource ?resource  
  106.             }  
  107.         </cos:then>  
  108.     </cos:rule>  
  109.       
  110.     <cos:rule cos:name="SemiPublic_for_Guest_or_Contributor">  
  111.         <!-- if access Type of page "SemiPublic"- everyone have such actions -->  
  112.         <cos:if>  
  113.             PREFIX amo: &lt;&amo;&gt;  
  114.             {  
  115.             ?resource amo:hasAccessType amo:SemiPublic.  
  116.             ?agent rdf:type amo:Agent  
  117.             }  
  118.         </cos:if>  
  119.         <cos:then>  
  120.             {  
  121.             ?agent amo:hasAuthorizedActionOnResource ?auth_action_on_res.  
  122.             ?auth_action_on_res amo:hasActionOnResource amo:ReadContent.  
  123.             ?auth_action_on_res amo:hasResource ?resource  
  124.             }  
  125.         </cos:then>         
  126.     </cos:rule>  
  127.       
  128. </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 :

  1. <?xml version='1.0' encoding='Cp1251'?>  
  2. <cos:result xmlns:cos='http://www.inria.fr/acacia/corese#'>  
  3. <cos:tquery>  
  4. <![CDATA[prefix amo: <http://sweetwiki.inria.fr/AMO_ontology.rdfs#>  
  5. select list display xml ?resource ?agent   
  6. where  
  7. { ?agent amo:hasAuthorizedActionOnResource ?auth_action_on_res . ?auth_action_on_res amo:hasResource ?resource . ?auth_action_on_res amo:hasActionOnResource amo:DeleteContent . }   
  8. ]]></cos:tquery>  
  9. <cos:info><![CDATA[ 
  10. 0.00 s for 5 projections 
  11. ]]></cos:info>  
  12. <sparql xmlns='http://www.w3.org/2005/sparql-results#' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' >  
  13. <head>  
  14. <variable name='resource'/>  
  15. <variable name='agent'/>  
  16. </head>  
  17. <results ordered='false' distinct='false' >  
  18. <result>  
  19. <binding name='resource'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#PageBy_AngelaBeesley</uri></binding>  
  20. <binding name='agent'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#AnnaKolomoiska</uri></binding>  
  21. </result>  
  22. <result>  
  23. <binding name='resource'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#PageBy_AngelaBeesley</uri></binding>  
  24. <binding name='agent'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#GroupAdmins</uri></binding>  
  25. </result>  
  26. <result>  
  27. <binding name='resource'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#PageBy_AngelaBeesley</uri></binding>  
  28. <binding name='agent'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#AngelaBeesley</uri></binding>  
  29. </result>  
  30. <result>  
  31. <binding name='resource'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#PageBy_AnnaKolomoiska</uri></binding>  
  32. <binding name='agent'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#GroupAdmins</uri></binding>  
  33. </result>  
  34. <result>  
  35. <binding name='resource'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#PageBy_AnnaKolomoiska</uri></binding>  
  36. <binding name='agent'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#AnnaKolomoiska</uri></binding>  
  37. </result>  
  38. </results>  
  39. </sparql>  
  40. </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:

  1. <?xml version='1.0' encoding='Cp1251'?>  
  2. <cos:result xmlns:cos='http://www.inria.fr/acacia/corese#'>  
  3. <cos:tquery>  
  4. <![CDATA[prefix amo: <http://sweetwiki.inria.fr/AMO_ontology.rdfs#>  
  5. select list display xml ?agent ?action   
  6. where  
  7. { ?agent amo:hasAuthorizedActionOnResource ?auth_act . ?auth_act amo:hasActionOnResource ?action . ?auth_act amo:hasResource <amo:PageBy_AnnaKolomoiska> . } order by ?agent   
  8. ]]></cos:tquery>  
  9. <cos:info><![CDATA[ 
  10. 0.00 s for 12 projections 
  11. ]]></cos:info>  
  12. <sparql xmlns='http://www.w3.org/2005/sparql-results#' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' >  
  13. <head>  
  14. <variable name='agent'/>  
  15. <variable name='action'/>  
  16. </head>  
  17. <results ordered='true' distinct='false' >  
  18. <result>  
  19. <binding name='agent'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#AnnaKolomoiska</uri></binding>  
  20. <binding name='action'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#ModifyUserRights</uri></binding>  
  21. </result>  
  22. <result>  
  23. <binding name='agent'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#AnnaKolomoiska</uri></binding>  
  24. <binding name='action'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#ReadContent</uri></binding>  
  25. </result>  
  26. <result>  
  27. <binding name='agent'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#AnnaKolomoiska</uri></binding>  
  28. <binding name='action'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#ModifyContent</uri></binding>  
  29. </result>  
  30. <result>  
  31. <binding name='agent'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#AnnaKolomoiska</uri></binding>  
  32. <binding name='action'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#ModifyAccessType</uri></binding>  
  33. </result>  
  34. <result>  
  35. <binding name='agent'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#AnnaKolomoiska</uri></binding>  
  36. <binding name='action'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#ModifyListOfGivenAgent</uri></binding>  
  37. </result>  
  38. <result>  
  39. <binding name='agent'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#AnnaKolomoiska</uri></binding>  
  40. <binding name='action'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#DeleteContent</uri></binding>  
  41. </result>  
  42. <result>  
  43. <binding name='agent'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#GroupAdmins</uri></binding>  
  44. <binding name='action'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#ModifyUserRights</uri></binding>  
  45. </result>  
  46. <result>  
  47. <binding name='agent'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#GroupAdmins</uri></binding>  
  48. <binding name='action'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#ReadContent</uri></binding>  
  49. </result>  
  50. <result>  
  51. <binding name='agent'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#GroupAdmins</uri></binding>  
  52. <binding name='action'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#ModifyContent</uri></binding>  
  53. </result>  
  54. <result>  
  55. <binding name='agent'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#GroupAdmins</uri></binding>  
  56. <binding name='action'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#ModifyAccessType</uri></binding>  
  57. </result>  
  58. <result>  
  59. <binding name='agent'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#GroupAdmins</uri></binding>  
  60. <binding name='action'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#ModifyListOfGivenAgent</uri></binding>  
  61. </result>  
  62. <result>  
  63. <binding name='agent'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#GroupAdmins</uri></binding>  
  64. <binding name='action'><uri>http://sweetwiki.inria.fr/AMO_ontology.rdfs#DeleteContent</uri></binding>  
  65. </result>  
  66. </results>  
  67. </sparql>  
  68. </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...

 

Mots clés:
FichierTailleDateAttaché par 
 AMO_ontology (4).rdfs
ontology
9.13 Ko10:16, 22 Avr 2009AnnaKolomoiskaActions
 Group_Admins (3).rdf
Group_Admins description
752 octets10:16, 22 Avr 2009AnnaKolomoiskaActions
 HomePage_AngelaBeesley (1).rdf
HomePage_AngelaBeesley description
1167 octets10:16, 22 Avr 2009AnnaKolomoiskaActions
 HomePage_AnnaKolomoiska (3).rdf
HomePage_AnnaKolomoiska description
1678 octets10:17, 22 Avr 2009AnnaKolomoiskaActions
 Microsoft Word - table.pdf
dependence table
6.04 Ko10:34, 22 Avr 2009AnnaKolomoiskaActions
 PageBy_AngelaBeesley (1).rdf
PageBy_AngelaBeesley description
730 octets10:17, 22 Avr 2009AnnaKolomoiskaActions
 PageBy_AnnaKolomoiska (3).rdf
PageBy_AnnaKolomoiska description
728 octets10:17, 22 Avr 2009AnnaKolomoiskaActions
 pic.pdf
Aucune description
199.5 Ko09:54, 31 Mar 2009MichelBuffaActions
 rule_about_access (1).rul
rules
4.2 Ko10:17, 22 Avr 2009AnnaKolomoiskaActions
Images (6)
Voir 1 - 6 sur 6 images | Voir tout
table_pic
table_pic
table_htm...  Actions
Aucune description
Snap5.jpg  Actions
Aucune description
Snap4.jpg  Actions
Aucune description
Snap3.jpg  Actions
Aucune description
Snap2 (2)...  Actions
Aucune description
Snap1.jpg  Actions
Commentaires (2)
Affichage de 2 commentaires sur 2: voir tout
This is a test
Posté 10:12, 12 Mar 2010
This is another test
Posté 10:12, 12 Mar 2010
Affichage de 2 commentaires sur 2: voir tout
Vous devez être connecté pour poster un commentaire.