首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将Java对象映射到Prolog表示

将Java对象映射到Prolog表示
EN

Stack Overflow用户
提问于 2016-06-08 09:32:33
回答 1查看 118关注 0票数 0

在java中,我有一组相互连接的对象。让我们假设它们一起是一些模型,让我们这样称呼它。

我想根据某些规范(定义为一组条件)验证该模型。情况可能是这样的:

代码语言:javascript
运行
复制
forall child in parent.children
    child.name startswith "A"

可以有许多这样的条件,必须满足所有这些条件,这样才能说模型符合规范。所有的条件都是由变量和逻辑表达式组成的谓词,我想把它当作SAT问题的一个例子。

我不关心该解决方案的复杂性,我只想使用Prolog来执行寻找变量的适当替换(如果存在的话,这意味着模型符合规范)。

我正在寻找一种方法,如何轻松地创建Prolog知识库,该知识库将由表示创建模型的对象的语句组成。

你有什么值得推荐的吗?或者你可以提出解决这个问题的其他方法?

EN

回答 1

Stack Overflow用户

发布于 2016-06-11 08:08:28

也许JPL能帮你实现你的目标?

来自未完成的、包含错误的 文档

JPL是一个使用SWI外部接口和Java接口的库,提供了Java和Prolog之间的双向接口,可以用于在Java中嵌入Prolog以及在Prolog中嵌入Java。在这两个设置中,它都提供了一个可重入的双向接口。

在文档中,还提供了一个使用ContentPane获取呼叫/4的示例。

代码语言:javascript
运行
复制
jpl_call(F, getContentPane, [], CP),

查看jpl_call/4的文档,我们看到它的第一个参数可以是:

  • 类型、类对象或类名(用于表示类的静态方法,或用于java.lang.Class的静态或实例方法)
  • 类实例或数组(用于静态或实例方法)

如果只想从Java模型中获取信息,而不是执行逻辑,则可以使用得到/3检索值。下面是一个示例,我们将Prolog变量Colour绑定到example.class.car类的静态最终example.class.car字段中保存的Java对象字段的引用。

代码语言:javascript
运行
复制
jpl_get('example.class.car', colour, Colour)

更广泛地说:

代码语言:javascript
运行
复制
jpl_get(+Class_or_Object, +Field, -Datum)

反之亦然,JPL还提供了从Java内部访问Prolog的功能,提供了用于在两种语言之间相互执行逻辑的双向接口。

如果你正在寻找一个更具体的答案来模拟你的问题,它确实会-as评论@Boris-对我们来说要容易得多--我们会提供一些很小的例子来说明你到底想达到什么。

祝好运!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37698626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档