《本科毕业论文-—基于rdf三元组的微博数据格式化存储方法.doc》由会员分享,可在线阅读,更多相关《本科毕业论文-—基于rdf三元组的微博数据格式化存储方法.doc(58页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 计算机科学与技术学院毕业设计(论文)论文题目基于RDF三元组的微博数据格式化存储方法 指导教师职 称博士讲师学生姓名学 号专 业网络工程班 级系 主 任院 长起止时间2013年10月11日至2014年5月23日2014年5月23日 目 录摘要iAbstractii引言1第一章 微博数据获取21.1 新浪微博开放平台21.1.1 简介21.2 微博数据获取21.2.1 微博数据获取流程图21.2.2 应用的创建31.2.3 下载软件开发包(SDK)41.2.4 获取微博数据51.3 本章小结9第二章 微博数据转换102.1 微博数据分析102.2 微博数据转换112.2.1 RDF简介112.
2、2.2 微博数据转换的实现122.3 本章小结20第三章 微博RDF数据的存储及查询213.1 Openlink Virtuoso数据库213.1.1 Virtuoso数据库简介213.1.2 Virtuoso数据库的安装及使用213.2 微博RDF数据的存储223.3 微博RDF数据的查询233.3.1 SPARQL查询语言简介233.3.2 微博数据查询233.4 本章小结29第四章 总结与展望304.1 总结304.2 展望30参考文献31谢辞33附录34基于RDF三元组的微博数据格式化存储方法摘要:语义网为Web上日益增长的大数据提供了有效的智能化处理手段,它使用资源描述框架(Reso
3、urce Description Framework,RDF)来描述网络数据。本文通过对新浪微博上较为杂乱的微博数据进行分析,根据RDF三元组规则,为其中所需有用信息数据添加语义,并以XML为语法,编写算法将其转换为RDF文件;此外,研究了RDF 数据库Virtuoso的使用方法,并将微博的RDF数据导入Virtuoso,使用SPARQL语言对其进行快速查询和验证。总之,本文为微博数据的语义转换提供了借鉴,对于提高网络资源的检索效率具有重要意义。关键词:数据;RDF;三元组;存储RDF-Formatted Data Storage Method for WeiboAbstract: Seman
4、tic Web provides an effective measure of intelligent processing for the growing big data on the Web,which uses the Resource Description Framework(RDF) to description the network data.This article through to make an analysis of the messy Weibos data,and to add semantics for the needed and useful data
5、 by the rules of RDF triples, then, write algorithms to convert it to RDF file by the grammar of the XML, in addition, studied the use of RDF database Virtuoso and import the RDF file of Weibos data into Virtuoso,using SPARQL language for its fast query and validated. All in all, this article provid
6、es reference for the Weibo data semantic conversion, and has great significance for improvig the retrieval efficiency of the network resources. Key words:data, RDF, triples, storage i南华大学计算机科学与技术学院毕业设计(论文)引 言如今,随着社交网络化时代的逐步到来,各种社交软件和社交平台接踵出现,而微博,这种基于用户关系进行信息分享、传播的平台开始被越来越更多的人喜爱和使用。因此,随着微博用户的增多以及时间的推
7、移,微博上的信息数据量也开始越来越庞大而复杂,所以,要想从这些信息数据中获取某相关数据或分析某相关数据不是一件容易的事情。虽然现在有各种搜索引擎的帮助,但是仅凭靠利用关键字的搜索技术,往往难达到理想的效果。例如:如果你通过关键字“苹果”进行搜索,搜索引擎很难判断出你是想搜索苹果这种水果,还是想搜索苹果这种品牌手机,或是苹果公司的其他相关信息。因此,这里就会牵扯到语义搜索这一问题,即让计算机能够理解Web上的资源,以便实现人和计算机,计算机与计算机之间无偏差的信息传递。这种语义Web就需要RDF(Resource Description Framework)来对数据结构进行语义描述。RDF定义了
8、一种通用的资源描述框架,即用资源、属性、属性值的三元组,并以XML为语法来灵活地描述Web上的资源。此三元组结构类似于一个句子的主语、谓语、宾语的关系,而这三个组成元素主要是用URI(Uniform Resource Identifiers)来进行标识, 这就让它具有了语义描述的特征,使得计算机能理解Web上的资源,避免歧义的产生,实现人机对资源的可读性。作为语义网表示语义信息的基础,RDF数据也开始被广泛的应用。目前,虽然国内外对基于RDF关系的数据存储或数据查询有一定的研究123,但是针对某个具体数据案例的基于RDF三元组的数据存储的方法的研究还是比较少,尤其是在国内,除了有对基于RDF的
9、CM(公共信息模型)数据存储方案的研究与实现4外,其他都只是对基于关系数据库的RDF数据存储5或者是语义网环境下的RDF数据存储的研究6,亦或是一些对RDF数据的存储查询机制789和查询语言SPARQL的一些研究101112。所以,本文主要是以新浪微博数据为具体案例,按RDF三元组的规则对微博数据进行格式化存储方法的研究,通过此方法提高资源检索和分析管理的效率,熟悉了解利用RDF描述Web资源的实现过程,探索RDF在语义搜索中的优越性以及它的发展应用前景。 第一章 微博数据获取1.1 新浪微博开放平台1.1.1 简介新浪开放平台是一种基于新浪微博客系统的开发平台,主要用来实现信息的订阅、资源的
10、分享和交流,其体系结构类似于国外的社交软件Twitter。广大开发者或网站只要登录开放平台网站并在其中创建应用,便可通过开放平台提供的各种开放接口(Open API)对微博系统进行读写,获取自己想要的数据和实现某些应用功能,挖掘出微博系统的新功能。1.2 微博数据获取1.2.1 微博数据获取流程图 首先,为清楚直观地了解微博数据获取的整个过程,这里描绘出了整个数据获取过程的流程图,如图1.1所示:图1.1 微博数据获取流程图1.2.2 应用的创建如图1.1所示,获取微博的数据,首先要做的一步就是创建应用,其创建的过程大致如以下几个步骤: 第一步:进入新浪开放平台网站(网址:第二步:选择“微连接
11、”目录下的“站内应用”,然后再选择右上角的“创建应 用”按钮。第三步:选择“创建应用”按钮后,会弹出开发者信息填写的一个注册界面, 填写信息并通过邮件激活。第四步:填写创建应用的相关信息。填好应用对应的实际地址,本次实验设计 使用的是南华大学的官网地址( 获取微博数据,本地址可以随意选取,没有太多具体要求。第五步:提交创建的应用之后,在页面“管理中心”的“应用信用”中的“基 本信息”中,可以看到自己创建的应用的基本信息以及新浪系统自动 为该应用生成的 App Key和App Secret,这个两个值将是获取微博数 据的重要基石。为了应用的成功创建而不出现第三方的授权错误,在 “高级信息”的中还
12、必需填写可实现的回调地址,便于后面从地址栏中 获取“code”的值。本实验设计此处填写也还是南华大学的官网地址 如图1.2所示:图1.2 回调地址填写1.2.3 下载软件开发包(SDK)如图1.1所示,通过新浪开放平台获取微博数据还有一个比较重要的步骤就是下载软件开发包(SDK)。新浪开放平台提供了很多的软件开发包供开发者下载使用,里面提供了较为丰富的开发源代码可供开发者参考、学习和使用,如图1.3所示。因整个毕业设计的实现使用的基本都是java语言,所以本次实验设计这里下载使用的是java SDK。下载地址:图1.3 所有SDK版本下载好Weibo4j-oauth2.0-beta2.1.1.
13、zip后,解压得到weibo4j-oauth2,里面内容如图1.4所示。并将其解压得到的weibo4j-oauth2导入到Eclipse中。图1.4 weibo4j-oauth21.2.4 获取微博数据为了成功授权用户的登录,此时需要配置weibo4j-oauth2工程中src目录下config.properties里面的参数值。其中config.properties的内容如下:client_ID = client_SERCRET =redirect_URI =baseURL=accessTokenURL=authorizeURL=rmURL= 参数配置情况如下(后四行内容无需修改):clie
14、nt_ID=App key的值client_SERCRET =App Secret的值redirect_URI =应用成功发布在新浪微博的对应的实际地址的值,本次实验设计这里应该填写的是南华大学官网的网址。配置好config.properties里面的参数值后,编译运行weibo4j-oauth2工程下examples里weibo4j.examples.oauth2中的OAuth4Code.java文件,此时浏览器会跳转到授权界面,并成功地自动跳转到南华大学官网的首页,在地址栏中会有出现一个code值,如图1.5所以:图1.5 获取到的code值此时,将该code值复制到Eclipse的con
15、sole窗口中,按enter键继续便可以获得access_token的值,此值相当于一个访问令牌,拥有此认证码相当于微博账号得到了微博系统的认可和授权,便拥有了对微博系统的一些操作的权限。运行结果如图1.6所示:图1.6 获取到的access_token值在weibo4j-oauth2工程中创建一个文件输出的java文件:FileOutputUtil.java,内容如下:package com.test;import java.io.File;import java.io.FileWriter;import java.io.IOException;import com.sun.org.apac
16、he.bcel.internal.generic.NEW;public class FileOutputUtil /private static int count=0;private static long count= System.currentTimeMillis();public static void printToFile(String str)String fileName = C:UserssmiaoDesktopbeyeshejidataweibo + +count + .txt;File file = new File(fileName);FileWriter fw=nu
17、ll;try fw = new FileWriter(file);fw.write(str); catch (IOException e) e.printStackTrace();finallyif(fw!=null)try fw.close(); catch (IOException e) e.printStackTrace();接着修改weibo4j.examples.timeline中的GetFriendsTimeline.java里面的传递参数,编译运行GetFriendsTimeline.java,便可以在配置的本机目录下找到抓取到的微博数据。由于微博系统封闭了开放中的一些接口,所以
18、在此所获取的是授权了的自己账号的微博用户首页中的所有微博数据。部分实验结果如图1.7所示。图1.7 获取下来的微博数据 这样,通过运用软件开发包就成功的获取到了微博数据。其中南华大学官方微博4月24号所发的一条微博数据的格式内容如下表1.1所示: 表1.1 一条微博数据Status user=User id=5078502209, screenName=南华大学, name=南华大学, province=43, city=1000, location=湖南, description=南华大学是由工业和信息化部、国家国防科技工业局、中国核工业集团公司与湖南省人民政府共建,具有56年办学历史的综合
19、性大学。, url=,profileImageUrl= userDomain=uscnews, gender=m, followersCount=279, friendsCount=91, statusesCount=26, favouritesCount=0, createdAt=Wed Mar 19 11:26:09 CST 2014, following=true, verified=true, verifiedType=4, allowAllActMsg=false, allowAllComment=true, followMe=false, avatarLarge= onlineSt
20、atus=0, status=null, biFollowersCount=70, remark=null, lang=zh-cn, verifiedReason=南华大学官方微博, weihao=, statusId=, idstr=3702851022897155, createdAt=Thu Apr 24 11:59:02 CST 2014, id=3702851022897155, text=追梦青春:聚光灯下的舞蹈精灵 - 人物 - 湖南图片网-湖南图片库 , source=Source url= relationShip=nofollow, name=百度分享, favorited
21、=false, truncated=false, inReplyToStatusId=-1, inReplyToUserId=-1, inReplyToScreenName=, thumbnailPic=, bmiddlePic=, originalPic=, retweetedStatus=null, geo=null, latitude=-1.0, longitude=-1.0, repostsCount=0, commentsCount=0, mid=3702851022897155, annotations=, mlevel=0, visible=Visible type=0, lis
22、t_id=01.3 本章小结由于新浪的微博开放平台中提供的有软件开发包,所以可使用其来获取实验设计所需的微博数据,降低了数据获取的难度。但由于新浪为保护用户隐私以及系统安全,只提供开放了部分接口,所以本实验设计中所获取的数据是自己授权账号首页中的微博数据,数据有限。另外,在数据获取的整个过程中一些细节方面一定要仔细认真,尽量避免不必要的错误的出现。如:创建应用时回调地址的填写;config.properties里面的参数值的配置等。第二章 微博数据转换2.1 微博数据分析对于所获取的微博数据,想要将其转换成RDF文件,首先要做的一个工作是对数据进行必要的分析,弄清楚每个参数指代的意思,这样才能
23、清楚的知道数据中包含了一条微博的哪些相关信息量以及相关信息量之间的关系与结构,这样有利于其中重要信息的提取以及数据转换成RDF文件的过程的实现。其中,数据主要信息分析结果如下表2.1所示:表2.1 数据分析结果id用户IDscreenName微博昵称description个人描述followersCount粉丝数friendsCount关注数statusesCount微博数favouritesCount收藏数verified加V标示,是否微博认证用户status用户最新一条微博verifiedReson认证原因statusIdstatus ididstatus idtext微博内容source
24、微博来源repostsCount转发数commentsCount评论数mid微博MID2.2 微博数据转换2.2.1 RDF简介资源描述框架(Resource Description Framework, 简称RDF)是一种表达和描述Web上资源信息的比较灵活的数据模型13141516,如图2.1所示。它是衍生自XML的一种结构。作为语义网中资源的描述标准,RDF 定义了一种通用框架,即资源(resources)、属性(attributes)、属性值(attribute values)的三元组,类似于一个句子的主语(subject)、谓语(predicate)、宾语(object)的结构17。
25、其以XML为语法,用统一资源标识符URI(Uniform Resource Identifiers)来标识事物,用较简单的属性和属性值描述Web上的资源,其中资源是可拥有URI的任何事物18。 图2.1 RDF数据模型为了加深对RDF三元组的理解,这里举一个简单的列子:句子陈述:“The title of is 南华大学-University of South China.”句子的主体为: 谓词为:title客体为:南华大学-University of South China此陈述也可以用RDF图来表示,其中主体用一个节点来表示,客体也用一个节点来表示。谓词则可以用一条由主语指向宾语的弧来表示
26、。如图2.2所示:图2.2 RDF图 对应的RDF文档为: rdf:Description rdf:about= 南华大学-University of South China 使用W3C组织提供的RDF文件在线验证器对其验证,可得如图2.3所示验证结果。通过验证结果可以看出该RDF文档其实描述的也就是“The title of is 南华大学-University of South China.”的意思。其中在线验证器的网址为:http:/www.w3.org/RDF/Validator/。图2.3 验证结果2.2.2 微博数据转换的实现2.2.2.1 RDF schema设计对于通过新浪微博
27、开放平台获取的微博数据信息数据量比较的多和杂,所以在对数据进行转换时,为降低实验设计的复杂性,可以适当舍去一些不重要的信息量,而只提取其中重要关键的信息量。在本文设计中,提取的信息有:用户id,微博昵称(screenName),个人描述(description),粉丝数(followersCount),关注数(friendsCount),微博数(statuesCount),收藏数(favouritesCount),是否是认证用户(verified),认证原因(verifiedResonance),微博id,微博内容(text),微博内容来源(resource),微博转发数(repostsCou
28、nt),微博评论数(commentsCount)。为能很好的呈现出各信息之间的关系,以便数据转换过程的顺利实现,首先设计相应数据的RDF schema,如图2.4所示: 图2.4 RDF图 在图2.4中,使用了两个没有URIref的空节点(两个小的绿色小椭圆),虽然这两个节点没有URIref,但是它们都表达了它们应该表达的含义,而且起到了将图中各个部分之间连通的必要作用。如第一个空节点表示的就是“用户的微博”这一概念,第二个空表示的就是“微博影响力”这一概念。 根据图2.4所示内容可以写出相应的三元组,如表2.2所示:表2.2 一条微博对应的RDF三元组Weibo:5018502209user
29、:id“5018502209”Weibo:5018502209user:screenName“南华大学”Weibo:5018502209user:description“南华大学是由工业和信息化部、国家国防科技工业局、中国核工业集团公司与湖南省人民政府共建,具有56年办学历史的综合性大学。”Weibo:5018502209user:verified“true”Weibo:5018502209user:verifiedReason“南华大学官方微博”Weibo:5018502209user:followersCount“279”Weibo:5018502209user:friendsCount“
30、91”Weibo:5018502209user:statusesCount“26”Weibo:5018502209user:favouritesCount“0”Weibo:5018502209user:txt_:a_:atxt:id3702851022897155_:atxt:text“追梦青春:聚光灯下的舞蹈精灵 - 人物 - 湖南图片网-湖南图片库 _:atxt:sourcerdf:resource_:atxt:influence_:b_:btxt:repostsCount“0”_:btxt:commentsCount“0”在表2.2中,“_:a”和“_:b”分别表示的是图2.4中出现的两
31、个空节点,它们在表中出现的地方就是空节点出现的地方。2.2.2.2 程序实现微博数据转换在清楚数据信息及信息关系之后,可用RDF/XML语法对图2.4所示内容描述如下:1 2 rdf:RDF 3 xmlns:rdf=http:/www.w3.org/1999/02/22-rdf-syntax-ns#4 xmlns:user=5 xmlns:txt= 6 rdf:Description rdf:about=7 50785022098 南华大学9 南华大学是由工业和信息化部、国家国防科技工业局、中国核10 工业集团公司与湖南省人民政府共建,具有56年办学历史的综合性大学。 11 12 27914
32、9115 2616 017 true18 南华大学官方微博19 20 21 22 370285102289715523 追梦青春:聚光灯下的舞蹈精灵 - 人物 - 湖南图片网-湖南图片库 24 25 txt:source rdf:resource=26 27 28 29 030 031 32 (注:行号的加入是为了便于解释理解此RDF例子,RDF文件中本身并不包含有行号)第1行是XML声明,它表示以下内容将是XML,而且XML的版本号是1.0。第2行以rdf:RDF元素开始,它表示以下内容用于表达RDF,直到第32行的结束。第3-5行为XML命名空间声明。其中xmlns:rdf表明当前内容中出
33、现的所有前缀为rdf:的标签都属于由下列URIref所标识的命名:http:/www.w3.org/1999/02/22-rdf-syntax-ns#。另外xmlns:user和xmlns:txt是自己自定义的两个命名空间声明。第6-31行为图2.2所示内容的RDF/XML主要部分。第6行表示对资源(微博用户) 对于编写好的RDF文件,为验证其正确性使用W3C组织提供的在线验证器对其验证。通过在线验证器可以验证出编写的RDF可以被解析成功,验证结果如图2.5所示:图2.5 验证结果确定好一条微博数据转换成RDF文件的格式后,对于很多条微博数据的处理就可以通过编程的方法来处理。在编程实现的过程中
34、,为减少对数据的再次读入,可直接在weibo4j-oauth2工程调用获取到的微博数据的相关参数,后再写入RDF文件中。这样就可实现微博数据转换成RDF文件的过程。其中程序伪代码描述如下:定义一个XML文档;建立XML文档的根rdf:RDF;添加三个命名空间;读取第一条微博ID,建立rdf:Description节点;建立该条微博剩下所有需建立的节点;循环处理接下来读取到的每一条微博;获得的RDF文件没有智能分行,数据看上去也比较的乱,这时可使用Eclipse中的插件 aptana 来解决这一问题,若Eclipse中没有则需要下载安装。程序代码和转换成功的全部RDF文件见附录一与附录二。获得RDF文件的部分数据如下:rdf:Description rdf:about=1272752967杨舒婷Sweet工作请洽经理人:赵天 271889854,微博赵天994745184281753369true演员3705427508046214五一快乐!鲜花太开心太开心太开心txt:source rdf:resource=02rdf:Description rdf:about=1195242865杨幂user:descrip