ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:133.29KB ,
资源ID:23321467      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/23321467.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(D2R server关联数据发布.docx)为本站会员(b****9)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

D2R server关联数据发布.docx

1、D2R server关联数据发布如何利用 D2R 发布 Linked data简介:Linked data 作为 semantic Web 的一个子话题,近年来逐渐得到学术界以及工业界的广泛重视。Linked data 这个词表示了一系列在 Web 上发布和关联结构化数据的最佳实践。在用 Linked Data 构建的数据 Web 上,我们可以自由地从一片数据跳转到其它数据,比之现在的文档 Web(从一个文档跳转到其他文档),数据 Web 提供的关联不但更加丰富,而且具有语义。本文着重介绍目前比较流行的一种发布 Linked data 的工具 D2R 的使用方法,并以 Academic 领域的

2、数据为例,展示怎么使用 D2R 工具构建 Linked data,并提供简单的浏览功能。本文希望给需要开发基于 Linked data 应用程序的程序员提供有价值的参考。前言Linked data 最早是在 2007 年 5 月,由 Chris Bizer and Richard Cyganiak 向 W3C SWEO 提交的一个项目申请 Linked Open Data Project 中提出来的。Linked data 提出的目的是构建一张计算机能理解的语义数据网络,而不仅仅是人能读懂的文档网络,以便于在此之上构建更智能的应用。Linked Open Data Project 的宗旨在于号

3、召人们将现有数据发布成 Linked data,并将不同数据源互联起来。在过去的三年中,越来越多的数据提供者和 Web 应用开发者将他们各自的数据发布到 Web 上,并且与其它数据源关联在一起,形成一个巨大的数据 Web。截止 2009 年 7 月,已发布的 Linked data 规模为 6.726.000.000 个 RDF 三元组以及 148.948.000 个 RDF 关联关系,相比 2007 年 5 月的 500 million RDF 三元组以及 120,000 RDF 关联关系,增涨非常迅速。 其数据领域涉及 Geographic Data,Life Sciences,Publi

4、cations,User Generate Content,Media 等等。不仅仅是 Public Web,随着企业 2.0 的到来,企业内部也迫切需要越来越多的数据与 Web 上的数据关联,从而构建更好的应用与服务。而现有的数据,尤其是企业内部的数据,大多数存在于关系型数据库中,因此,本文挑选了一个目前应用较为广泛的工具 D2R,介绍如何使用它将关系型数据库的数据发布成 Linked Data。什么是 Linked data简单来讲,Linked data 即为一系列利用 Web 在不同数据源之间创建语义关联的最佳实践方法。这里的不同数据源,可以来自一个组织内部的不同系统,也可以来自不同组

5、织的不同系统,它们的内容,存储地点以及存储方式都可以完全不同,但它们很可能存在着关联,例如:Amazon 上图书可能与 MySpace 上的人之间可能存在关联,因为图书的作者有可能在 Myspace 上注册账号。总之,Linked data 最大的特点便是将不同的数据关联起来。Linked data 包含一些基本原则:资源。在发布一个领域的数据之前,我们需要确定要发布的资源是什么。任何事物,只要你认为是有意义的,有被引用必要的,都可以称之为资源。资源标识。任何一个资源都用一个 HTTP URI(Uniform Resource Identifiers)来标识。之所有要用 HTTP URI 来标

6、识,是希望数据能够通过 HTTP 协议访问,真正实现基于 Web 的访问与互联。资源描述。资源可以有多种描述,例如 HTML,XML,RDF 以及 JPEG。文档 Web 的文档主要通过 HTML 格式来表示,数据 Web 的数据主要通过RDF格式(Resource Description Framework)来表示。RDF 将一个资源描述成一组三元组(主语,谓语,宾语)。例如:王老师 教授 英语课(主语) (谓语) (宾语)主语用来表示需要描述的资源,谓语用来表示主语的某个属性(例如:姓名,出生日期)或者某个关系(例如,雇佣,认识,教授等),宾语表示了属性的值或者关系的值。主语,谓语都需要要

7、用 HTTP URI 来表示。宾语可以用 HTTP URI 标识另一个资源,也可以是字符串表示的文本。我们可以把主语看作是类资源,而将谓语看作是类资源的属性资源,宾语或者是类资源或者是文字型资源。根据宾语的种类,可以将三元组分为两类:文字型三元组以及非文字型三元组,第二种可以看作是类资源之间的关联。什么是 D2RLinked data 的优点虽然很突出,但要想发挥其作用,其前提是数据必须满足 Linked data 的基本原则。然而实际上上大量已存在的数据并不满足这些原则,于是 Linked data 的推动者们便开发了一系列实用的工具,来帮助完成传统数据向 Linked data 的转换。D

