Как включить атрибуты / свойства цитирования в графы?

Я создаю модель для конкретного домена, которая включает в себя объекты, имеющие атрибуты, исходный источник или цитату которых необходимо определить.

В гракл например:

define "country" sub entity has population; "evidence" sub attribute datatype string; "population" sub attribute datatype string has evidence;

Кажется, что это определяет атрибут атрибута, и концептуально, кажется, делает значение атрибута зависимым от определенного контекста, который, возможно, лучше смоделировать как аннотированные "фактические" сущности со связями с другими сущностями.

Как проще всего моделировать такие атрибуты, не увеличивая сложность модели?

1 ответ

Решение

Атрибуты атрибутов Атрибуты атрибутов не обязательно работают так, как вы могли бы ожидать. Важно помнить, что в Grakn будет только один узел на графике для атрибута определенного типа с определенным значением.

То есть атрибут типа population значение sixty million произойдет только один раз в графе знаний.

Если мы слегка изменим вашу схему, добавив имена для стран (также нет необходимости в одинарных кавычках вокруг типов):

define
country sub entity
    has population,
    has name;
name sub attribute datatype string; 
    evidence sub attribute datatype string;
    population sub attribute datatype string
        has evidence;

Затем добавьте две страны к графу знаний:

insert $uk isa country, has name 'UK', has population $p; $p 'sixty million' has evidence 'journal';
insert $fr isa country, has name 'France', has population $p; $p 'sixty million' has evidence 'wikipedia';
commit;

Что мы можем увидеть, если визуализируем это, так это то, что мы не можем указать источник населения для каждой страны в отдельности, потому что обе страны и обе части доказательств связаны с одним и тем же экземпляром населения.

Визуализируется в визуализаторе Grakn Workbase

(Визуализируется в визуализаторе рабочей базы Grakn)

Атрибуты атрибутов имеют смысл в случае, подобном: атрибут phrase значение Hi there! владение атрибутом language значение English, Это language Атрибут ссылается на значение атрибута фразы.

Это означает, что если вы хотите записать источник атрибута, вам нужно действовать по-другому. Я предлагаю три варианта:

1. Неявные отношения Под капотом у Grakn есть неявные отношения для реализации владения атрибутами, всегда автоматически генерируемые с префиксом @has-, например @has-population, Мы можем прикрепить атрибуты к этим неявным отношениям!

Сначала удалите экземпляры, которые мы вставили выше (это удалит все сущности и атрибуты на графике, будьте осторожны!):

match $x isa entity; $y isa attribute; delete $x, $y;

Затем определите, что неявное population атрибут может владеть evidence и добавьте примеры:

define @has-population has evidence;

insert $uk isa country, has name 'UK', has population $p via $r; $p 'sixty million'; $r has evidence 'journal';
insert $fr isa country, has name 'France', has population $p via $r; $p 'sixty million'; $r has evidence 'wikipedia';

Теперь мы можем отрицать неоднозначность доказательств для населения Великобритании и свидетельств для населения Франции. Мы можем запросить это:

match $c isa country, has name $n, has population $p via $r; 
$p 'sixty million'; $r has evidence $e; get $n, $e;

Результат:

{$n val "France" isa name; $e val "wikipedia" isa evidence;}
{$n val "UK" isa name; $e val "journal" isa evidence;}

2. Отношения к неявным отношениям. Если свидетельство является более сложным, чем отдельный атрибут, то его можно лучше смоделировать как отношение, в котором @has-population играет роль.

define 
information-sourcing sub relationship, 
    relates sourced-information, 
    relates information-source;

@has-population plays sourced-information;

publication sub entity, 
    plays information-source;

insert $uk isa country, has name 'UK', has population $p via $r; $p 'sixty million'; $pub isa publication; $i(sourced-information: $r, information-source: $pub) isa information-sourcing;
insert $uk isa country, has name 'France', has population $p via $r; $p 'sixty million'; $pub isa publication; $i(sourced-information: $r, information-source: $pub) isa information-sourcing;

Связь с неявными отношениями через нормальные отношения

  1. Нормальные отношения Наконец, вы можете создать отношения, которые связывают population, country, а также evidence, что позволяет избежать использования неявных отношений, если они кажутся слишком сложными.

Заключение Какой метод использовать, зависит от домена, который вы моделируете. В ответ на ваш вопрос первый метод добавляет наименьшее количество дополнительных элементов в схему.

Другие вопросы по тегам