




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、如何利用 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,Publications,Us
4、er 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 将一个资源描述成一组三元组(主语,谓语,宾语)。例如:王老师 教授 英语课(主语) (谓语) (宾语)主语用来表示需要描述的资源,谓语用来表示主语的某个属性(例如:姓名,出生日期)或者某个关系(例如,雇佣,认识,教授等),宾语表示了属性的值或者关系的值。主语,谓语都需要要用 HT
7、TP URI 来表示。宾语可以用 HTTP URI 标识另一个资源,也可以是字符串表示的文本。我们可以把主语看作是类资源,而将谓语看作是类资源的属性资源,宾语或者是类资源或者是文字型资源。根据宾语的种类,可以将三元组分为两类:文字型三元组以及非文字型三元组,第二种可以看作是类资源之间的关联。什么是 D2RLinked data 的优点虽然很突出,但要想发挥其作用,其前提是数据必须满足 Linked data 的基本原则。然而实际上上大量已存在的数据并不满足这些原则,于是 Linked data 的推动者们便开发了一系列实用的工具,来帮助完成传统数据向 Linked data 的转换。D2R 便
8、是其中一个非常流行的工具。它的作用是一个将关系型数据库发布为 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 数据,而是使用 D2RQ Ma
9、pping 文件将其映射成虚拟的 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 的主体构架如何使用
10、 D2R环境准备在使用 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 提供了生成 Mappi
12、ng 文件的执行脚本。我们需要在命令行中进入您所下载的 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:152
13、1: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.Or
14、acleDriver 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 的
15、 uri 相一致。例如 : 现在我准备一个关于 Academic 的数据库,其中包括 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
16、 AS IDENTITY, name varchar(100) NOT NULL, 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 var
17、char(100), title varchar(100), employer 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
18、 ( authorID INTEGER NOT NULL , name varchar(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 D
19、ELETE CASCADE, FOREIGN KEY (authorID) 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:5
20、0000/Academic 默认的 Mapping 文件非常简单,我们需要的一些数据关联可能没有提供。之后会着重介绍一些利用 Mapping 语言自定制 Mapping 文件的实践方法。使用 Mapping 文件对数据进行转化与访问生成 Mapping 文件后,我们便希望通过 Mapping 文件对关系型数据库的数据进行转换和访问,这里有两种方式,一种是通过 D2R Server 自动调用 D2RQ Engine 对数据进行转换访问,另一种在自己的 Java application 中通过 Jena/Seasame 的 API 去使用 D2RQ Engine。使用 D2R server 默认的
21、数据处理和访问方式浏览 Linked data。该方法很简单,不需要自己写代码,只需要在命令行下面进入 D2R 所在文件路径,执行下面的命令启动 D2R Server:d2r-server Academic.n3其中 Academic.n3 即为上一节中生成 Mapping 文件。然后在 Web 浏览器中访问 http:/localhost:2020, 便可以默认的 HTML 浏览器、DF 浏览器以及 SPARQL 查询端对我们的数据进行访问:图 2. D2R Server 运行的入口页面从图 2 中可以看出,虽然我们的 schema 一共有五个,但是 D2R Server 在显示时仅生成了四
22、种类资源:HomepagePeople,wikiPeople, paper,以及 author(图 2 第一行),而是将 paper2author 看作是类资源 author 与 Paper 之间的关系。其概念模型如下所示:图 3. Academic 数据概念模型点击图 2 第一行的 Author,呈现出 5 个作者,如图 4 所示:图 4. 点击 Author 的 HTML 显示结果点击 Author#2,得到 Author#2 的详细属性与关系。如图 5 所示:图 5. 访问类资源 Author 中标号为 2 的作者 HTML 显示结果注意在这里,Paper2Atuhor 被映射成了 Au
23、thor 的一个关系属性,点击该关系关联的资源“<http:/localhost:2020/resource/ZJ.PAPER/1>”,得到 Paper#1 的详细属性与关系,如图 6 所示:图 6. 访问类资源 Paper 中标号为 1 的论文 HTML 显示结果注意在浏览 Paper 的详细信息时,也可以通过反属性 (is vocab:Paper2Author of) 跳转到相关 Author 的详细信息。点击图 2 中的类资源 HomepagePeople,再点击 1 号资源,呈现出 James A. Hendler 的 homepage 详细信息,如图 7 所示:图 7.
24、访问类资源 HomepagePeople 中标号为 1 的人 HTML 显示结果点击图 2 中的类资源 WikiPeople,再点击 1 号资源,呈现出 James Hendler 的 wikipedia 详细信息,如图 8 所示:图 8. 访问类资源 WikiPeople 中标号为 1 的人 HTML 显示结果使用 Jena API 构建自己的应用如果需要在 RDF 数据层上构建自己的应用,开发自己的客户端展示方法,就要用到第二种方式,即直接在自己的 Java 工程中通过 Jena/Seasame 的 API 去使用 D2RQ, 这里仅介绍 Jena 的使用方式,Seasame 的使用留给读
25、者自己去实践。首先需要在你的工程中引用 D2RQ 与 Jena 相关的 jar 包:将你下载的 D2R server 目录下的 lib/d2rq-0.7.jar 加入你工程的 classpath;下载 ARQ2.8.1,将其 lib 目录下的所有 jar 包加入你工程的 classpath。使用 Jena API 可以多种方式调用 D2RQ, 其中最简洁的方式为直接编写 SPARQL 查询语言,其余方式都需要调用 Jena 的封装类,如 Resource,Property, RDFNode 等,需要读者非常熟悉 Jena 的接口,并需要为自己的数据创建相应的 Jena 类对象,因此比
26、较麻烦。本文在此介绍最容易上手也是最灵活的访问方式,SPARQL 查询。假定我们现在需要构建一个应用,展示所有作者的 name, email 和 paper,因此在 server 端需要提供一个查询类,如清单 2 所示:清单 2. 使用 Jena API 的 SPARQL 查询 package test; import com.hp.hpl.jena.query.Query; import com.hp.hpl.jena.query.QueryExecutionFactory; import com.hp.hpl.jena.query.QueryFactory; import com.hp.h
27、pl.jena.query.QuerySolution; import com.hp.hpl.jena.query.ResultSet; import de.fuberlin.wiwiss.d2rq.ModelD2RQ; public class AcademicTest public void queryBySPARQL() ModelD2RQ m = new ModelD2RQ("file:/D:/Academic.n3"); String SPARQLPrefix = "PREFIX vocab: http:/localhost:2020/vocab/res
28、ource/" String SPARQL = SPARQLPrefix + "SELECT ?name ?email ?paper WHERE " + " ?author vocab:Name ?name . " + " ?author vocab:Email ?email ." + " ?author vocab:Paper2Author ?paper . " ; Query query = QueryFactory.create(SPARQL); ResultSet rs = QueryExecut
29、ionFactory.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 mo
30、del。该步骤需要注意的是,创建 model 时需要指定 Mapping 文件的路径,路径可以是绝对路径,也可以是基于工程根目录的相对路径,路径之前必须加上前缀“file:/”。执行 SPARQL 语言。该 SPARQL 语句中 ?author 为主语,vocab:Name,vocab:Email 以及 vocab:Paper2Author 为谓语,查询结果 ?name,?email 以及 ?paper 为宾语。注意 SPARQL 语句需要有命名空间的前缀说明。如在清单程序的使用了 vocab:Name,则在前缀需要声明 vocab: http:/localhost:2020/vocab/re
31、source/,并且该声明必须与 Mapping 文件的前缀相一致。有关 SPARQL 的详细语法,在此不作详细介绍,读者可以参阅 W3C 关于 SPARQL的详细说明。在执行 SPARQL 语句时,需要指明要执行的语句,以及所依附的 D2RQ model。处理查询结果(e.g.,输出到 console)。关于 ResultSet 的处理,jena 提供了一些类似 SQL 的接口去获取每个查询结果项。程序清单 2 的执行结果如下: name:Jie Bao, email:, paper:file:/D:/Academic2.n3#ZJ.PAPER/1
32、name:Li Ding, email:, paper:file:/D:/Academic2.n3#ZJ.PAPER/1 name:Deborah McGuinness, email:, paper:file:/D:/Academic2.n3#ZJ.PAPER/1 name:James Hendler, email:, paper:file:/D:/Academic2.n3#ZJ.PAPER/1 name:James Hendler, email:, paper:file
33、:/D:/Academic2.n3#ZJ.PAPER/3 name:James Hendler, email:, paper:file:/D:/Academic2.n3#ZJ.PAPER/2 name:Jennifer Golbeck, email:, paper:file:/D:/Academic2.n3#ZJ.PAPER/2 name:Jennifer Golbeck, email:, paper:file:/D:/Academic2.n3#ZJ.PAPER/3 注意,结果中 name 与 ema
34、il 的值都是一个文字型资源,而 paper 的值则是一个类资源,用一个路径表示(注意,笔者目前创建的是 Java 工程,因此可以用一个文件路径来标识一个资源,在 Web 工程中,可以曝露出 HTTP URI,例如图 4 中用 http:/localhost:2020/resource/ZJ.paper/1 表示一篇 paper)。如何读者希望查询某一具体实例资源的属性值,在写 SPARQL 语句的时候注意需要将路径用“<>”引起来,例如:"SELECT ?title WHERE <file:/D:/Academic2.n3#ZJ.PAPER/1> vocab
35、:Title ?title "读者可以基于 server 端提供的接口,构建自己的 client 端对数据进行展示,本文在此不作介绍。到此为止,我们便介绍了如何使用 D2R 将关系型数据库中的数据转换为虚拟的 RDF 数据,并对其进行访问查询的最基本方法。接下来我们将介绍如何丰富自动生成的 Mapping 文件,使得更多的数据能够关联在一起。回页首定制自己的 Mapping 文件本节首先简单介绍 Mapping 语言的一些基本语法,然后介绍如何利用 Mapping 语言对 Mapping 文件进行定制。Mapping 语言的基本语法Mapping 语言中最重要的是两个概念,一个是
36、160;d2rq:ClassMap,另一个是 d2rq:PropertyBridge。 d2rq:ClassMap 代表 OWL Ontology 或者 RDFS Schema 中的一个或一组相似的 Class,它一般映射到关系数据库中的一个表。其中包括几个重要属性:d2rq:Class:表示该 ClassMap 所对应 Class,其取值可以来自现有的 OWL Ontology 或者 RDFS Schema,也可以根据自己的数据特征定义新的 Class;d2rq:UriPattern: 描述了一个 URI 模板,用来指导生成实例化资源的真实 URI。一般用“ZJ.AUTHOR/ZJ
37、.AUTHOR.AUTHORID”来表示,“/”前面的部分为表名,后面“”之间的部分为表的列。d2rq:PropertyBridge 代表 OWL Ontology 或者 RDFS Schema 中 Class 的属性,它一般映射到关系数据库中某个表的一列。其中包括几个重要属性:d2rq:belongsToClassMap: 表示该 propertyBridge 所属的 ClassMap;d2rq:property: 表示该 propertyBridge 所对应 property,其取值可以来自现有的 OWL Ontology 或者 RDFS Schema,也可以根据自己的数据特征定义新的 p
38、roperty;d2rq:column: 表示该 propertyBridge 关联的某个具体表中的列。d2rq:refersToClassMap: 表示该 propertyBridge 引用的其它 ClassMap,它的取值不是该 propertyBridge 所属 ClassMap 对应表中的取值,而是从引用的 ClassMap 对应表中取值。该属性一般会跟随几个 d2rq:join 来指明关联的条件,d2rq:join 类似 sql 语句中的 where 条件。定制 Mapping 文件Linked data 最重要的特点便是资源和资源之间是互联的,从一个资源可以跳转到其它许多资源。如图
39、 4、5 中,从类资源 Author 可以跳转到类资源 Paper,同样从类资源 Paper 也可以跳转到类资源 Author。这些关联生成的前提是原始的数据中存在 Paper2Author 表,通过外键引用 Paper 表与 Author 表。有了主外键关系,D2R 便可以自动为其创建 RDF 关联。具体做法为,如果一个表 A 被表 B 外键引用,则为 A 对应的 ClassMap 创建一个 PropertyBridge,其 d2rq:belongsToClassMap 为 A 所对应的 ClassMap,d2rq:refersToClassMap 为 B 所对应的 ClassMap。 这样
40、,在浏览 A 的实例资源时,便可以通过该 PropertyBridge 跳转到 B 的实例资源。如果一个表的所有列都通过外键引用其它数据表,则不会为该表生成对应的 ClassMap,而是选取一个被引用的表,为其创建属性,属性取值来自其它被引用的表。例如本文所举例子中的 Paper2Author:清单 3. 默认的 Mapping 文件生成的 Paper2Author 属性 # n:m table ZJ.PAPER2AUTHOR map:Paper2author a d2rq:PropertyBridge; d2rq:belongsToClassMap map:Author; d2rq:prop
41、erty vocab:Paper2Author; d2rq:refersToClassMap map:Paper; d2rq:join "ZJ.PAPER2AUTHOR.AUTHORID => ZJ.AUTHOR.AUTHORID" d2rq:join "ZJ.PAPER2AUTHOR.PAPERID => ZJ.PAPER.PAPERID" 实际情况中,很多数据之间虽然有联系,但数据库的创建者们并没有为之建立主外键的关系。在这种情况下,我们就需要根据一定的领域常识或经验,手动地修改 Mapping 文件,为之建立一些必要的关联。例如,文中的
42、 Academic 数据集,数据表 HomepagePeople 中的数据是 从 hompage 上抽取的有关研究者的信息, 数据表 WikiPeople 中的数据时从 wikipedia 上抽取的有关研究者的信息,这两张表并没有主外键的关联。但实际上,根据我们的常识,这两张表中的数据很有可能指代同一个人。因此,我们希望定义一定的规则,将 Homepage 这个类资源与 WikiPeople 这个类资源关联起来。清单 4 给出了我们自定义的属性 wikiInfor,该属性属于类资源 HomepagePeople,引用类资源 WikiPeople:清单 4. 自定义的属性 wikiInfor m
43、ap:wikiInfor a d2rq:PropertyBridge; d2rq:belongsToClassMap map:HomepagePeople; d2rq:property vocab:WikiInformation; d2rq:refersToClassMap map:WikiPeople; d2rq:join "ZJ.HOMEPAGEPEOPLE.EMAIL => ZJ.WIKIPEOPLE.EMAIL" d2rq:join "ZJ.HOMEPAGEPEOPLE.ORGANIZATION => ZJ.WIKIPEOPLE.EMPLOYE
44、R" 清单 4 定义了 PropertyBridge:wikiInfor,其中 d2rq:belongsToClassMap 描述了 wikiInfor 所属的 ClassMap 为 HomepagePeople;d2rq:property 描述了 wikiInfor 所对应的 property 为 vocab:WikiInformation,这个值可以修改,或者引用现有的 Ontology/RDFS 中的词汇,或者根据自己的数据灵活定义;d2rq:refersToClassMap 描述了 wikiInfor 所引用的 ClassMap 为 WikiPeople,表示 wikiInf
45、or 的取值来源于 WikiPeople 对应的表,而不是 HomepagePeople 对应的表;d2rq:join 描述了 wikiInfor 引用 WikiPeople 的条件,这里给出了两个条件,即 HomepagePeople 与 WikiPeople 的 email 相同并且 HomepagePeople 的 organization 与 WikiPeople 的 employer 相同。在这两个条件同时满足的情况下,wikiInfor 才会生成具体的值,使得从一个 HomepagePeople 的实例资源可以跳转到他相应的 WikiPeople,如图 9 所示:图 9. 用 D2
46、R Server 展示 wikiInfor 属性相比图 7 可以看出,类资源 HomepagePeople 多了一条定制的关系属性 wikiInfor。清单 5 列举了一个更复杂的属性 coauthor。该属性连接了 HomepagePeople 与 Author。当浏览 HomepagePeople 的实例资源时,可以跳转到与其共同发表过论文的作者。这个关系需要关联三张表,HomepagePeople,Author 以及 Paper2Author。从 HompagePeople 到 Author 通过 Email 以及 Organization 关联,从 Author 到 Paper2Aut
47、hor 通过 AuthorID 关联。注意在这些 join 条件中,Author 与 Paper2Author 分别出现了两次,因此需要使用 d2rq:alias 声明别名。此外,我们不希望 coauthor 列表中包括自己,因此需要使用 d2rq:condition 声明一条不相等关系。清单 5. 自定义的属性 coauthor map:coauthor a d2rq:PropertyBridge; d2rq:belongsToClassMap map:HomepagePeople; d2rq:property vocab:Coauthor; d2rq:refersToClassMap ma
48、p:Author; d2rq:join "ZJ.HOMEPAGEPEOPLE.EMAIL => ZJ.AUTHOR.EMAIL" d2rq:join "ZJ.HOMEPAGEPEOPLE.ORGANIZATION => ZJ.AUTHOR.ORGANIZATION" d2rq:join "ZJ.AUTHOR.AUTHORID => ZJ.PAPER2AUTHOR.AUTHORID" d2rq:join "ZJ.PAPER2AUTHOR.PAPERID => P2A2.PAPERID" d2r
49、q:join "P2A2.AUTHORID = A2.AUTHORID" d2rq:alias "ZJ.HOMEPAGEPEOPLE AS P2" d2rq:alias "ZJ.AUTHOR AS A2" d2rq:alias "ZJ.PAPER2AUTHOR AS P2A2" d2rq:condition "ZJ.AUTHOR.AUTHORID <> A2.AUTHORID" 从图 10 可以看出,相比图 9,类资源 HomepagePeople 多了一条定制的关系属性 coaut
50、hor。 图 10. 用 D2R Server 展示 coauthor 属性经过上述两条关系属性的定制,图 3 中默认的概念模型扩展为图 11 中新的概念模型:图 11. 扩展的概念模型此外,读者如果希望从自己的数据源链接到 Web 上其它数据源,必须创建它们的关系并将其额外存储在一个真实的 RDF 数据库中。访问的时候,一方面去查询 D2R 转换的虚拟 RDF 数据库,同时要查询这个真实的 RDF 数据库,使得所有的内部与外部关系都被查询出来。本文将不介绍如何创建这些关系,有兴趣的读者可以参看 Silk,它是一个在不同 Linked data 数据源之间发现关系的工具。结束语本文介绍了如何使用 D2R 工具将关系型数据库的数据发布为 Linked data,重点介绍了 D2R 的基本概念,使
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高级专业技术职务工作经历证明(7篇)
- 农业智能化灌溉技术应用服务协议
- 教育培训市场调查报告
- 室内设计空间分析
- 水利工程的玄机与考点解读试题及答案
- 校园设施承包协议
- 中级经济师复习知识体系评估试题及答案
- 工程经济理论与实际案例结合2025年试题及答案
- 水利水电工程应急响应策略与试题及答案
- 水电工程相关课题研究试题及答案
- 安全生产治本攻坚三年行动任务清单
- 企业工会培训
- 《实习安全教育》课件
- 配音基础知识课件
- 子宫肌瘤课件下载
- 薪酬管理竞聘
- 【MOOC】遗传学实验-南京大学 中国大学慕课MOOC答案
- 第47届世界技能大赛江苏省选拔赛计算机软件测试项目技术工作文件
- 2024年版《输变电工程标准工艺应用图册》
- GB/T 17988-2024食具消毒柜性能要求和试验方法
- 抚养权争取变更协议书范本
评论
0/150
提交评论