Attention, you are on an old version of the website! Information for reference ONLY. We recommend visiting the official page of Michael Hausenblas (www.mhausenblas.info)
SemanticBasics SemanticApplications SemanticMedia SemanticLinks SemanticDiscussion


Feel free to mail me your thoughts - we can discuss them inhere.

SW = Web 2.0 ?


The ongoing discussion on how the Semantic Web relates to the so called Web 2.0 (a term recently coined by Tim O'Reilly) led me to the following figure:

  Fig. Human-Computer Communication Model  

In the figure shown above, the communication possibilities between humans and computers are depcited and reviewed in the following. Say we have two users (fRED and Blu) that respectivley use their computers RED and BLUE. We have the following potential communication patterns:

  1. U/U: User to User, meaning either face to face or via phone, etc.
  2. U/C: User to Computer, thus a user tells the computer to perform an operation ("load web page", "connect to 123 ...", etc.).
  3. C/U: Computer to User, thus a computer reports about the output of an operation (display web page, "can't find host", etc.).
  4. C/C: Computer to Computer, meaning the fully automatic exchange of information between computers (based on defined formats and protocols)

The following observations can be made:

ad 1) The focus is obviously on the human communication, therefore, even if computers are involved (Blog, ICQ, etc.), they are merely tools to support human users to communicate. Nevertheless, computers are involved in the whole communication (except face-to-face), therefore all follwing patterns are included.

ad 2) and 3) The field of Human Computer Interaction (HCI) is quite broad. A lot of ways how humans may interact with computers have been proposed and researched. In our context, not the way of interaction is of interest, but the following basic facts:

  • Human users have a defined set of commands to tell a computer to perform an operation.
  • Human users have to learn these commands and abstract them to fulfill a certain task.
  • Computers "understand" this set of commands in terms of that they execute a corresponding piece of code using the current users input and come up with the results.

ad 4) The focus of this communication pattern is on automatic exchange of information, i.e. without involving users directly. The main statements are:

  • Computers need unambiguous, formal defined formats and protocols to perform a communication.
  • Normally, a C/C communication is triggerd by a user command (directly or indirectly), therefore (user defined) parameters are available that control the communication.

Let us now take a look on some practical real-world examples.

How much is this book? Imagine fRED looking at a website of an online book shop. He enters the title of the desired book ("The Wasp Factory") and after some clicks he sees the following:

  Fig. Amazon Search Result: Example Book  

He immediately recognises that the book is a bit more than 10$ and goes on to find out how much shipping is.

Can a computer program (having the book title as an input parameter) fulfill the same task in an (X)HTML-based environment?

What can I get fRED for his birthday? Blu reads fREDs weblog and encounters that he is a big Ian Banks fan. She wants to buy him a book and initialy looks at his wishlist. After that she visits the online book-store as above and purchases a book.

Can Blu configure a computer agent to support her in finding out what fRED prefers to read?

Now it is time to conclude (without giving direct answers to the questions raised above) - you might want to call it a working thesis:

  • Semantic Web is all about C/C, that is to provide infrastructure that can be used by machines to perform tasks on behalf of human users.
  • Web 2.0 is all about social networking, focusing on human users that share information and communicate using interconnected computers.
  • Finally Web 2.0 can/may/should use SW-infrastructure to support human users in using Web 2.0 functionality.

Further Reading

Semantic Web - an Object-Oriented View


These thoughts on Object-Oriented Semantic Web Developing are actually available via writely.com.

Rules vs. Reasoning


Played around with ontologies and rules, and here is the result. The main question is: for which kind of task a rule engine is preferable and for which kind of task a DL-reasoner is better suited.

