The Sun BabelFish Blog

Don't panic !

Friday Oct 07, 2005

Reference and Inference

The key to understanding the power of the Semantic Web is understanding the essential role URIs, and URLs in particular, play at its core. This seems like a small thing, but it is what changes everything.

URIs permit one to distinguish objects and relations universally. That's what URIs are: Universal Resource Identifiers. URLs (a subclass of URIs) furthermore make it very easy to relate the name to the thing (the resource) it names. So by using URLs as the basic way to identify things, we are always one little click away from a description of the thing we are mentioning. I emphasize the it is *a* description, because the web was designed to allow many different representations of the same resource to be returned on request. This is called content negotiation. Well defined ontologies make use of this very powerful feature, by placing one or more html representation of the resources defined for human readers (in the preferred language of the reader preferrably) and a well structured machine readable versions for programs that may want to use them too.
An example will make this very clear. Look for example at the foaf:Person class defined by the Friend of a Friend ontology. If you click on that link you will get a human readable web page back. There you will learn that foaf:Person is a subclass of foaf:Agent (and hence that any property of foaf:Agent is applicable to foaf:Person). A machine wanting to learn the same thing will get this written out in a precisely defined way. To get the machine readable version run:

curl -H "Accept: application/rdf+xml" -L -i http://xmlns.com/foaf/0.1/Person
[1]

So why is this such a big difference? Well compare to an SQL database that may have two tables with columns named PERSON. There is really no telling wether the two PERSON columns represent the same or a different concept without reading some documentation that is somewhere if anywhere, but in no particular location. foaf:Person on the other hand is the same thing wherever we find it. The authority on the meaning of foaf:Person (which expanded is http://xmlns.com/foaf/0.1/Person) is the owner of the xmlns.com domain. So we can even trace authority.
So by using URIs we have a way to identify a resource, we have a way to identify some authority with regard to that resource, and we can also get a description of the resource. The resource (the thing referred to by the URI) can be any thing. If the description of the thing is well done, we can discover from the description of the thing, what the thing is, and how it relates to other things. So in the case of foaf:Person we discover that foaf:Person is a type of thing, a Class, and that things of this class have certain type of relations (such as mail boxes, friend, ...) to other things. How do we know that a Person is a class? Because in the description we found the following statement: foaf:Person a rdfs:Class. What is rdfs:Class? Expanded it is http://www.w3.org/2000/01/rdf-schema#Class. Click on that and you get a machine readable explanation of it. This machine readable version points to human readable version of the page, which defines in detail the meaning of that term. RDF really is built right into the core of the Web.

Now the beauty of all of this is that by following these links we just get to find out what types of things exist and how they are related. RDF pure does not force a particular type of inferencing on us, as Prolog might have done. RDF just allows us to describe the world. Some of the terms such as rdfs:Class refer to some model theoretic semantics that are built on logic and so are ready to allow an inferencing engine to deduce new relation, or simplify the number of relations it needs to keep track of [2]. The Semantic Web enables inferencing, but does not force it. For those who would like a fuzzy logic they could define some fuzzy logic relations and allow fuzzy inference engines to make use of these fuzzy relations to come to their prefferred fuzzy conclusions. If fuzzy logic can be mapped to normal logic then a strict logic reasoner would be able to come to similar conclusions in his own way. RDF allows one to Reference clearly the rules to enable one to make the inferences one wishes. The theoretical foundation for OWL is description logics for example, which itself is based on first order logic, which in turn has been underpinned by set theory.

Now it should be clear why RDF stands for Resource Description Framework.

[1] To get the format designed for human consumption (the html version) just remove the -H "Accept: application/rdf+xml" string. I prefer passing the machine readable version through the following transformation process to generate N3: cwm.py --rdf ontology.xml --n3 | less
[2] If you discover that 2 things a and b are the same, you can just replace all a's with b. That makes it easier to search for things.

Comments:

Note on comments:

Post a Comment:
  • HTML Syntax: NOT allowed

Search

Recent Entries

Navigation

Referers