On 8 Mar 2010, at 19:20, Dan Connolly wrote:
[snip]
I'll have to take another look at why we did forward chaining.
(the decision happened before I got involved in the project.)

The usual reasons I suspect: it's conceptually and implementationally easier (esp, for termination) and perceived query time performance.

For simple stuff like this, it's almost always a bad idea from a cost/ benefit perspective as you scale up.

In #swig today, I see:

<MacTed> Virtuoso now handles owl:equivalentClass,
owl:equivalentProperty, owl:inverseOf, owl:SymmetricProperty, and
owl:TransitiveProperty ... and possibly some I'm forgetting off the top
of my head
<MacTed> cost-based optimizer works over both SQL and SPARQL


<MacTed> yep.  backward-chaining.  Virtuoso's preference.
<MacTed> forward-chaining (materializing inferred triples) is supported
but discouraged.

I wish we'd ban "backwards" and "forward" chaining as terminology :)

Inverse can be handled by query expansion (backward chaining? but...there's no chain!) through OWL QL at least.

        http://www.w3.org/TR/2009/REC-owl2-profiles-20091027/#OWL_2_QL

For something like OWL RL, I'd use some sort of semi-naive evaluation with magic sets (i.e., on-demand, focused forward chaining).

That's a very (academically, at least) conventional choice.

Consider:
http://www.comlab.ox.ac.uk/people/ian.horrocks/Publications/download/ 2009/PeMH09a.pdf http://sunsite.informatik.rwth-aachen.de/Publications/CEUR-WS/ Vol-477/paper_32.pdf
        http://web.ing.puc.cl/~jperez/talks/eswc07.pdf

Cheers,
Bijan.


Reply via email to