Skip to content
Victor Agroskin edited this page Mar 8, 2014 · 9 revisions

1. Инициирование поиска

В настоящее время вызов поиска из редактора – консольный. Чтобы импортировать внешние данные и создать по ним связный набор данных в трипл-сторе по какому либо паттерну необходимо выполнить команду вида:

builder.collect(type=patterns.<PatternName>.<PatternOptionName>, <role1> = ‘value1’, <role2> = ’value2’, …)

builder.collect вернет созданные элементы (при повторном импорте некоторые элементы могут не создаваться, т.к. возможно они уже есть в трипл-сторе программы, это нормально).

2. Выполнение поиска

Поиск выполняется функциями, вызываемыми при указании паттерна.

Функции для паттернов регистрируются с декоратором public, например:

@public('collectors.<PatternName>')

def func(roles_in, pattern_name):

<тут размещается код, реализующий запросы к внешней БД, разбор ответов и генерацию уникальных ID>

return [roles_out1, roles_out2…]

Можно также зарегистрировать функцию декоратором @public('collectors’), такая функция будет вызываться при попытке импортировать данные по любому паттерну, распознать который внутри функции можно будет по аргументу pattern_name.

Аргумент roles_in – словарь, он содержит входящие условия для ролей, по которым возможен поиск во внешней базе данных при отправке туда запроса. На данном этапе это будут строки.

Возвращаемое функцией значение – список со словарями сформированных пар роль-значение для паттерна. Каждый словарь содержит набор ролей паттерна роль : значение где значение извлечено из базы или является сгенерированным по установленным правилам уникальным ID.

Можно также возвращать словари с ролями через yield.

Если роли, переданные при вызове через словарь roles_in, не поменены в функции, они будут отданы обратно билдеру паттернов в исходном виде

3. Создание данных

Билдер паттернов получает ответ от кода доступа к API и и пишет RDF в соответствии с паттерном по обычным правилам, используя полученные уникальные ID как фрагменты в неймспейсе для новых элементов того источника данных, куда идёт импорт.

Билдер паттернов проверяет уникальность первой описанной в паттерне части каждого элемента. Если полученные для этой части данные совпадают с уже имеющимися в источнике (записанными ранее) - данный элемент в RDF повторно не создаётся.

Данные, переданные в последующие части паттерна, относящиеся к тому же элементу - замещают аналогичные RDF данные, если они уже были созданы ранее.

Билдер паттернов обрабатывает неполные возвращённые словари по обычным правилам генерации недостаточно наполненного паттерна.

Clone this wiki locally