jena - Jena TDB2 汇编器从文件加载数据
问题描述
大家好,我正在尝试使用 TDB2 汇编器加载数据
@prefix cq: <http://www.example.co.uk/hya>
@prefix tdb: <http://jena.apache.org/2016/tdb#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix ja: <http://jena.hpl.hp.com/2005/11/Assembler#> .
@prefix text: <http://jena.apache.org/text#>
@prefix lm: <http://jena.hpl.hp.com/2004/08/location-mapping#>
@prefix dc: <http://purl.org/dc/elements/1.1/>
[] ja:loadClass "org.apache.jena.tdb2.TDB2" .
tdb:DatasetTDB2 rdfs:subClassOf ja:RDFDataset .
tdb:GraphTDB2 rdfs:subClassOf ja:Model .
<#dataset> rdf:type tdb:DatasetTDB2 ;
tdb:location "DB" ;
tdb:unionDefaultGraph true ;
.
<#data1> rdf:type tdb:GraphTDB ;
tdb:dataset <#dataset> ;
tdb:graphName <http://www.example.co.uk/hya/qdata> ;
ja:content [ja:externalContent <file:////Volumes/data/project/src/test/resources/metadata.ttl>;];
.
当我尝试组装数据集时,这不起作用
Dataset dataset = TDB2Factory.assembleDataset("/Volumes/data/project/src/main/resources/tdb/tdb-assembler.ttl");
if(dataset ==null) {
log.debug("failed");
}else {
1. Model model = dataset.getUnionModel();
2. Model model = dataset.getNamedModel("<dataset>");
3. Model model = dataset.getDefaultModel();
dataset.begin(ReadWrite.WRITE);
model.write(System.out, Lang.TTL.getName());
}
我试图以 3 种不同的方式打印模型,但没有成功。
有人可以建议解决此问题的最佳方法,以及是否有任何关于 TDB2 的参考文档。
理想情况下,我喜欢稍后配置它
:indexed-dataset
rdf:type text:TextDataset ;
text:dataset <#dataset> ;
text:index <#indexLuceneText> ;
.
# Text index description
<#indexLuceneText> a text:TextIndexLucene ;
text:directory <file:TDB/LUCENE> ;
text:entityMap <#entMap> ;
text:storeValues true ;
text:analyzer [ a text:StandardAnalyzer ] ;
text:queryAnalyzer [ a text:KeywordAnalyzer ] ;
text:queryParser text:AnalyzingQueryParser ;
text:multilingualSupport true ;
.
<#entMap> a text:EntityMap ;
根据汇编模式
“每个模型都可以有一些由 Content 对象指定的内容。”
ja:content a rdf:Property
; rdfs:label "Assembler.content"
; rdfs:comment
"""specifies that the subject Loadable is to be loaded with
all the contents specified by the object Content.
"""
; rdfs:domain ja:Loadable
; rdfs:range ja:Content
.
解决方案
持久性数据库(TDB1、TDB2)不进行处理ja:content
,因为这是每次将数据加载到内存模型中的指令。
相反,请事先使用 TDB 批量加载器加载数据。
对于文本 idnex,使用textindexer
命令加载索引。
推荐阅读
- java - 带有自定义类 Spring Boot Java 的 @Query 注释
- multithreading - webpack-dev-server 电子多线程
- firebase - 使用 gsutil 下载 FireStorage 文件
- php - 如何使用 PHP 将图像路径转换为 base64 编码数据
- javascript - 向正则表达式 javascript 添加异常
- java - 锚窗格中元素的顺序
- r - R:如何将对象传递给函数?
- c++ - 具有不可移动/可复制类型的 std::tuple
- angular - Angular 7 - 离开确认
- c++ - CMake:在 Windows 上使用 Boost v1.69 和 MSVC