Гракн, создать сущность, составленную сущностью?
Я очень новичок в GRAKN.AI и мне интересно, смогу ли я создать в графе GRAKN "сущность", составленную из "enitity". Я знаю, что могу сделать следующий код:
table sub entity
has book;
book sub resources datatype string;
Но можно ли связать "книгу" как сущность с "таблицей"??
Мне нужно иметь "книгу" как сложную концепцию, а не как простой ресурс.
Спасибо,
Давида.
2 ответа
Альтернативное решение состоит в том, чтобы пройти через отношения, которые позволяют вам определять вещи более явно. Например,
Чтобы определить отношения, вы начинаете с определения ролей, которые обеспечивают контекст для того, как вещи связаны друг с другом. Например:
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 и т. .)
Например, книга - это сущность, потому что она состоит из нескольких ресурсов, которые помогают идентифицировать книгу. Т.е. заголовок, исбн и тд., эти ресурсы, с другой стороны, являются простыми значениями данных. Заголовок - это не что иное, как строка, поэтому нет смысла делать заголовок сущностью, это должно быть просто ресурсом.
Вы колдуете модель двух людей book
а также table
и иметь отношение, которое вы могли бы назвать что-то вроде belongs
и добавьте нужные вам роли, например book-role
а также table-role
Если понятия иерархически связаны, вы можете использовать наследование.
table sub entity
has some property
book sub table
has additional property
Наследование полезно для классификации, вы можете легко понять, что две дочерние сущности связаны, и обе могут быть получены путем запроса родителя.
match $t isa table;
вернул бы книги, поскольку они являются дочерними объектами таблицы.