如何在Sesame中读取非标准RDF格式

如何在Sesame中读取非标准RDF格式,rdf,sesame,triples,n3,Rdf,Sesame,Triples,N3,将以下格式的N3 RDF文件加载到Sesame存储库时,是否可以将Sesame“|”作为分隔符 以下三元组之间用|分隔: http://article.com/1-3|http://relationship.com/wasGeneratedBy|http://edit.com/comment1-2 正如注释中所指出的:您使用的格式不是N3语法,因此您无法使用Sesame的N3解析器上载此格式。它也不是任何其他标准格式,因此没有可用于处理它的解析器 但是,以这种格式“手动”处理文件并将其添加到S

将以下格式的N3 RDF文件加载到Sesame存储库时,是否可以将Sesame“|”作为分隔符

以下三元组之间用|分隔:

http://article.com/1-3|http://relationship.com/wasGeneratedBy|http://edit.com/comment1-2

正如注释中所指出的:您使用的格式不是N3语法,因此您无法使用Sesame的N3解析器上载此格式。它也不是任何其他标准格式,因此没有可用于处理它的解析器

但是,以这种格式“手动”处理文件并将其添加到Sesame中是相当简单的。这可能会起到以下作用:

try(RepositoryConnection-conn=rep.getConnection()){
ValueFactory vf=conn.getValueFactory();
File File=新文件(“/path/to/weirdlyformattedrdffile.txt”);
//打开文件进行读取
try(BufferedReader br=new BufferedReader(new FileReader(file))){
弦线;
//启动交易
康涅狄格州贝京;
//逐行读取文件
而((line=br.readLine())!=null){
//每一行都是一个RDF三元组,包含主语、谓语和宾语
String[]triple=line.split(“|”);
IRI subject=vf.createIRI(三重[0]);
IRI谓词=vf.createIRI(三元组[1]);
IRI object=vf.createIRI(三元组[2]);
//将三元组添加到数据库中
连接添加(主语、谓语、宾语);
}                   
//读取所有行时提交txn
conn.commit();
}
}

当然,如果您的文件还包含IRIs以外的其他内容(例如文字或空白节点),则必须包含一些逻辑来区分这些内容,而不是盲目地为所有内容创建IRIs。但这是您为不使用标准语法格式而付出的代价

注释中也指出:您使用的格式不是N3语法,因此您无法使用Sesame的N3解析器上载此格式。它也不是任何其他标准格式,因此没有可用于处理它的解析器

但是,以这种格式“手动”处理文件并将其添加到Sesame中是相当简单的。这可能会起到以下作用:

try(RepositoryConnection-conn=rep.getConnection()){
ValueFactory vf=conn.getValueFactory();
File File=新文件(“/path/to/weirdlyformattedrdffile.txt”);
//打开文件进行读取
try(BufferedReader br=new BufferedReader(new FileReader(file))){
弦线;
//启动交易
康涅狄格州贝京;
//逐行读取文件
而((line=br.readLine())!=null){
//每一行都是一个RDF三元组,包含主语、谓语和宾语
String[]triple=line.split(“|”);
IRI subject=vf.createIRI(三重[0]);
IRI谓词=vf.createIRI(三元组[1]);
IRI object=vf.createIRI(三元组[2]);
//将三元组添加到数据库中
连接添加(主语、谓语、宾语);
}                   
//读取所有行时提交txn
conn.commit();
}
}

当然,如果您的文件还包含IRIs以外的其他内容(例如文字或空白节点),则必须包含一些逻辑来区分这些内容,而不是盲目地为所有内容创建IRIs。但这是您为不使用标准语法格式而付出的代价

对于N3来说,这应该是不可能的,因为N3不允许像那样使用不同的分离器。您拥有的不是N3文件。您可能只需要将文本预处理为文本,然后将其加载为您转换为的任何格式。注意,在你的例子中,即使你用空格替换|,它仍然不是N3;你需要用尖括号将这些虹膜包裹起来,并在三元组的末尾加上一个句号。对于N3来说,这应该是不可能的,因为N3不允许像那样使用不同的分隔符。您拥有的不是N3文件。您可能只需要将文本预处理为文本,然后将其加载为您转换为的任何格式。注意,在你的例子中,即使你用空格替换|,它仍然不是N3;你需要用尖括号将这些虹膜包裹起来,并在三元组的末尾添加一个句点。