Search Mailing List Archives
[protege-owl] How to use ontologies from programs?
tredmond at stanford.edu
Tue Apr 17 10:46:28 PDT 2007
I am not sure if you are asking if there are tools available or a
deeper question about best practices. The first question I can
answer - there are many tools available. There are several
programatic apis for manipulating ontologies including the Protege
OWL API (protege.stanford.edu/doc/dev.html), the OWL API
(sourceforge.net/projects/owlapi), jena (jena.sourceforge.net) and
many many others. These tools include the ability to add facts and
instances to the ontology, the ability to annotate classes and
instances with their author or source and query capabilities. I
don't know if you can annotate axioms in OWL DL but I know that this
is a feature that people have wanted.
In addition there are several inference engines around including
pellet (pellet.owldl.com), FaCT++ (http://owl.man.ac.uk/
factplusplus), and racer. These tools come with powerful correctness
and soundness guarantees.
As to the deeper question of how you can best use these tools to
achieve your needs maybe others can give useful answers. I did do
some work on the KAoS system (http://www.coginsts.uwf.edu:16080/
research/projects/KAoS) once which involved updating OWL knowledge
bases, queries and inference. But I am not sure what to tell you
about this work.
On Apr 17, 2007, at 1:37 AM, Johann Petrak wrote:
> I apologize if this is somewhat off-topic on this list, but I would
> be interested in how to best use an ontology from a client program
> and in best-practice tips you might have.
> The Protege GUI allows to very comfortably create and update
> manually, but what is the usual way to proceed when one wants to
> use/update the ontology from within a (non-GUI) program?
> There are the following issues as far as I understand:
> 1) managing individuals: what is the "standard" way to
> add, update, remove or query individuals from an OWL ontology?
> How much use can be made of the information stored in the ontology,
> e.g. when an individual is known to belong to class A and the ontology
> defines A to be disjunct with B, is it possible to query this fact?
> Are there limits to what can be asserted in a query that differ from
> what can be expressed with the OWL language?
> If yes, it would be important to consider these things when designing
> an ontology.
> 2) managing classes and properties: how is it possible to change and
> extend the ontology itself programmatically? If the batch program
> realizes that some class A has a subclass D in addition to subclasses
> B and C that has certain properties, how can the client program go
> about extending the knowledge represented in the ontology?
> What would be necessary to make use of the new knowledge when
> facts about individuals (e.g. the new fact that some individual cannot
> belong to the new class D).
> 3) documenting background information about classes, properties and
> individuals: since an ontology is a representation of the knowledge
> gathered from experts, documents or other sources, it would make sense
> to be able to track back each assertion to where it comes from.
> So, it would be necessary to somehow document that the assertion that
> B is a subclass of A comes from some source X and that L,M,and N are
> mutually exclusive comes from some source Z etc. Is this possible?
> Similar things would make sense when storing individuals: the fact
> that an individual has a certain property might be based on some
> source X and this should be documented in some standard way.
> Is there a standard way or a pattern of how to do this?
> And finally 0) is this the right forum to discuss such questions or
> can you kindly point me to better/additional lists or forums where
> people discuss these issues?
> Many thanks in advance,
> protege-owl mailing list
> protege-owl at lists.stanford.edu
> Instructions for unsubscribing: http://protege.stanford.edu/doc/
More information about the protege-owl