Search code examples
spatialdroolsrule-enginetemporaljess

Rules engine for spatial and temporal reasoning?


I have an application that receives a number of datums that characterize 3 dimensional spatial and temporal processes. It then filters these datums and creates actions which are then sent to processes that perform the actions. Rinse and repeat.

At present, I have a collection of custom filters that perform a lot of complicated spatial/temporal calculations.

Many times as I discuss my system to individuals in my company, they ask if I'm using a rules engine.

I have yet to find a rules engine that is able to reason well temporally and spatially. (Things like: When are two 3D entities ever close? Is 3D entity A ever contained in 3D region B? If entity C is near entity D but oriented backwards relative to C then perform action D.)

I have looked at Drools, Cyc, Jess in the past (say 3-4 years ago). It's time to re-examine the state of the art. Any suggestions? Any standards that you know of that support this kind of reasoning? Any defacto standards? Any applications?

Thanks!


Solution

  • Premise - remember that a SQL-based1 DBMS is a (quite capable) inference engine, as can be seen from these comparisons between SQL and Prolog:

    To address specifically your spatio-temporal applications, this book will help:

    That is, combining Interval and Relation Theory is possible to reasoning about spatio-temporal problems effectively (see 5.2 Applications of Intervals).

    Of course, if your SQL-based DBMS is not (yet) equipped with interval (and other) operators you will need to extend it appropriately (via store-procedures and/or User-Defined Functions - UDFs).

    Update: skimming the paper pointed out in comments by timemirror (Towards a 3D Spatial Query Language for Building Information Models) they do essentially what I touched on above:

    (last page)

    IMPLEMENTATION CONCEPTS

    The implementation of the abstract type system into a query language will be performed on the basis of the query language SQL, which is a widely established standard in the field of object-relational databases. The international standard SQL:1999 extends the relational model to include object-oriented aspects, such as the possibility to define complex abstract data types with integrated methods.

    I do not concur with the "object-relational database" terminology (for reason off-topic here) but I think the rest is pertinent.


    Update: a quote regardind 3D and interval theory from the book cited above:

    NOTE: All of the intervals discussed so far can be thought of as one-dimensional. However, we might want to combine two one-dimensional intervals to form a twodimensional interval. For example, a rectangular plot of ground might be thought of as a two-dimensional interval, because it is, by definition, an object with length and width, each of which is basically a one-dimensional interval measured along some axis. And, of course, we can extend this idea to any number of dimensions. For example, a (rather simple!) building might be regarded as a three-dimensional interval: It is an object with length, width, and height, or in other words a cuboid. (More realistically, a building might be regarded as a set of several such cuboids that overlap in various ways.) And so on. In what follows, however, we will restrict our attention to one-dimensional intervals specifically, barring explicit statements to the contrary, and we will omit the "one-dimensional" qualifier for simplicity.

    Note

    1. I wrote SQL-based and not relational because there are ways to use such DBMSes that completely deviate from relational theory.