Suppose we have defined a very simple ontology — both T-Box and A-Box in abstract OLW-syntax — called O(FAM):


 1| Namespace(rdf  = <http://www.w3.org/1999/02/22-rdf-syntax-ns#>)
 2| Namespace(xsd  = <http://www.w3.org/2001/XMLSchema##>)
 3| Namespace(rdfs = <http://www.w3.org/2000/01/rdf-schema##>)
 4| Namespace(owl  = <http://www.w3.org/2002/07/owl##>)
 5| Namespace(fam  = <http://sw-app.org/family##>)

 6| Ontology( <http://sw-app.org/family#>

 7|  Class(fam:Human complete unionOf(fam:Female fam:Male))
 8|  Class(fam:Female partial fam:Human)                                                                 
 9|  Class(fam:Male partial fam:Human)
10|  Class(fam:Uncle partial fam:Male)
11|  Class(fam:Uncle complete restriction(fam:isUncleOf minCardinality(1)))
12|  DisjointClasses(fam:Female fam:Male)

13|  ObjectProperty(fam:isParentOf  domain(fam:Human) range(fam:Human))
14|  ObjectProperty(fam:isSiblingOf  domain(fam:Human) range(fam:Human))
15|  ObjectProperty(fam:isUncleOf  domain(fam:Male) range(fam:Human))
16|  Individual(fam:john  type(fam:Male))
17|  Individual(fam:mary  type(fam:Female) value(fam:isSiblingOf fam:john) value(fam:isParentOf fam:tim))
18|  Individual(fam:tim  type(fam:Male))
19| )   

O(FAM) defines female and male human beings, and some family-related properties. The instances are the follows:

  • mary, who is the mother of tim (due to fam:Female and fam:isParentOf) and the sibling of john.
  • john and tim, two male persons that are related to mary.

Given O(FAM), one immediately can conclude, that e.g. john is the uncle of tim. A rule engine could do the same, if the following rule base R(FAM) is being defined (using N3 notation for Jena rule service):


 @prefix fam: <http://sw-app.org/family#>
 @include .

 [uncle_rule: (?f fam:isParentOf ?c), (?f fam:isSiblingOf ?u), (?u rdf:type fam:Male)
              (?u fam:isUncleOf ?c)]

Now let us use the above given knowledgebase (O(FAM) and R(FAM)) in practice using public available inference and query services:

  1. Using XMLArmyKnife -- Inference service for applying R(FAM) onto O(FAM), and
  2. SPARQLer - General purpose processor to run a SPARQL query on the result from 1. to ask for uncles, i.e. ?uncle fam:isUncleOf ?person

ad 1) The setup is the following: O(FAM) is located at http://sw-app.org/rules/family.owl (RDF/XML), and R(FAM) is located at http://sw-app.org/rules/uncle_rule.n3 (N3/Jena).

We now apply R(FAM) on O(FAM), which gives a bulk of triples. Indeed, in a subgraph, there is the inferred uncle-relationship (john is the uncle of tim):

Result of applying R(FAM) on O(FAM)
1| <rdf:Description rdf:about="//sw-app.org/family#john">
2|  <isUncleOf rdf:resource="//sw-app.org/family#tim" /> 
3|  <rdf:type rdf:resource="//sw-app.org/family#Male" /> 
4|  <rdf:type rdf:resource="//sw-app.org/family#Human" /> 
5|  <rdf:type rdf:resource="//sw-app.org/family#Uncle" />
6| </rdf:Description>

ad 2) Asking for uncles in O(FAM) can now be done quite straight forward:

 select * where { ?uncle <http://sw-app.org/family#isUncleOf> ?child.}              

Sending the above shown query [A] to SPARL.org yields:

 ?uncle                               ?child 
 <http://sw-app.org/family#john>  <http://sw-app.org/family#tim>

One could also ask for all instances that are of type fam:Uncle:

 select * where { ?uncle  a <http://sw-app.org/family#Uncle>}              

Sending the above shown query [B] to SPARL.org yields:


As the class fam:Uncle is completely defined in line 11 of O(FAM) as a male human that has at least one fam:isUncleOf property, this might be a task, a DL-reasoner as Pellet, FaCT or RACER might perform faster. As a matter of fact, the classification of john being of type fam:Uncle is available in the output of the rule engine (cf. line 5 of the above mentioned RDF-snippet).

Semantic Web in 10s


When recently reading Dan Zambonini's Explaining the Semantic Web in 10 seconds, I thought: He is right, BUT: Can we peradventure say this in a more non-tekky way? Well, I'll try it:

  • The Web (be it 2.0 or the "old" one :) is all about curiosity. It requires people to explore (==click on a link) the available space.
  • The Semantic Web really is about lazyness. You want some clever piece of software to take care of boring or otherwise non-exciting tasks for you.

As a matter of fact to automate something, there has to be some infrastructure provided (ontologies, SPARQL, etc.), and the potential user has to trust (the service, the description, her agent, etc.).

Yet Another Semantic Gap


Frankly speaking the problem is well-known: There is (yet another) semantic gap between tagging stuff in e.g. del.icio.us and using a controlled vocabulary as DOAP.

Have a look at my Tomcat-bookmark at del.icio.us that intents to state that Tomcat has a Java API.

The according DOAP document (cf. Tomcat project description at Apache site) contains a semantically equivalent statement.

Now, how to resolve this? My answer would be: Use RDFa to tag it semantically.

My Semantic Web Stack


Whilst most discussions about "how the Semantic stack should look like" focus on the upper most layers, I like to discuss another issue, here. Whoever stated a while ago that the Semantic Web is an extension of the current Web in which information is given well-defined meaning, did maybe think about this issue already. Right. I'm talking about associating (X)HTML documents, primarily targeted at human users, and RDF-based metadata, which can be processed by Semantic Web agents.

With my W3C-RDFa-TF-hat-off I propose to view the Semantic Web stack as follows:

  Fig. My Semantic Web stack  

So what is the message, here? To be able to deploy your metadata along with your content, a technology is needed, which somehow brings (X)HTML and RDF together. That would be RDFa, then. Think about it. This Semantic Web in (X)HTML+RDFa *really* is the extension of the current Web in (X)HTML!

Michael Hausenblas, © 2007