定义 AllegroGraph 三元组的规则以及如何应用它们

发布于 2024-12-27 17:38:11 字数 493 浏览 0 评论 0原文

我正在使用 AllegroGraph 来存储这样的语句:

<newsid1  hasAnnotation  Gamma>
<newsid1  hasAnnotation Beta>

我想在这个语句上定义一个规则:if the subject newsid1 hasAnnotation either Gamma Beta然后在三元组中添加一条新语句,表示主题 hasAnnotation Theta,即语句

<newsid1  hasAnnotation Theta>

我的问题如下:

  1. 我如何为 Allegro 定义这样的规则?
  2. 我如何将这些规则应用于语句?

I'm using AllegroGraph to store statement like this:

<newsid1  hasAnnotation  Gamma>
<newsid1  hasAnnotation Beta>

I would like to define a rule on this staments that says: if the subject newsid1 hasAnnotation either Gamma or Beta, then add a new statement in the triplestore that says that the subject hasAnnotation Theta, i.e. the statement

<newsid1  hasAnnotation Theta>

My questions are the following:

  1. How I can define such a rule for Allegro?
  2. How can I apply these rules over the statements?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

半岛未凉 2025-01-03 17:38:11

1)您可以定义使用 Prolog 函子来定义这些规则。根据您的情况,您将定义。

;; Functors to add triples.
(<-- (a-- ?s ?p ?o)
;; Fails unless all parts ground.
(lispp (not (get-triple :s ?s :p ?p :o ?o)))
(lisp (add-triple ?s ?p ?o)))

;; Functors to seek news that should have theta annotation
(<-- (shouldHaveAnnotationTheta ?news)  
(q- ?news !namespace:hasAnnotation !"Gamma"))

(<- (shouldHaveAnnotationTheta ?news)  
(q- ?news !namespace:hasAnnotation !"Beta"))

2) 然后运行以下 prolog 查询(以 AGview 为例)来添加这些新闻语句

(select (?news)
(shouldHaveAnnotationTheta ?news)
(a-- ?news !namespace:hasAnnotation !"Theta")
(fail))

您可以阅读以下文档来理解此代码:

1) You can define use Prolog functors to define these rules. In your case you will define.

;; Functors to add triples.
(<-- (a-- ?s ?p ?o)
;; Fails unless all parts ground.
(lispp (not (get-triple :s ?s :p ?p :o ?o)))
(lisp (add-triple ?s ?p ?o)))

;; Functors to seek news that should have theta annotation
(<-- (shouldHaveAnnotationTheta ?news)  
(q- ?news !namespace:hasAnnotation !"Gamma"))

(<- (shouldHaveAnnotationTheta ?news)  
(q- ?news !namespace:hasAnnotation !"Beta"))

2) Run then the following prolog query (using the AGview for exemple) to add these news statements

(select (?news)
(shouldHaveAnnotationTheta ?news)
(a-- ?news !namespace:hasAnnotation !"Theta")
(fail))

You can read the following documents to understand this code :

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文