The Simple HTML Ontology Extension (SHOE) markup language was developed at the University of Maryland to make machine-readable markup possible. There are two parts to understanding SHOE - how a page is described and how an ontology is defined. We show each of these in turn.
In SHOE, a number of extra HTML statements are added to the page. These do not show up when a human looks at the page in the browser, but they are available for the computer to see. First let's look at all the markup, and then we'll go through and explain them.
<INSTANCE KEY="http://www.cs.umd.edu/users/hendler/"> <USE-ONTOLOGY ID="cs-dept-ontology" VERSION="1.0" PREFIX="cs" URL= "http://www.cs.umd.edu/projects/plus/SHOE/cs.html"> <CATEGORY NAME="cs.Professor" FOR="http://www.cs.umd.edu/users/hendler/"> <RELATION NAME="cs.member"> <ARG POS=1 VALUE="http://www.cs.umd.edu/projects/plus/"> <ARG POS=2 VALUE="http://www.cs.umd.edu/users/hendler/"> </RELATION> <RELATION NAME="cs.name"> <ARG POS=2 VALUE="Dr. James Hendler"> </RELATION> <RELATION NAME="cs.doctoralDegreeFrom"> <ARG POS=1 VALUE="http://www.cs.umd.edu/users/hendler/"> <ARG POS=2 VALUE="http://www.brown.edu"> </RELATION> <RELATION NAME="cs.emailAddress"> <ARG POS=2 VALUE="hendler@cs.umd.edu"> </RELATION> <RELATION NAME="cs.head"> <ARG POS=1 VALUE="http://www.cs.umd.edu/projects/plus/"> <ARG POS=2 VALUE="http://www.cs.umd.edu/users/hendler/"> </RELATION> </INSTANCE>
We explain these statements one at a time:
<INSTANCE KEY="http://www.cs.umd.edu/users/hendler/">This statement starts describing something called an "instance." This tells the computer that all the information between here and the </INSTANCE> tag are describing one thing. The instance contains a "key" which is the Universal Resource Indicator (URI) that points to the instance being described - in this case, the web page we've been discussing.
<USE-ONTOLOGY ID="cs-dept-ontology" VERSION="1.0" PREFIX="cs" URL= "http://www.cs.umd.edu/projects/plus/SHOE/cs.html">This statement is how the computer is told which terms to use -- it is a pointer to an ontology page (described in more detail below), which has a name (the ID), a version (1.0), a pointer to where it lives on the web (the URL), and something called a "Prefix." The Prefix is how we will refer to this ontology from now on. Instead of having to type the whole web name (the URL), we will simply say "cs:" and the computer will know this is what we mean. In SHOE an instance could only refer to one ontology at a time. In the languages we describe in later steps, we will allow information from multiple ontologies.
<CATEGORY NAME="cs.Professor" FOR="http://www.cs.umd.edu/users/hendler/">This statement says that the category that relates to this instance is the "Professor" category as it is defined in the "cs:" ontology (using the prefix described before). Category has only one argument (the "FOR") which says what URL to go to for the particular instance we are describing (in this case, the FOR field is the same as the Instance name defined earlier - but that is not necessarily the case, so we need to state the redundant information to provide enough precision for the computer to make the correct connection.)
<RELATION NAME="cs.member"> <ARG POS=1 VALUE="http://www.cs.umd.edu/projects/plus/"> <ARG POS=2 VALUE="http://www.cs.umd.edu/users/hendler/"> </RELATION>Next we define some information about a relation that connects a person and a project. The ontology contains a relation called "member" which relates an organization and a person -- the syntax is a bit complicated, but it specifies which arguments are in which positions. This is needed because sometimes when the information is collected by a computer it is processed out of order - again, extra precision gaurantees that the computer gets it right.
<RELATION NAME="cs.name"> <ARG POS=2 VALUE="Dr. James Hendler"> </RELATION> <RELATION NAME="cs.doctoralDegreeFrom"> <ARG POS=1 VALUE="http://www.cs.umd.edu/users/hendler/"> <ARG POS=2 VALUE="http://www.brown.edu"> </RELATION> <RELATION NAME="cs.emailAddress"> <ARG POS=2 VALUE="hendler@cs.umd.edu"> </RELATION> <RELATION NAME="cs.head"> <ARG POS=1 VALUE="http://www.cs.umd.edu/projects/plus/"> <ARG POS=2 VALUE="http://www.cs.umd.edu/users/hendler/"> </RELATION>(Note that that last one shows one of the key reasons we need to relate terms to ontologies. In English, the term "head" could mean head of a body, head of an organization, to "head someone off at the pass" or many other things. The ontology makes it clear to the computer that in this case we are relating a person and an organization, as we will see below.)
</INSTANCE>and finally we close the Instance. The remainder of the page is the normal HTML as was shown in Step 1.
A full description of this ontology and a nice rendering of the entire thing is available on the web - click here to see this. In this section we will only show a few aspects of the machine readable ontology.
<<ONTOLOGY ID="cs-dept-ontology" VERSION="1.0" DESCRIPTION="An example ontology for computer science academic department">First, the ontology is given an ID, a version number and a human readable description. This latter is not used by the computer, but in some tools it is displayed if a human asks for more information.
<USE-ONTOLOGY ID="base-ontology" VERSION="1.0" PREFIX="base" URL="http://www.cs.umd.edu/projects/plus/SHOE/onts/base1.0.html">One ontology can use another - in this case we say that there is something called the "base" ontology which is used by this ontology. This allows new definitions to be built using definitions that were created previously.
<DEF-CATEGORY NAME="Person" ISA="base.SHOEEntity" SHORT="person">
<DEF-CATEGORY NAME="Worker" ISA="Person" SHORT="worker">
<DEF-CATEGORY NAME="Faculty" ISA="Worker" SHORT="faculty member">
We then define a number of categories. DEF-CATEGORY says we are defining a category, ISA tells us that this category is a subcategory of another one (i.e. A Person is an entity, a worker is a person, a faculty is a worked, and a professor is a faculty). This nesting of categories is important because it allows us to relate one to another. Many tools can take advantage of this kind of information as described in the article. Each category also contains something called a "short", which is a short description that tools can use to tell a human what this category is supposed to represent.
<
<DEF-RELATION NAME="head"
SHORT="is headed by">
<DEF-ARG POS=1 TYPE="Organization">
<DEF-ARG POS=2 TYPE="Person">
</DEF-RELATION>
Finally, a number of relations would be defined. In this case we use the example of "head" discussed in Part 1. As you can see, the relation is expressed as having two arguments. One is of category organization, the other is of type person. Thus, the computer can connect categories to each other via these relations. This doesn't let the computer "understand" the words in a human sense, but it does make sure that it can disambiguate different uses and have some way of relating the terms in a more formal manner.
SHOE was an important demonstration that a web ontology language could be written, and that it could be "embedded" on a web page (as was shown in Part 1). SHOE was first developed in 1995, and in the years since then, a number of other web ontology languages have come along that improved various aspects, made the ontologies more compatible with current web tools, etc. In the next section, we show the use of DAML+OIL - at the time of this writing, the most modern and widely used web ontology language.
Return to example description.
Go on to Step 3