GraphDB:使用嵌入式存储库的相似性搜索
GraphDB: use similarity search with embedded repository
我一直在使用来自 workbench 的 GraphDB(9.2 版)相似性搜索。现在我还想使用 graphdb-free-运行time 9.2.1 将此功能用于嵌入式存储库。但是,我不知道如何从 运行 时间提供的 API 中使用此功能。我的问题是:
- 在http://graphdb.ontotext.com/documentation/standard/semantic-similarity-searches.html中提到相似度搜索是一个插件。但是我在 运行 时间内找不到任何这样的插件。我必须从一些外部资源加载它吗?在哪里?
- 是否有任何文档或示例如何以编程方式创建相似性索引?
- 是否可以选择 运行 workbench 作为某种服务器并通过 REST API 访问相似性搜索?但是 http://graphdb.ontotext.com/documentation/9.0/free/using-the-workbench-rest-api.html 的 REST API 文档没有提及任何 API 的相似性搜索。我错过了什么吗?
欢迎任何提示或指点。
您可以添加相似性插件运行时,按照 "graphdb.extra.plugins" 属性 设置到相似性插件(您可以在 GDB 实例中找到这样的目录 -> dist/lib/plugins)所在的目录,或者:
- -Dgraphdb.extra.plugins=目录
- 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 .
}
我一直在使用来自 workbench 的 GraphDB(9.2 版)相似性搜索。现在我还想使用 graphdb-free-运行time 9.2.1 将此功能用于嵌入式存储库。但是,我不知道如何从 运行 时间提供的 API 中使用此功能。我的问题是:
- 在http://graphdb.ontotext.com/documentation/standard/semantic-similarity-searches.html中提到相似度搜索是一个插件。但是我在 运行 时间内找不到任何这样的插件。我必须从一些外部资源加载它吗?在哪里?
- 是否有任何文档或示例如何以编程方式创建相似性索引?
- 是否可以选择 运行 workbench 作为某种服务器并通过 REST API 访问相似性搜索?但是 http://graphdb.ontotext.com/documentation/9.0/free/using-the-workbench-rest-api.html 的 REST API 文档没有提及任何 API 的相似性搜索。我错过了什么吗?
欢迎任何提示或指点。
您可以添加相似性插件运行时,按照 "graphdb.extra.plugins" 属性 设置到相似性插件(您可以在 GDB 实例中找到这样的目录 -> dist/lib/plugins)所在的目录,或者:
- -Dgraphdb.extra.plugins=目录
- 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 .
}