On 18/03/13 16:21, Joshua TAYLOR wrote:
On Mon, Mar 18, 2013 at 10:24 AM, Ed Swing <[email protected]> wrote:
Because I can use a FunctionalProperty here, I can work around the issue. However, I'm not sure why the simple addition of a single restriction would blow out the memory. The entire ontology has less than 100 defined classes. This probably should be checked and fixed in the Jena code.
Cardinality restrictions of all sorts are expensive in OWL thanks to the lack of Unique Name Assumption.
With the rule based engine then essentially what happens is that a prototypical instance of the class is created, with a bNode to represent the cardinality-1 property, then the rules fire on that to see if additional inferences are possible. This can lead to combinatorial growth even with small ontologies (indeed it can lead to non-termination but the the most trivial cases of that are guarded against).
I'd suggest you try using the Pellet reasoner and see what sort of results you get. My personal experience has been that using the Jena reasoners is great, if they're sufficient for your purposes (they're very nice if you're working with plain RDF and want to add some rules), but move to a complete reasoner if you're using more expressive constructs and running into problems.
Good advice. Dave
