本文详细介绍了将一个比较大的rdf文件装载到virtuoso数据库的过程。参考virtuoso网站的文档说明,通过实践,将一个大约4.6G左右的nt文件装载到virtuoso数据库中,用了大概6个多小时。参考网站:http://vos.openlinksw.com/owiki/wiki/VOS/VirtBulkRDFLoader

以下是具体的步骤。

一 准备条件

1 virtuoso的版本要求。Open source version 6.1.3以上或者commercial version 06.02.3129以上,这些版本有大文件装载函数(方法)。

2 在virtuoso.ini中设置参数”DirsAllowed”,设置完成后需要重新启动virtuoso。

参考:http://docs.openlinksw.com/virtuoso/dbadm/

参数设置的格式如下:

DirsAllowed = <path> [, <path>]

DirsDenied = <path> [, <path>]

<path> := <absolute_path> or <relative_path>

可以用下面的命令查看,在cmd中,进入bin目录,然后运行isql,可以进入sql命令模式。

  1. SQL> select server_root (), virtuoso_ini_path ();

上面的命令可以查看服务器的工作目录和ini文件名称。

用以下命令查看DirsAllowed参数的情况

  1. SQL> select cfg_item_value (virtuoso_ini_path (), 'Parameters',
  1. 'DirsAllowed');

这一步,我没有设置DirsAllowed,通过命令可以查看到vad目录。

3 合理配置virtuoso.ini,保证有足够的内存和其他系统资源。

参考:http://vos.openlinksw.com/owiki/wiki/VOS/VirtRDFPerformanceTuning

主要设置两个参数,NumberOfBuffers 和 MaxDirtyBuffers。不同的系统内存对应设置不同的参数值。

如下表所示:

System RAM

NumberOfBuffers?

MaxDirtyBuffers?

2 GB

170000

130000

4 GB

340000

250000

8 GB

680000

500000

16 GB

1360000

1000000

32 GB

2720000

2000000

48 GB

4000000

3000000

64 GB

5450000

4000000

比如,我的系统是16G内存,就需要把对应的NumberOfBuffers设置为1360000, MaxDirtyBuffers设置为1000000。

4 文件格式要求。

Virtuoso只支持一下格式。

.grdf

Geospatial RDF

.nq

N-Quads

.nt

N-Triples

.owl

OWL

.rdf

RDF/XML

.trig

TriG

.ttl

Turtle

.xml

RDF/XML

二 大文件加载的过程

1 准备三个文件,放到vad目录(也就是DirsAllowed的目录)。一个是数据源文件,比如my_data.nt,一个是对应的图文件,和数据源文件的名称相同后面加.graph。比如my_data.nt.graph。一个是公共的图文件,用来处理那些没有对应的图文件的数据源文件,名称为global.graph。

标准格式:

  1. <source-file>.<ext>
  1. <source-file>.<ext>.graph
  1. global.graph

举例:

  1. myfile.n3          ;; RDF data
  1. myfile.n3.graph    ;; Contains Graph IRI name into which RDF data from myfile.n3 will be loaded
  1. global.graph       ;; Contains Graph IRI name into which RDF data from any files that do not have a specific graph name file will be loaded

2 把图的标识名(the graph IRI)写到*.graph中。比如,图的标识名为:http://dbpedia.org,把http://dbpedia.org写到*.graph中。

3 注册要加载的文件。使用isql,进入到SQL命令中,运行合适的方法。比如

  1. SQL> ld_dir ('/path/to/files', '*.n3', 'http://dbpedia.org');

ld_dir() 里面的目录不包括子目录。ld_dir_all() 命令包括所有的子目录。

4 用DB.DBA.load_list来查看注册的数据集装载情况和图标识名正在加载还是已经加载。ll_state字段有三个值:0表示数据集还没有加载;1表示数据集正在加载中;2表示数据集已经加载完成。如下所示

  1. SQL> select * from DB.DBA.load_list;
  1. ll_file               ll_graph        ll_state    ll_started              ll_done                 ll_host    ll_work_time    ll_error
  1. VARCHAR NOT NULL      VARCHAR         INTEGER     TIMESTAMP               TIMESTAMP               INTEGER    INTEGER         VARCHAR
  1. _____________________________________________________________________________________________________________________________
  1. ./dump/d1/file1.n3    http://file1    2           2010.10.20 9:21.18 0    2010.10.20 9:21.18 0    0          NULL            NULL
  1. ./dump/d2/file2.n3    http://file2    2           2010.10.20 9:21.18 0    2010.10.20 9:21.18 0    0          NULL            NULL
  1. ./dump/file.n3        http://file     2           2010.10.20 9:21.18 0    2010.10.20 9:21.18 0    0          NULL            NULL
  1.  
  1. 3 Rows. -- 1 msec.
  1. SQL>

5 最后,通过rdf_loader_run()命令完成大文件数据的加载。

命令如下:

  1. SQL> rdf_loader_run();

该命令执行后,如果文件比较大,会是一个漫长的等待过程,耐心等待,可以先不管他,做其他的工作去吧。

漫长等待之后,如果装载成功,会有一个花费时间的显示。

如果查看导入情况,可以另外打开一个cmd,然后进入isql,键入select * from DB.DBA.load_list;,可以查看导入正在进行(ll_state值为1),还是导入完成(ll_state值为2)。

通过以上操作,就可以完成数据的加载。

