再来看个完整的读写例子:
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import org.openrdf.model.Model;
import org.openrdf.model.URI;
import org.openrdf.model.util.ModelUtil;
import org.openrdf.model.vocabulary.RDFS;
import org.openrdf.rio.RDFFormat;
import org.openrdf.rio.RDFHandlerException;
import org.openrdf.rio.RDFParser;
import org.openrdf.rio.RDFWriter;
import org.openrdf.rio.Rio;
import org.openrdf.rio.UnsupportedRDFormatException;
import org.openrdf.rio.helpers.StatementCollector;
import org.openrdf.sail.memory.model.MemValueFactory;
public class Test {
static String NS = "http://www.steeven.org/rdf#";
public static void main(String[] args) throws Exception {
for (RDFFormat format : RDFFormat.values()) {
String file = "test." + format.getDefaultFileExtension();
testWrite(format, file);
testRead(format, file);
}
}
private static void testRead(RDFFormat format, String file)
throws Exception {
RDFParser parser = Rio.createParser(format, MemValueFactory
.getInstance());
StatementCollector sc = new StatementCollector();
parser.setRDFHandler(sc);
parser.parse(new FileInputStream(file), NS);
Model model = sc.getModel();
System.out.println(model.contains(createNS("steeven"), RDFS.LABEL, null));
System.out.println(model.filter(null, RDFS.LABEL, null));
System.out.println(model.filter(null, createNS("desc"), null));
System.out.println(model.filter(null, null, MemValueFactory
.getInstance().createLiteral("steeven li")));
System.out.println(ModelUtil.getUniqueObjectLiteral(model,
createNS("steeven"), RDFS.LABEL));
System.out.println(model.filter(createNS("steeven"), null, null).size());
}
private static URI createNS(String name) {
return MemValueFactory.getInstance().createURI(NS, name);
}
private static void testWrite(RDFFormat format, String file)
throws RDFHandlerException, UnsupportedRDFormatException,
FileNotFoundException {
// System.out.println("=======format: " + format + "========");
RDFWriter w = Rio.createWriter(format,
new FileOutputStream(file, false));
w.setBaseURI(NS);
w.handleNamespace("myns", NS);
w.handleNamespace("w3", RDFS.NAMESPACE);
w.startRDF();
w.handleComment("my first rdf file");
URI res = createNS("steeven");
w.handleStatement(MemValueFactory.getInstance().createStatement(res,
RDFS.LABEL,
MemValueFactory.getInstance().createLiteral("steeven li")));
w.handleStatement(MemValueFactory.getInstance().createStatement(res,
createNS("desc"),
MemValueFactory.getInstance().createLiteral("good blogger")));
w.endRDF();
System.out.println("\n");
}
}
输出如下:
true
[(http://www.steeven.org/rdf#steeven, http://www.w3.org/2000/01/rdf-schema#label, "steeven li")]
[(http://www.steeven.org/rdf#steeven, http://www.steeven.org/rdf#desc, "good blogger")]
[(http://www.steeven.org/rdf#steeven, http://www.w3.org/2000/01/rdf-schema#label, "steeven li")]
"steeven li"
2
RDFParser/RdfWriter主要针对流来操作. 而后面要介绍的sail则基于库的概念,可以查询.类似数据库的概念.
数据库的概念过于平面化.RDf的结构复杂些,能根据主谓宾中的任意元素组合查询/遍历. 其内置的索引机制负责加速查询. 开发过程中可以省去复杂的数据建模.
分享到:
相关推荐
《Sesame「芝麻」v3.6.5:Android平台上的高效通用搜索工具》 在移动设备领域,Android操作系统以其开放性和灵活性深受用户喜爱。而在这个生态系统中,各种应用程序不断涌现,为用户提供多样化的服务。其中,Sesame...
门锁Oursky物联网门锁系统。 系统架构: (使用GNU Dia绘制)硬件使用此绘制。 图表另存为txt文件,您可以在File > Import From Text导入下将其File > Import From Text 。 中继板: 连接方式: 释放按钮:GPIO0 /...
《 Sesame Store 测试套件2.7.0-Beta2与Sesame Rio扩展解析》 Sesame Store测试套件2.7.0-Beta2是一个关键组件,它是针对开源项目Sesame的全面测试平台。Sesame是一个强大的、可扩展的开放源代码框架,专门用于存储...
2. **解析与序列化**:它支持多种RDF格式,如 Turtle, N-Triples, RDF/XML, NTriples, N3, RDFa, JSON-LD 等,能够将数据在不同的格式之间转换。 3. **查询语言支持**:Sesame支持SPARQL查询语言,允许开发者以SQL...
标题中的"sesame-rio-datatypes-2.7.12.zip"暗示了这是一个与 Sesame 开源项目相关的数据类型库的版本。Sesame 是一个开放源代码的语义网框架,它提供了用于存储、处理和查询 RDF(Resource Description Framework)...
Sesame is a de-facto standard framework for processing RDF data. This includes parsing, storing, inferencing and querying of/over such data. It offers an easy-to-use API that can be connected to all ...
**Python库 | surf.sesame2-0.2.1_r280-py2.5.egg** 本文将深入探讨名为"surf.sesame2"的Python库,其版本为0.2.1,r280修订版,专为Python 2.5编译。这个库是一个强大的工具,用于后端开发,特别是在处理特定任务...
(非官方)芝麻 Docker 镜像Docker 容器用法要创建图像“openuniversity/sesame”,请在 docker-sesame 文件夹上执行以下命令: docker build -t openuniversity/sesame .(注意:不要忘记在上面的行中包含最后的 '....
### Cobar - 阿里巴巴 Open Sesame #### 一、产品约束 - **跨库操作限制**:不支持跨库的 join、分页、排序、子查询操作。 - **SET语句处理**:执行 SET 语句时,除了事务和字符集设置外,其他都将被忽略。 - **...
SeSAMe-甲基化数据的明智分步分析 SeSAMe是用于处理Infinium DNA甲基化数据的R包。 SeSAMe当前支持EPIC,HM450和HM27平台并动态生成清单。 要从github安装, BiocManager :: install( " sesame " ) # # or ...
2. **查询语言支持**:可能支持SQL或其他特定的查询语言,使用户能够根据需要检索和分析数据。 3. **数据模型**:Sesame 可能允许开发者定义复杂的数据结构和关系,适应不同类型的数据库模型,如关系型或非关系型...
比方说, “芝麻开门!” <<| | >>什么是新的? 您是否要接收新版本的通知? 在GitHub上支持我!描述然后,阿里·巴巴(Ali Baba)爬下,走进隐藏在灌木丛中的门,说道:“打开,芝麻!” 它飞开了。 该...
2. 优化性能:通过对网络请求的实时监控,我们可以识别性能瓶颈,进行针对性的优化。 3. 易于维护:通过详细的监控数据,我们可以更好地理解和调试代码,提高系统的可维护性。 4. 更好的容错能力:Jrugged 提供的...
芝麻 Sesame是用于Android开发的一组架构组件。 它基于包括协程和流程在内的现代技术。 芝麻简单易学且易于使用。 它非常适合MVVM和MVI体系结构。成分提供可观察的属性和一次性命令。 -允许从“视图模型”控制对话框...
芝麻开门 Open Sesame是一个CLI工具,用于将您的公共IP地址添加到AWS安全组的入站规则。 当您坐在动态IP后面(例如,您正在使用Wi-Fi加密狗)并且希望允许通过安全组访问某些AWS资源时,这非常方便。 安装 npm ...
然而,没有具体的库介绍,我们只能推测它可能是一个用于身份验证或会话管理的插件,因为“sesame”通常与“开门”的概念关联,这在Web应用中可能代表访问权限。 4. **Python 3**:`-py3-none-any`表明这个软件包是...
2. **Sesame**:Sesame 是一个开源的 RDF(Resource Description Framework)存储和查询引擎,用于处理语义网数据。RDF 是一种用于描述网络资源的标准模型,广泛应用于数据集成、知识管理系统和语义Web应用中。...
标题 "sesame-rio-turtle-2.7.8.zip" 暗示这是一个与 sesame 项目相关的软件发行版,具体是 Rio Turtle 模块的 2.7.8 版本。Sesame 是一个开源的语义网框架,主要用于处理、存储和查询 RDF(Resource Description ...
【标题】"sesame-http-workbench-2.7.8.zip" 涉及的是一个名为 "Sesame HTTP Workbench" 的工具,这是一款专为HTTP协议测试和调试而设计的应用程序。Sesame工作台允许用户发送HTTP请求,查看响应,并分析交互过程中...