首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在lisp prolog查询中将字符串转换为资源或UPI

在lisp prolog查询中将字符串转换为资源或UPI
EN

Stack Overflow用户
提问于 2015-03-12 14:08:47
回答 1查看 104关注 0票数 1

我正在尝试运行用lisp实现的prolog规则。在lisp代码中,我遇到了以下问题:

  1. 我查询AG知识库中的人员,输出为字符串格式,如 "http://www.myweb.com/myns/Person1“"http://www.myweb.com/myns/Person2
  2. 我将上面的字符串转换为Resource,如下所示

(setq p1 (资源"http://www.myweb.com/myns/Person1"))

(setq p2 (资源"http://www.myweb.com/myns/Person2"))

将字符串转换为资源后,输出如下所示:

代码语言:javascript
运行
复制
!ns:Person1
!ns:Person2
  1. 我带着以上两个人(资源),通过查询运行规则,找出它们之间的关系。请注意,p1和p2是已知的,关系是未知变量。查询转到AG知识库并找到关系 (选择-不同 (p1 ?relation p2) (MyRulesfunction p1 ?relation p2) )

问题是,当查询在步骤2中使用select-distinct运行时。它不接受资源作为参数和抱怨UPI转换。我也尝试过用(value->upi)函数来转换成UPI,但是没有成功。

有人能帮帮我吗?我可以在p1和p2值中传递什么样的格式来查找关系。你的帮助将不胜感激。我的规则职能定义如下:;两个人居住在同一城市的规则

代码语言:javascript
运行
复制
  (<--(MyrulesFunction ?p1 !ns:SameCityWith ?p2) 

  (q ?p1 !ns:hasCity ?city)
    (q ?p2 !ns:hasCity ?city)
    )
EN

回答 1

Stack Overflow用户

发布于 2020-07-03 16:43:33

这应该可以做到:

代码语言:javascript
运行
复制
(select-distinct ?relation (MyRulesFunction (?? p1) ?relation (?? p2)))

“??”这里文档中描述了语法标记。我知道我的答案可能已经晚了5年,但希望有人能从中受益。

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

https://stackoverflow.com/questions/29012010

复制
相关文章

相似问题

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