what is ontology?

L

Leo

Dear all,

I saw several java job descriptions require knowledge of ontology. What
is ontology? How Java use it? Any tutorial available?

Thanks a lot.
 
R

Roedy Green

I saw several java job descriptions require knowledge of ontology. What
is ontology? How Java use it? Any tutorial available?

It is the study of categories. A lot of work is going on right now
with RDF to make the knowledge on the web more accessible to
computers.

Here is an example. Let's say each airline puts out a schedule in a
different format. Every hotel guide puts out its information in a
different format. How do you collect that information to enable you to
plan a multi-airline multi-hotel holiday with automated help?

The idea is you can have various knowledge bases, each with its own
formats and vocabulary. Someone comes along interested in merging
knowledge bases. They describe the format and define each field . Now
it become possible for a computer to find the equivalent information
under different names in different databases.

Another part of this is encoding data with context so that you can
search for "Oust" the air freshener vs "oust" the eviction verb.

see http://mindprod.com/jgloss/rdf.html
 
M

Mickey Segal

Since each of us is entitled to one bad pun a year, I will ask: does
ontology recapitulate philology?
 
R

Roedy Green

ontology recapitulate philology?

The original of course is "ontogeny recapitulates phylogeny"

I suppose in the sense computer types use the word ontology it could
have been stated ontogeny recapitulates ontology.

For those how have forgotten their biology 11, the phrase refers to
the way an embryo goes through stages resembling ever more advanced
(later evolving) classes of animals.
 
M

Mike Schilling

Mickey Segal said:
Since each of us is entitled to one bad pun a year, I will ask: does
ontology recapitulate philology?

Ontology actually recaptures philately. And that bears the stamp of truth.
 
S

Stefan Ram

tom fredriksen said:
This is in the context of philosophy, not computer science.

The nifty thing about the answer given by Mike Schilling (as
quoted above) is that it can be applied to both meanings.

One might call the ontologies in computer science »taxonomies«
sometimes.
The computer science context is described on wikipedia:
http://en.wikipedia.org/wiki/Ontology_(computer_science)

So you believe that the OP possibly did not even bother to use
Google or Wikipedia before asking here. You might be right.

BYW: I have started to arrange my Java bookmarks into such an
»ontology«. One entry point to Java-related entries is here:

http://purl.net/stefan_ram/garnoo/XOCATALOGUEXOYTREEGXOPROGRAMMINGXOLANGUAGEXSYJAVA

This is the category "Java" of the catalogue "Treeg".

The system supports multiple ordering schemes, so another
catalogue "Newsgroups" orders the same bookmarks by the
newsgroup that they might be related to:

http://purl.net/stefan_ram/garnoo/XOCATALOGUEXOYNEWSGROUP

The »things that exist« are called »concepts« in my ontology,
and are usually grouped in a sub-notion of the notion
»concept«, like, for example, types of means for communication

http://purl.net/stefan_ram/garnoo/XOCONCEPTXSCOMMUNICATIONXGTX79ZPE

Every bookmark can be related to such a concept by an
assertion about their relationship.

The current system wass written in Perl but is being rewritten
in Java.

It has many things in common with RDF and topic maps, but was
drafted before the W3C started to talk about the »semantic
web«. The concept of a »semantic net« existed long before that.
 
L

Leo

Wow. I went to your links. They are amazing. Honestly, I am lost too. I
don't really know what those means. But these technologies are extremely
important for my work. Could you give me some advices on how to learn to
these things? Step by step tutorials would be great.

Thank you very much.
 
M

Mike Schilling

Stefan Ram said:
The nifty thing about the answer given by Mike Schilling (as
quoted above) is that it can be applied to both meanings.

One might call the ontologies in computer science »taxonomies«
sometimes.

That seems like a more accurate word for most purposes. That is, if I'm
discussing data in Java, my ontology consists of primitives, references and
objects, where an object is made up of a set of fields which are themselves
references and primitives. Questions like "Why can't I ask what order the
fields in an object appear in?" is properly an ontological one. The answer
is that ordering isn't a concept in this ontology.

But if, in a discussion of Java classes, you introduce groups like:

