【问题标题】:Grakn, create entity composed by entity?Grakn,创建由实体组成的实体?
【发布时间】:2017-10-24 08:44:36
【问题描述】:

我是 GRAKN.AI 的新手,我想知道是否可以在 GRAKN 的图表中创建一个由“实体”组成的“实体”。我知道我可以执行以下代码:

table sub entity
   has book;

book sub resources datatype string;

但是我可以将“书”作为一个实体与“表格”联系起来吗?

我需要将“书”作为一个复杂的概念,而不是一个简单的资源。

谢谢,

大卫。

【问题讨论】:

  • 您能否具体说明“将书作为一个复杂的概念”是什么意思?你想达到什么目的?您希望将书本作为一种表格返回,还是希望书本成为表格的一部分,或者您希望表格和书本之间存在某种其他关系?

标签: graph entity artificial-intelligence vaticle-typeql vaticle-typedb


【解决方案1】:

另一种解决方案是通过允许您更明确地定义事物的关系。例如,

要定义关系,您首先要定义角色,这些角色为事物之间的关系提供上下文。例如:

insert
    thing-on-top-of-table sub role;
    table-with-thing-on-top sub role;

然后你说这些角色如何链接到关系和实体:

insert    
    sits-on sub relation 
        relates thing-on-top-of-table
        relates table-with-thing-on-top;
    table plays table-with-thing-on-top;
    book plays thing-on-top-of-table;

以上几乎是您的简单知识库的架构。

现在我们可以添加一些数据。假设某本书在某张桌子上:

insert 
    $book isa book;
    $table isa table;
    (thing-on-top-of-table: $book, table-with-thing-on-top: $table) isa sits-on

当然,您可以从这里扩展内容。例如,您可以通过资源为您的书命名。

旁注:资源与实体

将某些东西作为资源或另一个实体关联的基本经验法则取决于您想在模型中表达多少信息,以及是否可以通过数据文字(例如 String、Int、Long、等等……)。

例如,一本书是一个实体,因为它由有助于识别该书的多种资源组成。 IE。标题、isbn 等。 .另一方面,这些资源是简单的数据值。标题只不过是一个字符串,因此没有理由将标题设为实体,作为资源应该没问题。

【讨论】:

  • 命名关系的好方法。比belongs 好多了
【解决方案2】:

您可以对两个实体 booktable 进行建模,并建立一个可以称为 belongs 之类的关系并添加您需要的角色,例如book-roletable-role

如果概念是层次相关的,您可以使用继承。

table sub entity
  has some property

book sub table
  has additional property

继承对于分类很有用,您可以很容易地理解两个子实体是相关的,并且都可以通过查询父实体来检索。

match $t isa table;

将返回书籍,因为它们是 table 的子实体。

【讨论】:

    猜你喜欢
    • 2013-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多