Thursday, December 5, 2013

THE MAGICAL NATURE OF ALLEGROGRAPH PROLOG

While SPARQL is becoming more magical, let's take time to ask "Is Franz' AGProlog already magical"?  I mean magical in the sense of magic properties in SPARQL (http://www.w3.org/wiki/SPARQL/Extensions/Computed_Properties).

Franz, I believe, is certainly doing the right thing by directly supporting magical properties in AllegroGraph for the SPARQL-centric subset of their customer base.  This sort of magic corrects some of what I don't care for with SPARQL's FILTER syntax.  But, let's not forget that Franz' Prolog has been magic-cabable from the day that they released their "q" and "q-" Prolog functors in support of their semantic support for Prolog.  I've been using their Prolog magically for a couple of years by creating Prolog adapter rules like the following:

(<- (q- ?POINT_1 !st:myNonProprietaryPointAfter ?POINT_2) ;;rule conclusion.
  (point-after ?POINT_1 ?POINT_2)) ;;rule premise; "point-after" is a Franz-supplied Prolog temporal functor.

This rule is invoked every time that basic semantic store access fails to find a matching triple/statement that declaratively asserts the "beforeness".  So in magical fashion, I first try to grab it from the store, then I try to compute it.

(select (?POINT_1 ?POINT_2)
  (q- ?POINT_1 !st:endsBeforeStartingOf ?POINT_2))

It is a bit of extra work for me to write these adaptor rules, but this allows me to name my magic properties as I choose.  In particular, I have my own Allen interval overlap properties that I am fond of and that happen to be vendor neutral.  Yet I tie into their Prolog's magic-enabling functors as in the point-after example above.

They could provide their own proprietary adapters for those who might like the out-of-the-box magic simplicity, but I'm quite happy with the vender-neutrality of the current state.

It appears that their magic SPARQL properties have corresponding Prolog functors.  So they have a good claim on temporal, geo-spatial, and social network analysis magic for both SPARQL and Prolog.  My experience is only with the Prolog magic-enabling functors.

Bottom line:  AllegroGraph Prolog is quite magical for my purposes.  Perhaps it was the first magical-enabling implementation.