Как правильно проверить RDF с помощью Shex, когда часть IRI находится в Triple Store? - PullRequest
0 голосов
/ 20 апреля 2020

Скажите, что я хочу подтвердить вставку рекламной акции компании в тройной магазин с помощью Shex. Возможный подход заключается в кодировании Шекса следующим образом:

:Promotion {
   my-onto:has_person @:Person ;
   my-onto:grants_role @:Role ;
}

:Person {
   a [ foaf:Person ] ;
}

:Role {
   a [ my-onto:CompanyRole ] ;
}

Это упрощение. Проблема состоит в том, что при вставке данных тройка будет иметь вид:

:promotion-123 my-onto:has_person :person-456 ;
               my-onto:grants_role :role-CTO .

, и этот график не пройдет проверку Шекса, поскольку в нем отсутствуют все a тройки.

Так для определения и документирования того, что правильно в качестве IRI в двух отношениях, имеет смысл иметь фигуры, но в 90% всех сценариев реального мира ios данные будут поступать, как в примере выше, без связи типа (в этом примере) и, следовательно, не сможет проверить.

Какой будет правильный способ документирования сложных и вложенных фигур для проверки RDF, но в то же время «отключит» некоторые проверки определенных точек на графике?

Вариант использования, о котором я думаю, - это когда мне нужно добавить дополнительную информацию к «существующим» фигурам, используя IRI, такие как owl:NamedIndividuals, или константы в онтологии, уже существующие сущности, такие как Persons, companies и т. Д. c.

1 Ответ

0 голосов
/ 05 мая 2020

Вы имеете в виду, что вы вставляете данные без объявлений rdf:type (a), и система добавляет эти объявления с помощью некоторой системы рассуждений.

ShEx не вмешивается в системы рассуждений и не обрабатывает объявления rdf:type каким-либо особым образом. Таким образом, может быть несколько подходов для этого варианта использования.

Один из подходов заключается в добавлении вопросительного знака к объявлению rdf:type в виде:

:Promotion {
   my-onto:has_person @:Person ;
   my-onto:grants_role @:Role ;
}

:Person {
   a [ foaf:Person ] ? ;
}

:Role {
   a [ my-onto:CompanyRole ] ? ;
}

, в котором говорится, что :Person может не иметь либо декларации rdf:type, либо если у него есть объявление rdf:type, тогда оно должно содержать единственное значение foaf:Person.

Другой подход может состоять в том, чтобы иметь две фигуры: одну перед рассуждением для проверки входных данных и другую после вставки данных для проверки правильное поведение процесса вставки.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...