- From: Nathan <nathan@webr3.org>
- Date: Thu, 22 Apr 2010 09:55:31 +0100
- To: Story Henry <henry.story@bblfish.net>
- CC: Joe Presbrey <presbrey@gmail.com>, Linked Data community <public-lod@w3.org>, foaf-protocols <foaf-protocols@lists.foaf-project.org>
Story Henry wrote: > Sorry for being a bit harsh yesterday evening. Likewise :) > It is a bit difficult to work out what tools you have access to > and what you don't, and as you can imagine that is going to vary from > one person to the other. This might be the problem we are facing here. > > It is also true come to think of it, that though "Working Ontologist" will > give you a very good background in RDF, RDFS and OWL but last > I looked, I don't think it really covers graphs, and belief states. that's exactly the right term! belief states. The issue is how to express in which graph/resource to trust, or at least how to delegate that trust in some way (possibly via isDefinedby) with owl is what I need to be able to do. (remembering that the acl is by nature trusted). ^ probably a good snip point ^ > Our answers are in terms of OWL and SPARQL because this allows us to > express relatively clearly and concisely what is needed. None of this > should require those tools. They are great shorthands for a lot of background > coding though, and so are useful in a mailing list discussion. Ty Henry, at runtime I do have a virtuoso 6 to fall back on for sparql and am quite familiar, however for ACL specifically I'm keen to implement with 0 dependencies, i.e. via code. Creating the code to do the reasoning and implement the logic isn't a problem, but the specific syntax of expressing which graph to trust in owl (or rdf) is where I'm coming short. > As I understand it now you don't have access to a either a good owl > reasoner or a very advanced SPARQL query, the thing to do is to just > simulate some of this, and to simplify the problem. But the answers > given with SPARQL and OWL should help you > > a. understand how to simplify without going wrong > b. understand what is dependent on inference > c. what is dependent on graph selection AFAICT, only c is left to handle now, and specifically I know what is dependant on graph selection, but can't figure out how to express that graph selection in the acl (owl/rdf). The equiv of "[] checkGraph <graph>" or even "[] checkResource <resource> . <resource> isDefinedBy <x>" .. struggling! >> you can't access because i don't foaf:knows you, whereas melvin, >> kingsley, michael can; similarly I'm the only one who can actually read >> the acl because i have acl:Control over it. the acl is exposed via the >> Link header using a rel of the acl ontology. > > This is partly what I was thinking. Your setup is going to be initially > very much under your own control. This is good, because it should help > you simplify things quite a lot. > > But it can also lead you - if you are not careful - to your making > big reasoning mistakes, that you may not notice initially at all. > > So for example your comments about using the sioc:member_of relation to > do one thing, and the sioc:has_member relation to do something else are > the types of errors that stem from that. Those are inverse relations so > they imply one another. You should not work as if you could have > > G sioc:has_member p . > > without having > > p sioc:member_of G . > > Of course if you don't have reasoning set up, then you won't notice it. > But when later you do start switching it on, the parts of your reasoning that > were relying on those non existent distinctions won't work. exactly, what I had suggested is a short term hack and I want to avoid it, rather address the true problem listed above >> _:myfriends owl:equivalentClass [ >> a owl:Restriction ; >> owl:hasValue <http://webr3.org/nathan#me> ; >> owl:onProperty [ owl:inverseOf foaf:knows ] >> ] . > > Good so this is what I think we were proposing earlier. > Clearly if you don't have a good owl reasoner, which few of us have, > then you would just use the above to calculate the set of members of the > class by using it to write out a query such as > > CONSTRUCT { > ?p a _:myfriends . > } WHERE { > <http://webr3.org/nathan#me> foaf:knows ?p . > } > > You would add the results to the graph that the access control > engine then uses to make its decision. If you can you should try to > cache that graph, so that you don't need to calculate these things > all the time. :) good, have implemented the equiv in code with http caching, sadly not many people are publishing graphs w/ ETags and cache control - that's an aside though! >> exactly the same code works for the above sioc:Usergroups acl, > > The concern I was having in some of your previous remarks is that > you were treating a sioc:Usergroup as a class. I am not really sure > why it is not, and clearly it would make things easier with these > owl reasoning tools. But then the foaf:knows case shows more precisely > why one will need these intermediate mappers. exactly, all that remains now is to express "who to trust" in owl >> the problem at heart is what IanD was asking on semantic overflow the >> other day >> http://www.semanticoverflow.com/questions/757/which-owl-reasoners-understand-named-graphs > > I have added a few more explanatons to that post. Hope it helps. ty >> will leave this here and possibly just drop in a <group-uri> >> rdfs:isDefinedBy <dereferenced-group-uri> to atleast delegate some kind >> of trust / indicate where to look. > > If what you do is private, and only you can see it, you can pretty much > do what you want. Things will get more complex and require proper usage of terms > if you do publish your ACLs and try to integrate with public documents. indeed, hence looking for the real solution to this problem of expressing who to believe as outlined througout :) Best & thanks once again, Nathan
Received on Thursday, 22 April 2010 09:22:51 UTC