GraphDB: используйте поиск по сходству со встроенным репозиторием - PullRequest
0 голосов
/ 25 мая 2020

Я использовал поиск подобия GraphDB (версия 9.2) из ​​рабочей среды. Теперь я также хочу использовать эту функцию для встроенного репозитория с использованием graphdb-free-runtime 9.2.1. Однако я понятия не имею, как эту функцию можно использовать из API, предоставляемых средой выполнения. Мои вопросы:

  • В http://graphdb.ontotext.com/documentation/standard/semantic-similarity-searches.html упоминается, что поиск сходства - это плагин. Однако я не смог найти такой плагин во время выполнения. Должен ли я загружать его с какого-то внешнего ресурса? Где?
  • Есть ли документация или пример того, как программно создать индекс подобия?
  • Можно ли запустить рабочую среду как своего рода сервер и получить доступ к поиску подобия через REST API ? Однако документация REST API по адресу http://graphdb.ontotext.com/documentation/9.0/free/using-the-workbench-rest-api.html не упоминает какой-либо API для поиска сходства. Я что-то упустил?

Любые подсказки и указатели приветствуются.

1 Ответ

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

Вы можете добавить среду выполнения плагина подобия, установив следующее свойство "graphdb.extra.plugins" в директорию, в которой расположен плагин подобия (вы можете найти его в экземпляре GDB -> dist / lib / plugins), или:

  1. -Dgraphdb.extra.plugins = каталог
  2. System.setProperty ("graphdb.extra.plugins", "directory");

Вы можете создать индекс программно с использованием SPARQL или:

для создания индекса подобия текста «allNews» выполните следующее обновление:

PREFIX : <http://www.ontotext.com/graphdb/similarity/>
PREFIX inst: <http://www.ontotext.com/graphdb/similarity/instance/>
PREFIX pred: <http://www.ontotext.com/graphdb/similarity/psi/>
insert {
    inst:allNews :createIndex "-termweight idf" ;
        :analyzer "org.apache.lucene.analysis.en.EnglishAnalyzer" ;
        :documentID ?documentID .
        ?documentID :documentText ?documentText .
} where {
    SELECT ?documentID ?documentText {
        ?documentID ?p ?documentText .
        filter(isLiteral(?documentText))
    }
}

для удаления индекса «allNews» выполните следующее обновление:

PREFIX :<http://www.ontotext.com/graphdb/similarity/>
PREFIX inst:<http://www.ontotext.com/graphdb/similarity/instance/>

insert { inst:allNews :deleteIndex '' } where {}

чтобы перестроить индекс «allNews»:

PREFIX :<http://www.ontotext.com/graphdb/similarity/>
PREFIX inst:<http://www.ontotext.com/graphdb/similarity/instance/>

insert { inst:allNews :rebuildIndex '' } where {}

с последующим запросом на создание!

чтобы вывести список всех созданных индексов, выполните следующий запрос:

PREFIX :<http://www.ontotext.com/graphdb/similarity/>
PREFIX inst:<http://www.ontotext.com/graphdb/similarity/instance/>

select ?index ?status ?type
where {
  ?index :status ?status .
  ?index :type ?type .
}
...