Allegrograph地理空间Prolog的查询(Allegrograph Geospatial

2019-09-17 05:08发布

我有一些三元组,代表几个城市的位置。 我希望能够把火关Prolog的查询像

(select (?x ?y ?dist) 
(q- ?x !exns:geolocation ?locx)
(q- ?y !exns:geolocation ?locy)
(geo-distance ?locx ?locy ?dist))

但我得到这个错误:

Server returned 400: attempt to call '#:geo-distance/3' which is an undefined function.

我想了解如何使用地理空间推理方法,如geo-distance (我假定它是内置的,因为他们使用它在这里 。这是不是真的有关系吗?)在Prolog的查询,因为这是目前一个谜我,我还没有发现这样做有什么好处的例子。

我使用了Python API,顺便说一句,并在Python的API教程他们使用的getStatements方法在一定半径的圆内检索三倍。 我希望能够做这种事情在Prolog的查询,并从Python API,而不是从AllegroCL - 我倒是想构建Web应用程序,我不知道该怎么做,在AllegroCL,但我知道如何在Python。

Answer 1:

这是不可能的从Python API使地理空间Prolog的查询。 你必须用快板Common Lisp的IDE来做到这一点。

编辑:不是这样的!

随着AllegroGraph 4.6,你可以做到这一点! 问题是,我使用AllegroGraph 3.3,所以我是个白痴。

下面是使用AllegroGraph 4.6 Python API中工作的Prolog的规则:

(<-- (geo-distance ?point1 ?point2 ?dist)
      (lisp ?dist (let (lon1 lat1 lon2 lat2)
           (setf (values lon1 lat1) (upi->longitude-latitude ?point1))
           (setf (values lon2 lat2) (upi->longitude-latitude ?point2))
           (haversine-miles lon1 lat1 lon2 lat2))))

特别感谢弗兰兹快板支持的乡亲对我的帮助!



文章来源: Allegrograph Geospatial Prolog Queries