2017-10-24 6 views
2

Ich bin sehr neu auf GRAKN.AI und ich frage mich, ob in einem Diagramm GRAKN ich eine "Entität" erstellen kann, die durch eine "Entität" zusammengesetzt ist. Ich weiß, ich kann den folgenden Code tun:Grakn, erstellen Entität von Entität komponiert?

table sub entity 
    has book; 

book sub resources datatype string; 

Aber kann ich das „Buch“ als Einheit auf den „Tisch“ beziehen ??

Ich brauche "Buch" als ein komplexes Konzept und nicht als eine einfache Ressource.

Danke,

Davide.

+0

Können Sie bitte angeben, was Sie unter "Buch als komplexes Konzept" verstehen? Was versuchst du zu erreichen? Möchten Sie, dass das Buch als eine Art Tisch zurückgegeben wird oder möchten Sie, dass das Buch Teil der Tabelle ist oder möchten Sie, dass Tabellen und Bücher in einer anderen Beziehung stehen? – MiKo

Antwort

3

Eine alternative Lösung besteht darin, eine Beziehung durchzugehen, die es erlaubt, die Dinge genauer zu definieren. Beispiel:

Um eine Beziehung zu definieren, beginnen Sie mit der Definition von Rollen, die einen Kontext für die Beziehung zwischen den Dingen bereitstellen. Zum Beispiel:

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

Sie dann sagen, wie diese Rollen auf die Beziehung verknüpfen und zu den Einheiten:

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; 

Die oben so ziemlich das Schema Ihrer einfachen Wissensbasis ist.

Jetzt können wir einige Daten hinzufügen. Nehmen wir an, ein Buch steht auf einer Tabelle:

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

Natürlich können Sie die Dinge von hier aus erweitern. Zum Beispiel können Sie Ihrem Buch über eine Ressource einen Titel geben.

Side Hinweis: Ressourcen Vs Entities

Die Faustregel für etwas als Ressource oder als ein anderes Unternehmen zugeordnet ist hängt davon ab, wie viele Informationen Sie im Modell zum Ausdruck bringen wollen und auch, wenn etwas sein kann, definiert durch ein Datenliteral (zB String, Int, Long, etc.)

Zum Beispiel ist ein Buch eine Entität, weil es aus mehreren Ressourcen besteht, die zur Identifizierung des Buches beitragen. I.e. der Titel, isbn usw. . Diese Ressourcen sind dagegen einfache Datenwerte. Ein Titel ist nichts anderes als eine Zeichenkette, also gibt es keinen Grund, den Titel zu einer Entität zu machen, das sollte nur eine Ressource sein.

+0

Schöne Weise, die Beziehungen zu benennen. Viel besser als 'gehört' – Samuel

3

Sie couold Modell zwei enites book und table und haben eine Beziehung, die Sie so etwas wie belongs nennen und fügen Sie die Rollen, die Sie benötigen, z. book-role und

Wenn die Konzepte hierarchisch verwandt sind, können Sie Vererbung verwenden.

table sub entity 
    has some property 

book sub table 
    has additional property 

Vererbung ist sehr nützlich für die Klassifizierung kann man leicht verstehen, dass zwei Untereinheiten verbunden sind und beide können durch Abfrage der Mutter abgerufen werden.

match $t isa table; 

würde die Bücher zurückgeben, da sie untergeordnete Entitäten der Tabelle sind.

Verwandte Themen