1. Passive data holders
2. Classes with only static members
3. Singleton classes
4. Classes intended to be used polymorphically
etc.

Now you've introduced a taxonomy. It may be a useful way of organizing the
discussion, but it's an order you've imposed on the subject, not one that's
there inherently .
 
S

Stefan Ram

Leo said:
Wow. I went to your links. They are amazing. Honestly, I am
lost too. I don't really know what those means. But these
technologies are extremely important for my work. Could you
give me some advices on how to learn to these things? Step by
step tutorials would be great.

Right now, I only have scattered pages about parts of the project.

The data for the current data base is written in Perssert:

http://www.purl.org/stefan_ram/pub/perssert

The words used are from a controled vocabulary that is called
»Conbulary«.

http://www.purl.org/stefan_ram/pub/conbulary

I even wrote a page to solve the problem you describe above,
i.e., where I explain how to read the pages. But this page is
in German:

http://www.purl.org/stefan_ram/pub/garnoo-anleitung

I could translate it to English one day, but currently I am
working on the re-implementation in Java.

The current preliminary implementation allows me to make
assertions:

utterance.add
( new Assertion
( comparableLocatableStringEvaluator.valueOf( "Peter" ),
comparableLocatableStringEvaluator.valueOf( "is a" ),
comparableLocatableStringEvaluator.valueOf( "human being" )));
utterance.add
( new Assertion
( comparableLocatableStringEvaluator.valueOf( "Peter" ),
comparableLocatableStringEvaluator.valueOf( "has the phone number" ),
comparableLocatableStringEvaluator.valueOf( "1234567" )));

Then I can go to any node such as peter:

ComparableLocatableString peter =
comparableLocatableStringEvaluator.valueOf( "Peter" );

Here, the »valueOf« is something like »String.intern«, so this
peter object is the same as used in the assertions above.

Now I can use an algorithm to retrieve all assertions
about peter:

LocatableAlgorithms.enumerateAllLocations
( new SimpleWriter(),( de.dclj.ram.system.locator.Locatable )peter );

Which will print

( Peter; has the phone number; 1234567 )
( Peter; is a; human being )

This was quite simple and straightforward. I still have
omitted some special features, so this was simplified a bit.

I still need to implement the system to support my notion
paths (they can be compared with the resource URIs in RDF),
and the system to read from an external text representation.

In the meantime, you might have a look at similar systems,
which already are ready to be used, for example Jena.

My own page about Jena is in German:

http://www.purl.org/stefan_ram/pub/java_rdfxml_de

But here is English documentation:

http://jena.sourceforge.net/documentation.html
 
A

Andy Dingley

I saw several java job descriptions require knowledge of ontology.

Well that's nice to see at last. I'm tired of years of being an
unemployed ontologist.
What is ontology?

Ontology is the branch of philosophy dealing with "being". No so much
"Are things?" in the "I think therefore I am" sense, but more "If things
are, then what are they ?"

For a discipline connected with the definition of what things are, then
it's surprisingly hard to pin down what "an ontology" is. I can't do
this, and I've been trying to come up with a snappy description for a
few years now. The best I've managed is to give up on defining "an
ontology" and instead talk about "ontological features" that a
description might have, leading it in that direction. Ontologies are a
lot like schemas, such as XML schema - but they're much more besides.
There are maybe four "ontological directions" an ontological description
can go in - not all ontologies do everything, but they have to do some
of this.

First of all there are objects and their properties - the same old stuff
schemas and database models have dealt with for years.

Secondly there's a class and subclass structure that is familiar to OO
programmers. These get talked about as "subsumption ontologies", but
beware those obsolete old beardies who think that subsumption is _all_
there is to an ontology.

Thridly (and most usefully, in practical applications right yesterday)
there's taxonomy. Taxonomy is about maintaining vocabularies of
pre-defined endpoints that you can use to label other things. You can
call it a badger, I can call it lunch, but we can both agree to share a
Linnaean taxonomy and recognise that we're both dealing with
_meles_meles_

Taxonomy is _not_ ontology. Many "ontologies" around today are really
just taxonomies and go no further.

