- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在我的项目中使用 DBpedia。到目前为止,我一直在使用 SPARQL 客户端,但性能远不能接受(更不用说端点的频繁停机)。
所以我想加载可用的大 NT 文件 http://wiki.dbpedia.org/Downloads36在本地 dbms 中(我有一台带有 PostgreSQL 的服务器)。
在我的应用程序(基于 Java 和 Groovy)中,我打开了一个与 Jena 持久图的连接:
def jenaConnection = new DBConnection( ... )
def maker = ModelFactory.createModelRDBMaker( jenaConnection )
def globalModel = maker.openModel( "my_big_fat_model" )
这对于几千个三元组来说没问题,但是当我尝试使用阅读器加载大型 NT 文件时
RDFReader r = m.getReader( "N-TRIPLE")
r.read( inputStreamFromBigFile ... )
表现令人震惊。它每分钟加载大约 2-3K 个三元组,这意味着整个 DBpedia 数据集(数百万个三元组)可能需要几天才能加载。其他使用 JENA 处理大型数据集的人似乎没有这个问题。
我读到我应该将 TDB 用于大型数据集 (http://jena.apache.org/documentation/tdb/),但我不明白我应该用它做什么。
是跟RDB接口(interface)类似的概念还是什么?我需要在 PostgreSQL 数据库中加载 NT 吗?
JENA 文档在这一点上似乎不是很清楚。
最佳答案
如果你想坚持使用 PostgresQL 作为后端,你应该使用 SDB .与旧的数据库驱动程序相比,它是 Jena 模型关系存储的最新包装器。还有quickstart documentation开始使用 SDB。
TDB 是一种持久性存储,提供了使用关系数据库作为后端三重存储的替代方法。 TDB 在磁盘上构建自己的 b 树索引,并为您管理缓存。在其他方面,它在程序员看来就像一个普通的 Jena Model
。 TDB 具有有助于加载过程的命令行工具,尽管它们是 bash 脚本,因此需要 Linux 或 cygwin。要加载 dbpedia,这是我过去所做的:
$> tdbloader2 --loc ./tdb ./source/*.nt
./source
是我从 dpbedia 下载各种 .nt
文件的目录。在合理的机器上需要几个小时,但肯定不是几天。
在 ./tdb
中有了 TDB 图像后,只需按照 documentation在您的 Java 程序中加载 Model
:
String directory = "./tdb" ;
Model model = TDBFactory.createModel(directory) ;
...
model.close() ;
从那里开始,只需像通常使用任何 Jena 模型一样使用 model
。有一个警告:TDB 不提供任何并发支持。如果您的应用需要并发访问商店(具体来说,任何写入与一次或多次读取并发),您将需要在应用级别处理锁定。
关于postgresql - 如何将大型 nt/rdf 转储加载到 Jena/PostgreSQL 模型(TDB/RDB?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6075292/
所以我没有做很多 Win32 调用,但最近我不得不使用 GetFileTime()和 SetFileTime()功能。现在虽然我的程序没有正式支持 Win98 和更低版本,但人们仍然在那里使用它,我尽
我正在做一个应用程序虚拟化项目。所以我在 NT 级别挂接应用程序并将注册表调用定向到我的虚拟注册表。在运行任何应用程序时,如果我转到"file"->“打开”。我几乎没有像下面这样的注册表调用: ZwO
代码如下: 登陆时记录cookies页面代码 <!--#include file="md5.asp"--> //32位md5加密文件,一定得调用,该文
代码如下: <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%> <!--#include v
我想深入研究 ntdll!NtQueueApcThread,看看在执行系统调用指令后会发生什么。根据文档(Intel® 64 and IA-32 Architectures Software Deve
显然,EASEUS Partition Master程序可以显示图形之前 Windows GUI 启动(即,它在启动时运行 CheckDisk 的同时运行)。 什么我已经知道 : 这可能需要没有很好记
我正在查看 Windows API 的事件跟踪,根据文档和我运行的一些测试,似乎如果已经有内核记录器在运行,则 API 会发送 ERROR_ALREADY_EXISTS 调用 StartTrace 时
nt.stat_result 是什么类型的对象? nt.stat_result(st_mode=33206, st_ino=0L, st_dev=0, st_nlink=0, st_uid=0, st
我开发了中间件,为我们组织内多个平台上的多个客户端应用程序提供 RPC 功能。中间件是用 C# 编写的,并作为 Windows NT 服务运行。它处理诸如对网络共享的文件访问、数据库访问等事情。中间件
我正在尝试替换一些遗留的 DefineDosDevice 用户空间代码(由于提升的和正常的 session 由不同的 DosDevice 存储表示,因此在具有管理员用户的 Vista 上不起作用,因此
我目前正在尝试调试系统死锁,但我很难理解这一点。 Child-SP RetAddr : Args to Child
我想将设备路径转换为文件路径。 我想通过进程id获取进程名,所以我用的是这段代码 PsLookupProcessByProcessId(processId,&pEProcess); ObOpenObj
我已经为 Windows XP 开发了一个驱动程序,它能够监控进程的执行。 回调函数使用标准 WDK API (PsSetCreateProcessNotifyRoutine) 接收通知。 驱动程序然
我正在为我的笔记本电脑编写一个自定义触摸板驱动程序,因为它在 Windows 下的支持非常糟糕。我已经弄清楚了协议(protocol),我准备继续实现它,但我对如何去做有点困惑。它是一个多点触控触摸板
我需要知道如何从用户输入的文件中提取目录信息,以下面的代码为例: ECHO Drag and drop your .txt file here, after that press Enter: SET
我正在使用脚本创建 SQL Server 复制。当我尝试执行 作业失败。无法确定作业 L3BPT2M-Atlas-14 的所有者 (STAR\moorer7) 是否具有服务器访问权限(原因:无法获取有
你遇到过这种问题吗? 我试过: telnet localhost 3306 连接失败。 我可以在任务管理器中看到mysqld-nt.exe(我使用的是windows平台)。 所以我重启了服务器,就ok
我有一个名为 a 的数组,我想在数组 a 的每个 nt-h 元素之后插入一个元素。例如,我想将字符串 XXX 放在数组 a 的每个 3 元素之后,结果得到一个新数组 b 如下例所示: let a =
我的问题是:如果这个文件(非常重要)很小(不到一个簇,只有几个字节),怎么可能得到文件磁盘偏移量。 目前我使用这个 Windows API 函数: DeviceIOControl(FileHandle
在 Windows 本地网络上,我有一个 MySql 数据库、几个客户端应用程序(仅查询数据库)和一个定期填充数据库的 Windows NT 服务。我正在寻找存储数据库凭据的最佳方式,以便所有应用程序
我是一名优秀的程序员,十分优秀!