GraphDB: используйте поиск по сходству со встроенным репозиторием

Я использовал поиск подобия 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 для поиска сходства. Я что-то упускаю?

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


person Martin    schedule 25.05.2020    source источник


Ответы (1)


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

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

Вы можете создать индекс программно, используя 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 .
}
person Sava Savov    schedule 28.05.2020
comment
Спасибо, это мне очень помогло! Как с поиском, так и с внедрением плагина, а также с формулировкой правильных запросов для использования плагина. - person Martin; 02.06.2020