Allegrograph地理空间Prolog查询

时间:2012-05-14 18:21:29

标签: prolog geospatial semantic-web allegrograph

我有一些代表几个城市位置的三元组。我希望能够启动像

这样的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(我认为它是内置的,因为它们使用它here。这不是正确的吗?)在Prolog中查询,因为这对我来说是一个谜,我没有找到任何好的例子来做这件事。

我正在使用Python API,BTW,在Python API tutorial中,他们使用getStatements方法检索某个半径范围内的三元组。我希望能够在Prolog查询中做这种事情,并且从Python API,而不是AllegroCL - 我想构建Web应用程序,我不知道如何在AllegroCL中做到这一点,但我知道如何用Python。

1 个答案:

答案 0 :(得分:1)

无法从Python API进行地理空间Prolog查询。您必须使用Allegro Common Lisp IDE来执行此操作。

编辑:不是这样!

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

这是一个Prolog规则,它使用AllegroGraph 4.6从Python API开始:

(<-- (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))))

特别感谢Franz Allegro支持帮助我的人们!