zoukankan      html  css  js  c++  java
  • 第三步 用Jena自定义完成数据库到RDF的映射

    第三步 用Jena自定义完成数据库到RDF的映射
    2013年10月17日 8:53:27
    这一步用Jena编程,终于能做点有技术含量的事情了。这个工作计划本周内完成,下周一好给老师一个交待。
    目标:把现有数据库(mysql)中的数据,自定义地映射成为RDF格式。
     
    1. 先写一小段代码,解决java执行脚本的问题
            String cmd = "sh /opt/D2RServer/d2rq-0.8.1/project/hello_java_shell";
            Runtime run = Runtime.getRuntime();
            String result = "";
            try {
                Process p = run.exec(cmd);
                BufferedInputStream in = new BufferedInputStream(p.getInputStream());
                BufferedReader br = new BufferedReader(new InputStreamReader(in));
                String lineStr;
                while ((lineStr = br.readLine()) != null) {
                    result += lineStr;
                }
                br.close();
                in.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
            System.out.println(result);
     
    2. 把上面代码中的cmd改为
            String cmd = "/opt/D2RServer/d2rq-0.8.1/generate-mapping -u root -p asdfasdf -d com.mysql.jdbc.Driver -o /opt/D2RServer/d2rq-0.8.1/aniuer.n3 jdbc:mysql://localhost/radar";
    即执行了generate-mapping命令,把数据库的内容映射为.n3的文件。
    2013年10月19日 16:17:15
    经过两天的纠结,困于n3文件无法存储到mysql中,原因是n3文件就是一个文本文件,不符合XML语法,所以一直没有起色。后来才发现D2RQ还有个工具叫dump,还是这个比较猛,能够把数据映射成为正经的rdf文件。所以上面的代码改为
            String cmd = "/opt/D2RServer/d2rq-0.8.1/dump-rdf -u root -p asdfasdf -f RDF/XML-ABBREV -o /opt/D2RServer/d2rq-0.8.1/project/aniuer2.rdf jdbc:mysql://localhost:3306/Weapon";
     
    3. 将生成的rdf文件存储到mysql中
    目前的问题是,我可以生成rdf文件(虽然这个文件还不完善,以后在映射的阶段调整),但这个文件生成之后,
    (1)我无法实例化这些数据到数据库中
    (2)我无法通过这个视图查询数据。
     
    2013年10月20日 7:51:42
    拟采用的办法:
        一是:把jena的版本回归到2.5之前的版本,其中会有com.hp.jena.db.*的类。
        二是:采用新jena版本中的sdb包,这个包究竟是不是上面的替代,还不知道。
     
    哥痛定思痛。。。还是用老版本的jena吧,先入上门,以后再改进吧,不纠结这个问题了。
     
    2013年10月20日 10:10:07
    采用了2.6之后,网上的程序可以运行了。目前的问题是,没有修改映射文件,基础URI没有设置,导致在映射到数据库的过程中,报出这个错。
    现在eclipse里面是两个jena的工程,一个是2.6.4,一个是d2rq中的2.7.0。同时进行,用d2rq做映射,用jena2.6来做mysql的存储。
    a. 把数据库的数据映射成ttl文件。
    b. 把ttl文件dump成为指定的rdf文件。
    c. 把rdf文件存储到mysql中。
     
    目前有点问题,报错说我没有设置主键,我重新选择了数据库MyDataBase,只有一个表Connection。
    输入命令alter table Connection ADD CONSTRAINT PK_Connection PRIMARY KEY(ID),增加了主键。
     
    现编程进行两具文件的映射,发现在dump过程中,命令行可以实现,而eclipse中不能实现,还是权限的问题。这个问题的解决竟然是在终端运行eclipse即可,姑且这样吧。
    这样还是没解决,先不解决了。在终端运行吧。
     
    2013年10月20日 22:30:57
    基本上映射成功了,文件还是读不太懂。看来dump还是要学习一下的。
     
    2013年10月21日 20:42:54
    发现dump后的文件并不标准,我还是应该学习一下,d2rq的dump的具体用法。
     
    这一步从格式上讲基本完成,下一步研究定制的映射。
     
    有需要交流的可以加QQ: 1q7q1q5q3q6q0q1q8(去掉中间的q)。
     
     




  • 相关阅读:
    Angular6在自定义指令中使用@HostBingDing() 和@HostListener()
    升级到Angular6后对老版本的RXJS代码做相应的调整
    关于Angular6版本升级和RXJS6新特性的讲解
    ANGULAR 使用 ng build --prod 编译报内存错误的解决办法
    在js内生成PDF文件并下载的功能实现(不调用后端),以及生成pdf时换行的格式不被渲染,word-break:break-all
    在js中获取页面元素的属性值时,弱类型导致的诡异事件踩坑记录,
    前端使用mobx时,变量已经修改了,为什么组件还是没变化,map类型变量,对象类型变量的值获取问题(主要矛盾发生在组件使用时)
    在Java中发送http的post请求,设置请求参数等等
    spring定时任务注解@Scheduled的记录
    js获取dom元素的子元素,父元素,兄弟元素小记
  • 原文地址:https://www.cnblogs.com/aniuer/p/3382756.html
Copyright © 2011-2022 走看看