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/ .
As well as cardinality restricitions etc...
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.
answered 13 Nov '09, 19:46
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...
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.
As I said, I hope this helps...
answered 11 Nov '09, 07:44
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.
answered 19 Nov '09, 04:18
Kendall Clark 1
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.
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).
answered 10 Nov '09, 21:27