Beatnik: change your mind
Some people lie, sometimes people die, people make mistakes: one thing's for certain you gotta be prepared to change your mind.
Whatever the cause, when we drag information into the Beatnik Address Book (BAB) we may later want to remove it. In a normal Address Book this is straightforward. Every vcard you pick up on the Internet is a file. If you wish to remove it, you remove the file. Job done. Beatnik though does not just store information: Beatnik also reasons.
When you decide that information you thought was correct is wrong, you can't just forget it. You have to disassociate yourself from all the conclusions you drew from it initially. Sometimes this can require a lot of change. You thought she loved you, so you built a future for you two: a house and kids you hoped, and a party next week for sure. Now she's left with another man. You'd better forget that house. The party is booked, but you'd better rename in. She no longer lives with you, but there with him. In the morning there is no one scurrying around the house. This is what the process of mourning is all about. You've got the blues.
This is really simple. In the friend of a friend ontology the foaf:mbox relation is declared as being an InverseFunctionalProperty. That means that if I get the graph at http://eg.com/joe I can add it to my database like this. ![[image]](http://mowser.com/img?url=http%3A%2F%2Fblogs.sun.com%2Fbblfish%2Fresource%2Fifp1.jpg)
If I then get the graph at http://eg.com/hjs
![[image]](http://mowser.com/img?url=http%3A%2F%2Fblogs.sun.com%2Fbblfish%2Fresource%2Fifp2.jpg)
I can then merge both graphs and get the following
![[image]](http://mowser.com/img?url=http%3A%2F%2Fblogs.sun.com%2Fbblfish%2Fresource%2Fifp-conclusion.jpg)
Notice that I can merge the blank nodes in both graphs because they each have the same relation foaf:mbox to the resource mailto:henry.story@sun.com. Since there can only be one thing that is related to that mbox in that way, we know they are the same nodes. As a result we can learn that :joe knows a person whose home page is http://bblfish.net, and that same person foaf:knows :jane, neither of those relations were known (directly) beforehand.
Nice. And this is really easy to do. A couple of pages of lines of java code can work through this logic and add the required relationships and merge the required blank nodes.
The problem comes if I ever come to doubt what Joe's foaf file says. I would not just be able to remove all the relations that spring from or reach the :joe node, since the relation that Henry knows jane is not directly attached to :joe, and yet that relation came from joe's foaf file.
Not trusting :joe's foaf file may be expressed by adding a new relation <http://eg.com/joe> a :Falsehood . to the database. Since doing this forces changing the other statements in the database we have what is known as non monotonic reasoning.
To allow the removal of statements and the consequences those statements led to, an rdf database has to do one of two things:
foaf:Person. It would then look at all things that were related to subclasses of foaf:Person if any. Then it may look for things that have relations that have domains that are foaf:Person such as foaf:knows for example. Finally with all the people gathered it would look to see if none of them were the same.So what is needed to do this well is the following:
{ ?g a :Trusted. ?g => { ?a ?r ?b } } => { ?a ?r ?b } a rule to believe all statements that belong to trusted graphs.From my incomplete studies (please let me know if I am wrong) none of the Java frameworks for doing this are ideal yet, but it looks like Jena is at present the closest. It has good reasoning support, but I am not sure it is very good yet at making it easy to reason over contexts. Sesame is building up support for contexts, but has no reasoning abilities right now in version 2.0. Mulgara has very foresightedly always had context support, but I am not sure if it has Prolog like backtracking reasoning support.
[1] “Inferencing and Truth Maintenance in RDF Schema - a naive practical approach†by Jeen Broekstra and Arjohn Kampman
Posted at 03:19PM Feb 09, 2007 [permalink/trackback] by Henry Story in SemWeb | Comments[0]
Note on comments:
You are viewing a mobilized version of this site...
View original page here