We introduce the idea of formally descibing a social computing service or an agent using rules grounded in Semantic Web technologies. Services and agents based on the Semantic Web are guaranteed to be data-oriented and distributed.
This paper is essentially a conceptual one. Although we provide an implementation, it's still very far from being complete. We encourage the reader to glance through Section 3, especially the rules (those with =>), to get a feeling of what the paper is about.
In Section 2 we describe some useful properties of the Semantic Web, in particular the Resource Description Framework (RDF)][1], and show why it is a good way of representing social knowledge. In Section 3 we give a social computing mechanism using a formal Semantic Web language, namely Notation 3 (N3)[2]. In Section 4, we describe an implementation of an agent which can make deductions based on the rules defined according to the some social interactions or situations. In Section 5, we compare our work with the related work in this area, and finally conclude the paper in a discussion of our results and our future work in section 6
In this chapter, we give a brief introduction to the essential concepts of the Semantic Web.
Semantic Web is a web of machine processable data, preferably RDF, linked together, and the fundamental assumption of Semantic Web could be stated as follow:
Every important thing has global machine name in the form of a URI. This URI can be dereferenced to get a file and then some RDF triples can be extracted from the file, and a nonempty subset of these triples are about the thing, namely, the subject or the object is the thing, and these triples constitute useful information.
The URI of a thing could be thought of as a magical name with which you can get information about the thing, while other exsisting names or ids such as human name and SSN does not incorporate a canonical method to retrieve information. The URI of a person, also called a Web ID[?], could be dereferenced to get basic information such as name, gender, or email. The concepts of 'name', 'gender', or 'email' also have URIs and they form a vocabulary known as FOAF. See [?], [?], [?] for how to get a Web ID for yourself. The files from which RDF triples are extracted could be pure RDF documents, such as RDF/XML or RDF/N3, or documents with embedded RDF such as RDFa or XML with GRDDL. This assumption is also known as the Linked Data principles [?].
In terms of what does it mean to be useful information, there are two opposing views. The following is explanned with URIs of people, the Web IDs.
We decribe the method of modeling social computing with machine readable rules in this section. Several examples are given. (N3 tutorial comes here?)
First of all, we give an example of social computing which is implemented widely.
In social networking sites such as Facebook and MySpace, the user is notified of her friend's birthday so that the user could write a greeting on the friends wall. This computation, done by a person with either the help from the computer agent (in this case, Facebook), could be vaguely modeled with N3 rules as follows,
{?personA knows ?personB. ?personB birthday ?day. now day ?day.} => {[ a BirthdayGreetingEvent; first_participant ?personA; second_participant ?personB].}
This reads as "If personA knows personB and personB's birthday is today, then there should be a birthday greeting event for which personA is the first participant (doer) and personB is the second participant (accepter).
Notice that the terms 'knows' and 'birthday' are already defined in the FOAF vocabulary [ref]
{?personA interest ?thing. ?personB interest ?thing.} => {[ a MakingFriendsEvent; participant ?personA, ?personB].}.
{?personA wants_to_borrow ?thing. ?personB can_lend ?thing.} => {[ a BorrowingEvent; first_participant ?personA; second_participant ?personB].}
{?personA in_love_with ?personB. ?personB in_love_with ?personA.} => {[ a ConfessionEvent; participant ?personA, ?personB].}.
In this final example, we model general economy phenomenon with the following rule,
{?personA wants ?thing. ?personB can_provide ?thing.} => {[ a TradingNegotationEvent; participant ?personA, ?personB; good ?thing].}.
This rule basically says if personB can provide the thing personA wants, then they should negotiate to see whether this trading is feasible and what personA should pay personB back.
In short words, we imagine that in the future people tell about the things they desire on the web, while provider provides the information of the goods. The computer could do various useful caclulations based on these information, if it is truly machine readable.
It is worth mentioning that Amazon has already implemented a system of wishlist. The user is able to put her wishlist on her website in hope that someone can give her a gift from the wishlist on her birthday [ref]. This is one of the benefits of making wishlists transparent. Others include, for example, the fact that the wishlists of many people in Africa contain only 'food' would make people have a deeper understanding of poverty.