Rules engine for spatial and temporal reasoning?

妖精的绣舞 提交于 2019-11-27 23:03:11

问题


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!


回答1:


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

  • prolog to SQL converter
  • difference between SQL and Prolog

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

  • TEMPORAL DATA AND THE RELATIONAL MODEL - A Detailed Investigation into the Application of Interval and Relation Theory to the Problem of Temporal Database Management.

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.



回答2:


This is Spatial Reasoning... a few models but 9DE-IM is now accepted by OGC and implemented in PostGIS and other programming tools.

PostGIS implements a spatial reasoning engine based on dimensionally extended 9 intersection model... 9DE-IM..

http://postgis.refractions.net/documentation/manual-svn/ch04.html#DE-9IM check sect 4.3.6.1. Theory...


So does the Java Topology Suite (and Net Topology suite for C# etc)...

http://docs.codehaus.org/display/GEOTDOC/Point+Set+Theory+and+the+DE-9IM+Matrix

In particualr check out the geometry.relate stuff.. such as

boolean isRelated = geometry.relate( geometry2, "T*T***T**" )

You can test the relationships, or filter data based on them. Works with pts, lines, polygons etc...


This might help on temporal stuff..

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.87.4643&rep=rep1&type=pdf




回答3:


Check out SpatialRules at http://www.objectfx.com/. It's a geospatial complex event processor for 2D and 3D.



来源:https://stackoverflow.com/questions/2469567/rules-engine-for-spatial-and-temporal-reasoning

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!