用于空间和时间推理的规则引擎?
我有一个应用程序,它接收许多表征 3 维空间和时间过程的数据。然后,它过滤这些数据并创建操作,然后将这些操作发送到执行操作的进程。冲洗并重复。
目前,我有一组自定义过滤器,可以执行大量复杂的空间/时间计算。
很多时候,当我与公司的个人讨论我的系统时,他们会问我是否使用规则引擎。
我还没有找到一个能够在时间和空间上进行良好推理的规则引擎。 (例如:两个 3D 实体何时靠近?3D 实体 A 是否包含在 3D 区域 B 中?如果实体 C 靠近实体 D 但相对于 C 向后定向,则执行操作 D。)
我看过 Drools、Cyc,过去的 Jess(比如 3-4 年前)。是时候重新审视现有技术了。有什么建议吗?您知道有什么标准支持这种推理吗?有事实上的标准吗?有什么应用吗?
谢谢!
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!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
前提 - 请记住,基于 SQL 的1 DBMS 是一个(功能相当强大的)推理引擎,从 SQL 和 Prolog 之间的比较可以看出:
要专门解决您的时空应用程序,本书将提供帮助:
区间与关系理论在时态数据库管理问题中的应用。
也就是说,结合区间理论和关系理论可以有效地推理时空问题(参见5.2 区间的应用)。
当然,如果您的基于 SQL 的 DBMS 尚未配备间隔(和其他)运算符,您将需要对其进行适当扩展(通过存储过程和/或用户定义函数 - UDF )。
更新:浏览论文指出在 timemirror 的评论中(走向 3D 空间查询用于构建信息模型的语言)它们基本上完成了我上面提到的内容:
我不同意“对象关系数据库”术语(因为这里离题的原因),但我认为其余的都是相关的。
更新:引用上述书中有关 3D 和区间理论的内容:
注意
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:
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:
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
这就是空间推理...一些模型,但 9DE-IM 现已被 OGC 接受并在 PostGIS 和其他编程工具中实现。
PostGIS实现了基于维度扩展的9相交模型的空间推理引擎... 9DE-IM ..
http://postgis.refractions.net/documentation/manual-svn/ch04.html#DE-9IM
检查第 4.3.6.1 节。理论...
Java 拓扑套件(以及 C# 等的网络拓扑套件)也是如此...
http://docs.codehaus.org/display/GEOTDOC/Point+Set+Theory+and+the+DE-9IM+Matrix
特别检查出geometry.relate的东西..例如
boolean isRelated = Geometry.relate(geometry2,“T*T***T**”)
您可以测试关系,或根据它们过滤数据。
适用于点、线、多边形等...
这可能有助于处理时间问题。
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.87.4643&rep=rep1&type=pdf
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
查看 SpatialRules,网址为 http://www.objectfx.com/。它是一个适用于 2D 和 3D 的地理空间复杂事件处理器。
Check out SpatialRules at http://www.objectfx.com/. It's a geospatial complex event processor for 2D and 3D.