导入完成之后,需要清理一下load_list,否则下次装载其他文件时,load_list里面的文件还会导入。清理命令是delete from db.dba.load_list;。

virtuoso装载大的rdf文件的方法的更多相关文章

  1. Sqlserver2005日志文件太大,使其减小的方法

    Sqlserver2005日志文件太大,使其减小的方法: 运行下面的三行 dbName为数据库名: backup log dbNamewith NO_LOG backup log dbNamewith ...

  2. 【原创】使用Nmon_Analyzer处理较大nmon文件的方法

    1 编写目的 进行性能测试时,测试服务器使用的操作系统是Linux或Unix时,我们一般会使用Nmon工具进行操作系统资源监控数据的收集.Nmon工具是一款非常优秀的性能监控和分析工具,它能够实时地收 ...

  3. 关于小米手机USB传输稍大点的文件老中断的问题解决方法!

    关于小米手机USB传输稍大点的文件老中断的问题解决方法! 这是一个很痛苦的事情,当你传输大文件的时候,传输到一半就会莫名其妙的中断,拔插数据线很多次以后,好不容易没准可以成功传输一次. 后来使用了36 ...

  4. 使用dd命令快速生成大文件或者小文件的方法

    使用dd命令快速生成大文件或者小文件的方法     转载请说明出处:http://blog.csdn.net/cywosp/article/details/9674757     在程序的测试中有些场 ...

  5. Linux培训教程 linux系统下分割大文件的方法

    在linux中分割大文件,比如一个5gb日志文件,需要把它分成多个小文件,分割后以利于普通的文本编辑器读取. 有时,需要传输20gb的大文件,Linux培训 教程件到另一台服务器,也需要把它分割成多个 ...

  6. php中读取大文件实现方法详解

    php中读取大文件实现方法详解 来源:   时间:2013-09-05 19:27:01   阅读数:6186 分享到:0 [导读] 本文章来给各位同学介绍php中读取大文件实现方法详解吧,有需要了解 ...

  7. Javascript写入txt和读取txt文件的方法

    文章主要介绍了Javascript写入txt和读取txt文件的方法,需要的朋友可以参考下1. 写入 FileSystemObject可以将文件翻译成文件流. 第一步: 例: 复制代码 代码如下: Va ...

  8. java读写Properties属性文件公用方法

    Java中有个比较重要的类Properties(Java.util.Properties),主要用于读取Java的配置文件. 它提供了几个主要的方法: 1. getProperty ( String ...

  9. iOS之在webView中引入本地html,image,js,css文件的方法 - sky//////////////////////////////////////ZZZZZZZZZZZZZZZ

    iOS之在webView中引入本地html,image,js,css文件的方法   2014-12-08 20:00:16CSDN-sky_2016-点击数:10292     项目需求 最近开发的项 ...

随机推荐

  1. iOS学习——UI相关小结

    1     StoryBoard: 在Info.plist中可以查看Main storyboard,即入口storyboard,默认为main.storyboard,可以修改为自己创建的storybo ...

  2. chrome console的使用 : 异常和错误的处理 – Break易站

    本文内容来自:chrome console的使用 : 异常和错误的处理 – Break易站 利用 Chrome DevTools 提供的工具,您可以修复引发异常的网页和在 JavaScript 中调试 ...

  3. 安卓电量优化之WakeLock锁机制全面解析

    版权声明:本文出自汪磊的博客,转载请务必注明出处. 一.WakeLock概述 wakelock是一种锁的机制,只要有应用拿着这个锁,CPU就无法进入休眠状态,一直处于工作状态.比如,手机屏幕在屏幕关闭 ...

  4. mysql启动日志文件log_bin

    今天正在无所事事的时候,突然收到需要我打开mysql的log_bin,当时我就懵逼了...不多说别的,我连这个log_bin在哪里,怎么知道是否启动了都不知道,怎么去做? 在万分纠结下,查询了很多资料 ...

  5. java中碰到无法解决的问题:无法访问类的getter访问器

    大牛们来看看,俺这是咋了?因博问不让发图,发到这里求助: 以上两个方法都是从mysql中select数据,为嘛第二个出现辣鸡报错? 请注意: reslist.size() = 289 第二种方法已经获 ...

  6. python 学习源码练习(2)——简单文件读取

    #文件创建 #!/usr/bin/python3 'makeTextFile.py--create text file' import os ls = os.linesep #get filename ...

  7. TLD算法概述--学习理解之(一)

    liuyihai@126.com http://www.cnblogs.com/liuyihai/ TLD(Tracking-Learning-Detection)是英国萨里大学的一个捷克籍博士生Zd ...

  8. java中注解的使用

    使用过ssh框架的人一定也使用过注解,尤其是在spring框架中,注解可谓是spring容器和AOP编程的重要环节.注解就是用于修饰类.全局变量.方法.参数或局部变量的接口,java中规定,注解的使用 ...

  9. [小程序开发] 微信小程序audio音频播放组件+api_wx.createAudioContext

    引言: audio是微信小程序中的音频组件,可以轻松实现小程序中播放/停止音频等自定义动作. 附上微信小程序audio组件的相关属性说明:https://mp.weixin.qq.com/debug/ ...

  10. 【转】.NET IL实现对象深拷贝

    对于深拷贝,通常的方法是将对象进行序列化,然后再反序化成为另一个对象.例如在stackoverflow上有这样的解决办法:https://stackoverflow.com/questions/785 ...