Dave,
Thanks for answering the original question. However, I am curious to see where
the discussion could continue to:
As you pointed out, the meaning of the 'reasoning' and 'underneath' is actually
what is confusing here. Meaning of the listSuperClasses(?RESOURCE) term in the
OntAPIĀ (from my point of view that we can not distinguish from some other
possible interpretations?) is interpreted as follows:
SELECT DISTINCT ?sc WHERE { ?RESOURCE rdfs:subClassOff ?sc . }
So, in the RDF language, the listSuperClasses(?RESOURCE) should return
immediate ancestors of the ?RESOURCE. In my opinion, any additiional
information returned by the query must be explicitly specified by rules
encapsulated within a reasoner. Note that meaning of the OntAPI is grounded by
means of the SPARQL.
Evidently, a restriction would be represented in the result set by a blank node
(BN). So, by 'underneath' I mean do not decide about implicit meaning of blank
nodes that exactly must bu done here if we want to make any further conclusion
about super-classes. My feeling is that we would be much safer if we do not
make any further assumptions and say ".. well, we do not know about BNs" - that
actually is exactly what you did in code. Right?
Milorad
>________________________________
> From: Dave Reynolds <[email protected]>
>To: [email protected]
>Sent: Tuesday, January 7, 2014 2:52 PM
>Subject: Re: is there reasoning outside a reasoner in Jena?
>
>
>On 07/01/14 13:28, Milorad Tosic wrote:
>
>> Hi,
>>
>> I'm reading the Jena paper [1] (which is very nice and useful, BTW), where I
>> found the following:
>>
>>
>> "Prior to this release, Jena used a heuristic method to attempt to
>> associate restriction properties with the classes sub-classing that
>> restriction. Since there were problems with precisely defining the
>> heuristic, and ensuring correct behaviour (especially with
>> inference models), we have dropped the use of this heuristic from
>> Jena 2.2 onwards."
>>
>> Do I misinterpret the statement when I conclude that Jena API does
>> underneath some reasoning independently on the existing reasoner embedding
>> mechanism?
>
>Depends what you mean by "reasoning" and "underneath".
>
>There are parts of the OntAPI where you are explicitly asking for things
>which a reasoner might have already worked out. For example
>listSuperClasses. The implementation for those checks if there is a
>reasoner present and if so just queries directly knowing that the
>super-class closure is available from the reasoner. If there is no
>reasoner then listSuperClasses has to manually iterate over the super
>class tree to fulfil its contract. I wouldn't call that reasoning
>underneath though - it is just explicit in the API call what is being
>returned.
>
>Generally the OntAPI design tries to leave reasoning to the reasoner and
>minimize the number of places like listSuperClasses where there API has
>to bridge the gap in the absence of a reasoner.
>
>Dave
>
>
>
>
>