8、2R 便是其中一个非常流行的工具。它的作用是一个将关系型数据库发布为 Linked data。D2R 主要包括 D2R Server, D2RQ Engine 以及 D2RQ Mapping 语言。D2R Server 是一个 HTTP Server,它的主要功能提供对 RDF 数据的查询访问接口,以供上层的 RDF 浏览器、SPARQL 查询客户端以及传统的 HTML 浏览器调用。D2RQ Engine 的主要功能是使用一个可定制的 D2RQ Mapping 文件将关系型数据库中的数据换成 RDF 格式。D2RQ engine 并没有将关系型数据库发布成真实的 RDF 数据,而是使用 D2R

9、Q Mapping 文件将其映射成虚拟的 RDF 格式。该文件的作用是在访问关系型数据时将 RDF 数据的查询语言 SPARQL 转换为 RDB 数据的查询语言 SQL,并将 SQL 查询结果转换为 RDF 三元组或者 SPARQL 查询结果。D2RQ Engine 是建立在Jena(Jena 是一个创建 Semantic Web 应用的 Java 平台,它提供了基于 RDF,SPARQL 等的编程环境)的接口之上。D2RQ Mapping 语言的主要功能是定义将关系型数据转换成 RDF 格式的 Mapping 规则。图 1 呈现了 D2R 的主体架构:图 1. D2R 的主体构架如何使用 D

10、2R环境准备在使用 D2R 之前,先要进行准备工作,即对 D2R 的环境进行下载和安装:下载 D2R的环境下载与你目前使用的数据库版本相匹配的驱动,将其 jar 文件放在 D2R Server 的 lib 目录下面。D2R 目前已经详细测试过 Oracle, MySQL, PostgreSQL, Microsoft SQL Server。其它数据库没有测试,但笔者尝试过 IBM DB2,发现同样是支持的。使用 D2R 可以对关系型数据库的数据进行两种方案的转化与访问。第一种方案是将关系型数据库的数据转换为虚拟的 RDF 数据进行访问,分为两个步骤,第一步是生成 Mapping 文件,第二步是使

11、用 Mapping 文件对关系型数据进行转换与访问。我们可以通过 D2R server 访问关系型数据,或者通过在自己的 Java application 中调用 Jena/Seasame 的 API 去访问数据。第二种方案是直接将关系型数据库的数据包装成真实的 RDF 文件,以供一些可以访问 RDF Store 的接口访问。由于一般来讲,数据库的数据规模都比较大,且内容经常发生变化,转换为虚拟的 RDF 数据空间复杂度会更低,更新内容更加容易,因此第一种方案的应用更加广泛。我们在这里只介绍第一种方案,并分下述两个步骤进行介绍。生成 Mappping fileD2R 提供了生成 Mapping

12、 文件的执行脚本。我们需要在命令行中进入您所下载的 D2R 所在的路径,执行下面的命令:generate-Mapping -u username -p password -d driverclass -o outfile.n3 -b base uri jdbcURL参数意义如下:jdbcURLJDBC 链接数据库的 URL MySQL: jdbc:mysql:/servername/databasename PostgreSQL: jdbc:postgresql:/servername/databasename Oracle: jdbc:oracle:thin:servername:1521:

13、databasename Microsoft SQL Server: jdbc:sqlserver:/servername;databaseName=databasename (包含分号,使用时需要用引号引起来) DB2:jdbc:db2:/ servername:50000/ databasename-u username数据库用户登录名-p password数据库用户登录密码-d driverclass数据库驱动类名 MySQL: com.mysql.jdbc.Driver PostgreSQL: org.postgresql.Driver Oracle: oracle.jdbc.Orac

14、leDriver Microsoft SQL Server: com.microsoft.sqlserver.jdbc.SQLServerDriver DB2:com.ibm.db2.jcc.DB2Driver -o outfile.n3Mapping file 的输出文件,以 n3 为后缀-b base uriBase uri 作为词汇的命名空间,默认为http:/localhost:2020/词汇的前缀按照http:/baseURI/vocab/resource/模式生成。base uri 需要与 server 的 uri 相一致。例如 : 现在我准备一个关于 Academic 的数据库,

