Re: [foaf-protocols] FOAF+TLS: RESTful Authentication for Distributed Social Networks

I have found a way to do this in N3

---------
@prefix log: <http://www.w3.org/2000/10/swap/log#>.
@prefix cert: <http://www.w3.org/ns/auth/cert#>.
@prefix foaf: <http://xmlns.com/foaf/0.1/>.
@prefix owl: <http://www.w3.org/2002/07/owl#>.
@prefix romeo: <https://romeo.net/#>.
@prefix : <#> .

#(D1)
:hasPrivateKeyFor a owl:InverseFunctionalProperty;
     rdfs:domain foaf:Agent;
     rdfs:range cert:PublicKey .

#(P9)
:client :claims { <> dc:created romeo:i;
                      foaf:primaryTopic romeo:i.
                   romeo:i :hasPrivateKeyFor :pubKey . } .

#(P10)
:client :hasPrivateKeyFor :pubKey .

#(P11)
# note: cannot use named graphs due to bug
# http://lists.w3.org/Archives/Public/public-cwm-talk/2009AprJun/0000.html
{ ( [ is :claims of :client ]
     [ is log:semantics of <http://www.w3.org/2000/10/swap/test/owl/new_owl_rules.n3 
 > ]
     {:client :hasPrivateKeyFor :pubKey.
      :hasPrivateKeyFor a owl:InverseFunctionalProperty.  }
   ) log:conjunction
                [ log:conclusion ?F ] . }
   => { :client :mustAgree ?F } .
-----------


The above seems to result in the :client agreeing that :client  
owl:sameAs romeo:i

you can check it by running

  cwm test.n3  --think


On 18 Mar 2009, at 15:42, Story Henry wrote:

> In a paper we are submitting for SPOT2009 [1] there are a couple of
> formulae I fear may not quite express what I wanted to express. These
> are (P11) and (P13)
>
> #(P11)
> (_:clientGrph {_:client hasPrivateKeyFor pubKey}) log:conjunction [
>               => { romeo:i = :client } ] .
>
> #(P13)
> (P13) ( _:romeoGrph { _:client hasPrivateKeyFor pubKey } )
> log:conjunction [
>               => { romeo:i = _:client } ]
>
> What I want to do is say that if you look at the graph that is the
> union of what romeo believes, and a subset of what the server
> believes, then that merged graph implies { romeo:i = _:client } .
> But I do not want to assert the result in the triple store either. It
> should remain within { }.
>
> I am afraid what I have said might imply that the server himself then
> should believe romeo:i = _:clinent .
>
> Perhaps it would have been better to state
>
> (P13') ( _:romeoGrph { _:client hasPrivateKeyFor pubKey } )
> log:conjunction _:union .
>        _:union log:includes { romeo:i = _:client } ] .
>
> But I am not sure if log:includes is a relation from the consequences
> of the _:union graph .
>
> Perhaps I need
>
> (P13") ( _:romeoGrph { _:client hasPrivateKeyFor pubKey } )
> log:conjunction _:union .
>        _:union log:conclusion [ log:includes { romeo:i =
> _:client } ] ].
>
> And perhaps I need to add to the union the definition of
> hasPrivateKeyFor as an inverse functional property
>
> (D1)  :hasPrivateKeyFor a owl:InverseFunctionalProperty;
>                 rdfs:domain foaf:Agent;
>                 rdfs:range cert:PublicKey .
>
> Any guidance would be appreciated.
>
> 	Henry
>
> [1] see the thread discussing it starting at http://twurl.nl/ljlgzh
>
> _______________________________________________
> foaf-protocols mailing list
> foaf-protocols@lists.foaf-project.org
> http://lists.foaf-project.org/mailman/listinfo/foaf-protocols

Received on Friday, 17 April 2009 15:26:49 UTC