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

标签 semantic-web reasoning allegrograph

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

<newsid1  hasAnnotation  Gamma>
<newsid1  hasAnnotation Beta>

我想在这句话上定义一个规则:如果主题 newsid1 hasAnnotation要么 GammaBeta ,然后在三元组中添加一个新语句,说明主题 hasAnnotation Theta ,即声明
<newsid1  hasAnnotation Theta>

我的问题如下:
  • 我如何为 Allegro 定义这样的规则?
  • 我如何将这些规则应用于语句?
  • 最佳答案

    1) 您可以定义用途 Prolog functors来定义这些规则。在您的情况下,您将定义。

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

    您可以阅读以下文档以了解此代码:
  • Prolog functors
  • Lisp Reference
  • 关于semantic-web - 定义 AllegroGraph 三元组的规则以及如何应用它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8924654/

    相关文章:

    sparql - 如何在 SPARQL 查询(联合)中引用不同的存储库?

    facebook - Facebook 中的 friend 的 friend (FOAF) 支持

    webserver - 公开暴露 sparql 端点?

    graphql - GraphQL 和 SPARQL 有什么区别?

    java - 来自 Apache Jena 框架的推理示例的问题

    jena - 在 Jena Framework 中使用 Pellet 对 SWRL 规则进行推理

    url - 为什么单个维基数据概念有多个 URL?

    java - 通过 Jena 启用 SPARQL 请求的推理?

    java - 使用 AllegroGraph RDF 存储进行对象到三元组映射?

    rdf - RDF读取/解析错误