15、其中包括 1)从 hompage 上抽取的有关研究者的信息:homepagePeople;2)从 wikipedia 上抽取的有关研究者的信息:wikipediaPeople;3)从 ACM 页面上抽取的有关论文与作者的信息:Paper, Author, Paper2Author。数据库相关的 schema 如清单 1 所示:清单 1. Academic 数据库 Schema CREATE TABLE homepagePeople ( peopleID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY, name varchar(100) NOT NU

16、LL, email varchar(100), organization varchar(100), homepage varchar(100), phone varchar(100), position varchar(100), PRIMARY KEY (peopleID) ); CREATE TABLE wikiPeople ( peopleID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY, name varchar(100) NOT NULL, email varchar(100), title varchar(100), employe

17、r varchar(100), education varchar(100), occupation varchar(100), PRIMARY KEY (peopleID) ); CREATE TABLE paper ( paperID INTEGER NOT NULL, title varchar(200) NOT NULL, publishYear varchar(200), conference varchar(200), PRIMARY KEY (paperID) ); CREATE TABLE author ( authorID INTEGER NOT NULL , name va

18、rchar(200) NOT NULL, email varchar(200), organization varchar(200), PRIMARY KEY (authorID) ); CREATE TABLE paper2author ( paperID INTEGER NOT NULL , authorID INTEGER NOT NULL , PRIMARY KEY (authorID, paperID), FOREIGN KEY (paperID) REFERENCES paper(paperID) ON DELETE CASCADE, FOREIGN KEY (authorID)

19、REFERENCES author(authorID) ON DELETE CASCADE ); 执行下面命令便可以根据Academic的Schema生成一个Mapping文件存储在Academic.n3中:generate-Mapping -o Academic.n3 -d com.ibm.db2.jcc.DB2Driver -u test -p test jdbc:db2:/localhost:50000/Academic 默认的 Mapping 文件非常简单,我们需要的一些数据关联可能没有提供。之后会着重介绍一些利用 Mapping 语言自定制 Mapping 文件的实践方法。使用 Ma

20、pping 文件对数据进行转化与访问生成 Mapping 文件后,我们便希望通过 Mapping 文件对关系型数据库的数据进行转换和访问,这里有两种方式,一种是通过 D2R Server 自动调用 D2RQ Engine 对数据进行转换访问,另一种在自己的 Java application 中通过 Jena/Seasame 的 API 去使用 D2RQ Engine。使用 D2R server 默认的数据处理和访问方式浏览 Linked data。该方法很简单,不需要自己写代码,只需要在命令行下面进入 D2R 所在文件路径,执行下面的命令启动 D2R Server:d2r-server Aca

21、demic.n3其中 Academic.n3 即为上一节中生成 Mapping 文件。然后在 Web 浏览器中访问 http:/localhost:2020, 便可以默认的 HTML 浏览器、DF 浏览器以及 SPARQL 查询端对我们的数据进行访问:图 2. D2R Server 运行的入口页面从图 2 中可以看出,虽然我们的 schema 一共有五个,但是 D2R Server 在显示时仅生成了四种类资源:HomepagePeople,wikiPeople, paper,以及 author(图 2 第一行),而是将 paper2author 看作是类资源 author 与 Paper 之间

22、的关系。其概念模型如下所示:图 3. Academic 数据概念模型点击图 2 第一行的 Author,呈现出 5 个作者,如图 4 所示:图 4. 点击 Author 的 HTML 显示结果点击 Author#2,得到 Author#2 的详细属性与关系。如图 5 所示:图 5. 访问类资源 Author 中标号为 2 的作者 HTML 显示结果注意在这里,Paper2Atuhor 被映射成了 Author 的一个关系属性,点击该关系关联的资源“”,得到 Paper#1 的详细属性与关系,如图 6 所示:图 6. 访问类资源 Paper 中标号为 1 的论文 HTML 显示结果注意在浏览 P

23、aper 的详细信息时,也可以通过反属性 (is vocab:Paper2Author of) 跳转到相关 Author 的详细信息。点击图 2 中的类资源 HomepagePeople,再点击 1 号资源,呈现出 James A. Hendler 的 homepage 详细信息,如图 7 所示:图 7. 访问类资源 HomepagePeople 中标号为 1 的人 HTML 显示结果点击图 2 中的类资源 WikiPeople,再点击 1 号资源,呈现出 James Hendler 的 wikipedia 详细信息,如图 8 所示:图 8. 访问类资源 WikiPeople 中标号为 1 的

