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

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

В graql, например:

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

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

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

1 Ответ

0 голосов
/ 29 ноября 2018

Атрибуты атрибутов Атрибуты атрибутов не обязательно работают так, как вы могли ожидать.Важно помнить, что в 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;

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

Visualised in Grakn Workbase Visualiser

(визуализируется в Grakn Workbase Visualiser )

Атрибуты атрибутов имеют смысл в таких случаях, как: атрибут phrase значение Hi there!, владеющий атрибутом language значение English.То есть атрибут language относится к значению атрибута фразы.

Это означает, что если вы хотите записать источник атрибута, вам нужно что-то делатьпо-другому.Я предлагаю три возможных варианта.Обратите внимание, что для каждой из следующих трех идей population не должно владеть evidence по указанной причине.В приведенной выше схеме population sub attribute datatype string has evidence; должно стать population sub attribute datatype string;

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';

enter image description here

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

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;

Link to implicit relationships via normal relationships

3.Нормальные отношения

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

Заключение

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

...