Fourthly, and the interesting part if you're following the W3C path from
SHOE to DAML+OIL and now to OWL (web ontology language) is the addition
of restrictions. If we constrain property values to have particular
values, then we can shift from merely primitive classes to defined
classes, and that's where we can start to do interesting machine
reasoning.

With properties, we can state that "pizzas have toppings".

With classes we can have "vegetable toppings" and "meat toppings"

With taxonomy we get "tomato topping" and "mozarella cheese topping" for
an "Armenian Hot pizza".

With restrictions we can state "All pizzas that have a cheese topping
will be known as 'cheesy pizzas'"

Now let a reasoner loose on our ontology and _it_ can tell _us_ which
are the "cheesy pizzas". We don't label our pizzas as "likely to give
Aunt Mabel wind", we just set up discrete rules about what goes on a
particular named pizza, and the dietary effects on onions, then let the
machines work out the rest.

Do this for an ontology with thousands of classes and it starts to get
interesting.

Actually what it mainly does (in the Description Logics world) is to
tell you that black = white and throw you back into working out where
your description was wrong. it is _very_ difficult to accurately
construct a non-trivial ontology without errors.
How Java use it?

"All the cool kids use Java" - danbri

You don't need an ontology to use Java, but you pretty much do need Java
to use ontologies. All the good onto tools are built around Java, with
very few exceptions.
Any tutorial available?

Download Protege (from protege.stanford.edu) and have a play with that.
This is just about the leading edge of where the useful, maintained
tools are.

Find the "Ontology 101" paper to explain "what" and the Manchester
Protege pizza tutorial for a tutorial on "how".

For a free reasoner try Pellet ("OWL Pellet" - groan). It's easy to
configure, but poorly documented - start it from the scripts in the
install directory, but note that it runs on port 8081 by default and the
pizza tutorial (which is slightly old) talks about Racer running on 8080
instead.

Protege is nice in that it supports both frame-slot and description
logic based systems. Most people today are probably running OWL-DL as
the back end to it, but it's important not to get blinkered and think
that the tool you use everyday represents the only way to approach a
problem.

The only thing I _really_ know about ontologies is that no-one knows
much about ontologies - particularly in real-world applications of
machine reasoning. There's no reason to believe that any tool we use
today will still be seen as useful in 10 year's time. It's a rapidly
changing field and we're nowhere near there yet.
 
S

Stefan Ram

Andy Dingley said:
Well that's nice to see at last. I'm tired of years of being an
unemployed ontologist.
Taxonomy is _not_ ontology.

What is the difference from your point of view?

(Beside »taxonomy«, there still is the term »controled
vocabulary«.)

I recently became aware of the fact, that I also have a very
small Java-related sub-taxonomy.

For example, I have an entity »access modifier«

http://purl.net/stefan_ram/garnoo/XOCONCEPTXSNOTATIONXSYJAVAXOSOURCEXGMODELXSACCESSXGMODIFIER

This has related assertions that

- each access modifier might be used or regarded as a
constructor modifier, interface modifier, method modifier
or a modifier, and that

- »public«, »protected« and »private« might be interpret
as an access modifier.

Or, the following page says that a field and a method
are both class members:

http://purl.net/stefan_ram/garnoo/XOCONCEPTXSNOTATIONXSYJAVAXORUNXGTIMEXGMODELXSCLASSXGMEMBER

However, right now, there is not much sense in browsing this
small knowledge base, because it does not contain much more
information beside what I just quoted. But I add to it from
time to time.
Do this for an ontology with thousands of classes and it starts
to get interesting.

They started doing something like this in the project »Cyc«
even before the »semantic web«, and I am not sure how to
assess the success of Cyc today.
 
D

dingbat

Stefan said:
What is the difference from your point of view?

There's no "difference", as a contradiction that one can draw. However
there are mere taxonomies around claiming to be ontologies, and they
don't merit the title.

Even then it's hard to say that these aren't "things that are
ontologies", and all we can really claim is that they're not
representative of the full scope of an ontology and thus not good
examples to use as tutorials of what an ontology is capable of.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,011
Latest member
AjaUqq1950

Latest Threads

Top