24、人 HTML 显示结果使用 Jena API 构建自己的应用如果需要在 RDF 数据层上构建自己的应用,开发自己的客户端展示方法,就要用到第二种方式,即直接在自己的 Java 工程中通过 Jena/Seasame 的 API 去使用 D2RQ, 这里仅介绍 Jena 的使用方式,Seasame 的使用留给读者自己去实践。首先需要在你的工程中引用 D2RQ 与 Jena 相关的 jar 包:将你下载的 D2R server 目录下的 lib/d2rq-0.7.jar 加入你工程的 classpath;下载ARQ2.8.1,将其 lib 目录下的所有 jar 包加入你工程的 classpath。使

25、用 Jena API 可以多种方式调用 D2RQ, 其中最简洁的方式为直接编写 SPARQL 查询语言,其余方式都需要调用 Jena 的封装类,如 Resource,Property, RDFNode 等,需要读者非常熟悉 Jena 的接口,并需要为自己的数据创建相应的 Jena 类对象,因此比较麻烦。本文在此介绍最容易上手也是最灵活的访问方式,SPARQL 查询。假定我们现在需要构建一个应用,展示所有作者的 name, email 和 paper,因此在 server 端需要提供一个查询类,如清单 2 所示:清单 2. 使用 Jena API 的 SPARQL 查询 package test

26、; import com.hp.hpl.jena.query.Query; import com.hp.hpl.jena.query.QueryExecutionFactory; import com.hp.hpl.jena.query.QueryFactory; import com.hp.hpl.jena.query.QuerySolution; import com.hp.hpl.jena.query.ResultSet; import de.fuberlin.wiwiss.d2rq.ModelD2RQ; public class AcademicTest public void que

27、ryBySPARQL() ModelD2RQ m = new ModelD2RQ(file:/D:/Academic.n3); String SPARQLPrefix = PREFIX vocab: http:/localhost:2020/vocab/resource/; String SPARQL = SPARQLPrefix + SELECT ?name ?email ?paper WHERE + ?author vocab:Name ?name . + ?author vocab:Email ?email . + ?author vocab:Paper2Author ?paper .

28、; Query query = QueryFactory.create(SPARQL); ResultSet rs = QueryExecutionFactory.create(query, m).execSelect(); while (rs.hasNext() QuerySolution row = rs.nextSolution(); System.out.println(name:+row.get(name)+,email:+row.get(email)+, paper:+row.get(paper); 从清单 2 可以看出,用 SPARQL 查询数据的步骤如下:创建 D2RQ mod

29、el。该步骤需要注意的是,创建 model 时需要指定 Mapping 文件的路径,路径可以是绝对路径,也可以是基于工程根目录的相对路径,路径之前必须加上前缀“file:/”。执行 SPARQL 语言。该 SPARQL 语句中 ?author 为主语,vocab:Name,vocab:Email 以及 vocab:Paper2Author 为谓语,查询结果 ?name,?email 以及 ?paper 为宾语。注意 SPARQL 语句需要有命名空间的前缀说明。如在清单程序的使用了 vocab:Name,则在前缀需要声明 vocab: http:/localhost:2020/vocab/res

30、ource/,并且该声明必须与 Mapping 文件的前缀相一致。有关 SPARQL 的详细语法,在此不作详细介绍,读者可以参阅W3C 关于 SPARQL的详细说明。在执行 SPARQL 语句时,需要指明要执行的语句,以及所依附的 D2RQ model。处理查询结果(e.g.,输出到 console)。关于 ResultSet 的处理,jena 提供了一些类似 SQL 的接口去获取每个查询结果项。程序清单 2 的执行结果如下: name:Jie Bao, email:baojiecs.rpi.edu, paper:file:/D:/Academic2.n3#ZJ.PAPER/1 name:Li

31、 Ding, email:dinglcs.rpi.edu, paper:file:/D:/Academic2.n3#ZJ.PAPER/1 name:Deborah McGuinness, email:dlmcs.rpi.edu, paper:file:/D:/Academic2.n3#ZJ.PAPER/1 name:James Hendler, email:hendlercs.rpi.edu, paper:file:/D:/Academic2.n3#ZJ.PAPER/1 name:James Hendler, email:hendlercs.rpi.edu, paper:file:/D:/Academic2.n3#ZJ.PAPER/3 name:James Hendler, email:hendlercs.rpi.edu, paper:file:/D:/Academic2.n3#ZJ.PAPER

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1