Hi All,

I am looking for a simple to use OWL reasoner. e.g: preferably reasoner -owl core.owl -rdf P05067.rdf which will tell me if the small P05067.rdf file contradicts any rules in the core.owl As well as show which triples are inferred. Preferably explaining which rules are the source of the contradiction and/or inference.

The use case is debugging and testing a owl or the rdf file for correctness. i.e. sometimes I want to check that the OWL file does not declare OWL legal inferences that are real world wrong. And at other times I want to check if an class instance in a RDF file does not contain contradiction.




I want to check if http://purl.uniprot.org/taxonomy/9606 meets the requirements of ftp://ftp.uniprot.org/pub/databases/uniprot/current_release/rdf/core.owl without adapting either file if at all possible.

For example an owl:restriction? e.g. one of the things I think I can say in OWL is that the species in the following example must be one of the Rank instances defined in the core.owl. Using something like

@base http://purl.uniprot.org/core/ .
t a :Taxon
[ a owl:Restriction;
    owl:onProperty t:rank
    owl:allValuesFrom :Rank ]

@base http://purl.uniprot.org/core/ .
@prefix rdf:http://www.w3.org/1999/02/22-rdf-syntax-ns# .
@prefix rdfs:http://www.w3.org/2000/01/rdf-schema# .
@prefix owl:http://www.w3.org/2002/07/owl# .
http://purl.uniprot.org/taxonomy/9606> rdf:type :Taxon ;
    :rank :Species ;

As well as cardinality restricitions etc...

asked 10 Nov '09, 16:27

Jerven's gravatar image

Jerven ♦
accept rate: 35%

edited 11 Nov '09, 08:52

What do you mean by "meets the requirements"? OWL doesn't define structural restrictions so I don't quite understand what you are wanting beyond the inference generated.

(11 Nov '09, 00:33) spoon16 spoon16's gravatar image

Pellet will allow you to put OWL axioms (or, if you prefer, rules) in one file and RDF statements in the other. And it will process that quite happily from command line. It will also explain inferences, again from the command line. I don't know why Ivan says that's more R&D, since Pellet's had this feature for an age; it works perfectly well w/ the "pellet explain" subcommand.

Finally, in the upcoming 2.0 release -- which will drop on Monday -- the command line tools are much improved and act like proper Unix tools, etc.

permanent link

answered 13 Nov '09, 19:46

Kendall%20Clark's gravatar image

Kendall Clark
accept rate: 50%

@Kendall, can you give the exact command too? Or add a URL to a man/help page? Thanx!

(14 Nov '09, 09:33) Egon Willigh... Egon%20Willighagen's gravatar image

Pellet 2.0.1 does this. And has found quite a few errors in the owl file as well as the RDF files. that we produce. ./pellet.sh consistency "uri of owl" "uri of rdf"

(22 Feb '10, 15:25) Jerven ♦ Jerven's gravatar image


to be able to answer your question (well, attempting to do so) I should understand it in details which I don't:-( I am not sure what 'core owl' means, for example. But I will try anyway, in the hope that this will be helpful...

There are different aspects that I can try to reflect on...

  1. proper OWL engines will give you an answer two out of the three issues, namely finding the 'contradictions' (ie, whether there is consistency error) and showing which triples are inferred. There are several sites that list implementations; the implementation report of the OWL Working group is probably one of the most recent. Note that, afaik, some of the editors in the list will also detect inconsistencies, or at least some of them, so it is worth looking at those. (I am not a user of Pellet, but I must admit I did not understand your answer to that proposal. Merging two RDF files into one is really not a difficult issue, if this is the only problem you have with Pellet...)

I could not look at the details of your ontology, it is fairly large, but you might want to see whether it fits one of the OWL 2 profiles. If so, there might be some simpler tools around. Eg, if it falls under the OWL 2 RL category, then simpler rule engine based implementation may also work. (I do not know whether there is already a Jena based implementation available, but if not, it is only a question of time.

  1. you also asked "explaining which rules are the source of the contradiction and/or inference". That is much more of an R&D question, I am afraid. The best paper award for the ISWC2008 conference, for example, touched exactly on that aspect; current tools still have to evolve in this area...

As I said, I hope this helps...


permanent link

answered 11 Nov '09, 07:44

Ivan's gravatar image

accept rate: 13%

I will try to explain why I would prefer to have the instance data separate from owl definitions. I am trying to write a simple QA tool. In the UniProt release cycle there is limited time and hardware resources to do this. So I want to select a number of random entries and validate each of these separately. Preferably with as much debug information as possible when an instance conflicts with the OWL. If I can avoid merging the owl file with the rdf containing the instance data. I would strongly prefer so. However, I won't mind it if there is no other way.

(11 Nov '09, 09:11) Jerven ♦ Jerven's gravatar image

The command to get help for Pellet's command-line is, from a prompt, "pellet help"; to get help for the inference explanation function, type "pellet help explain". Using a reasoner with explanation support is one reason not to use a simple rule engine implementation, since none of those have advanced reasoning services like inference explanation. But YMMV.

permanent link

answered 19 Nov '09, 04:18

Kendall%20Clark%201's gravatar image

Kendall Clark 1
accept rate: 50%

The command line options do not quite do what I want but with the owl-api (http://owlapi.sourceforge.net/documentation.html) I think it will not be a lot of work to get what I want exactly.

(23 Nov '09, 08:22) Jerven ♦ Jerven's gravatar image

Pellet should be what you are looking for.

permanent link

answered 10 Nov '09, 17:01

Bastian%20Spanneberg's gravatar image

Bastian Span...
accept rate: 21%

Pellet certainly seems interesting. However, I am still looking at how to make it reason using owl rules in one file and rdf data in the second.

(10 Nov '09, 17:20) Jerven ♦ Jerven's gravatar image

One hint would be to look into using SWI-Prolog and the accompanying SemWeb (RDF) and Thea (OWL) packages. In addition some of the BlipKit SWI-Prolog modules might prove useful.

I can not answer how hard or easy your task would be (currently using only the SemWeb/RDF methods, which are convenient to work with indeed), but the functionality should be there I assume, and SWI-Prolog seems to be scriptable enough, looking at the command line options.

permanent link

answered 12 Nov '09, 13:22

Samuel%20Lampa's gravatar image

Samuel Lampa
accept rate: 33%

edited 12 Nov '09, 13:31

Hi Jerven,

This isn't a full answer :(, but it should be quite possible to write a nice command line tool around something like Jena, doing what you require, including have a split between instances and ontology (as you comment above).


permanent link

answered 10 Nov '09, 21:27

yadnem's gravatar image

accept rate: 0%

Your answer
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here



Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Question tags:


question asked: 10 Nov '09, 16:27

question was seen: 7,595 times

last updated: 19 Nov '09, 04:18