2017-10-24 3 views
2

私はGRAKN.AIで非常に新しく、GRAKNのグラフで "エンティティ"で構成された "エンティティ"を作成できるのだろうかと思います。Graknは、エンティティによって作成されたエンティティを作成しますか?

table sub entity 
    has book; 

book sub resources datatype string; 

しかし、私は、「表」に実体として「ブック」を関連付けることができます??:私は、私は次のコードを実行することができます知っています

「ブック」は複雑な概念であり、単純なリソースではなく、

おかげで、

ダヴィデ。

+0

"複雑な概念として本を持っている"という意味を指定してください。あなたが達成しようとしていることは何ですか?あなたは本が一種のテーブルとして返されるようにしたいのですか、あるいは本をテーブルの一部にしたいのですか、あるいはテーブルと本を他の種類の関係にしたいですか? – MiKo

答えて

3

代わりの解決法は、物事をより明示的に定義できる関係を辿ることです。たとえば、

関係を定義するには、相互の関係のコンテキストを提供する役割を定義することから始めます。たとえば:

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など)によって定義されます。

たとえば、書籍は、書籍の識別に役立つ複数のリソースで構成されているため、エンティティです。私。タイトル、isbnなど。 。一方、それらのリソースは単純なデータ値です。タイトルは文字列に過ぎないので、タイトルをエンティティにする理由はありません。単なるリソースとしては問題ありません。

+0

関係に名前を付けるいい方法。 「所属」よりも良い方法 – Samuel

3

あなたはモデル2 entites booktableをcouold、あなたはbelongsのようなものを呼び出すと、あなたは、例えば必要な役割を追加できることが関係を持っていますbook-roleおよびtable-role

概念が階層的に関連している場合、継承を使用できます。

table sub entity 
    has some property 

book sub table 
    has additional property 

継承は、2つのサブエンティティが関連しており、両方を親に照会することで検索できることを容易に理解することができます。

match $t isa table; 

は、テーブルの子エンティティとして本を返します。

関連する問題