FOAF文件的清洗、检索、绘图

# 信息系统前沿课--范老师授课 #第二次作业## 一、重新使用Markdown ##熟悉语法,了解Markdown的用法,选择在线编辑工具简书进行编辑。## 二、回顾xml、rdf、Foaf###1、xml语言xml语言与HTML语言既相识有不同,在我的理解看来HTML语言更加注重的是简洁、规范化的网络设计语言,用来显示网页就好。xml语言我认为其复杂性是高于HTML语言的,设计其的主要作用应该是着重于对于其要表现的内容的数据表示。以后的可读性、迁移性、更新的难度应该要低一些。###2、rdf资源描述框架我觉得就是结构化的xml框架,能够描述xml文件中的各种数据区分数据与元数据。###3、Foaffoaf文件是一种 XML/RDF 词汇表,通过URL来找朋友,构建关联数据,然后形成一种人与人之间相互联系的社交网络的一种小工具。##三、清洗数据项目要求是清洗整理班级同学FOAF文件,使其符合RDF数据规范和关联数据发布原则,首先我根据要求找不到FOAF清洗,RDF规范检查的工具。所以我先退而求其次选择了xml检查工具,通过DTD的w3c在线检查工具检查并没有发现时什么问题。我发现就文件是否正确的角度来说中英文并没有检测出什么不同的地方。![image.png](http://upload-images.jianshu.io/upload_images/6083033-f85c897ee5c5c963.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)那么问题来了,范老师究竟是想要我们做什么样的数据清洗呢?我决定进一步的探索,我选择了网上推荐的一款开源编辑软件editix xml editor![image.png](http://upload-images.jianshu.io/upload_images/6083033-fd802430175afecc.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)安装后,新建工程并开始使用通过检测全部的文件我试图发现全班同学的rdf是否有问题![image.png](http://upload-images.jianshu.io/upload_images/6083033-bbe201de9b25b2c2.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)结果不出所料![](http://upload-images.jianshu.io/upload_images/6083033-d6c37bb8f6b0bf36.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)那么我想这里单单从语法、从用法的角度是没有必要清洗foaf数据的必要了,那么问题来了,我们该怎么做?我先分析了同学们的foaf文件发现有几点不同* 1、有的同学使用中文字符(其中中文字符在editxml中存在乱码现象----怀疑应该改成拼音或者英文表达)![image.png](http://upload-images.jianshu.io/upload_images/6083033-758698dd05fa57b2.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)* 2、有的同学认识的人数不同* 3、具体的在认识的人的标签下全部的同学都有范炜762ec4260f2e1f25685e918a2f8adf9da6712be0两个标签但是并不是所有的都有![image.png](http://upload-images.jianshu.io/upload_images/6083033-3b9c8705e7c22777.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)标签。去foaf网站查找后其实这本是![image.png](http://upload-images.jianshu.io/upload_images/6083033-5f11cba37f9d8293.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)针对以上的几点不同是我们需要优先考虑的清洗的部分。但是我发现还是没有什么问题,所以我决定不要信任软件的全部检查,一个个查看同学的foaf文件结果:软件真是不能相信的![image.png](http://upload-images.jianshu.io/upload_images/6083033-0c44216d521a248a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)![image.png](http://upload-images.jianshu.io/upload_images/6083033-36f2727953fc52a2.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)有的是少了person(06号)学号尾号是17的同学少了person![image.png](http://upload-images.jianshu.io/upload_images/6083033-6b49eff6fcd7f7d9.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)尾号为18的同学删除qq号后面数字后正常22号也是相同的问题经过长时间认真的筛查后,清洗foaf的工作圆满的完成了。##四、将FOAF文件存入RDF TripleStore下载apache jena .zip解压然后下载fusiki![image.png](http://upload-images.jianshu.io/upload_images/6083033-f79158402f51ca6e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)解压后打卡cmd![image.png](http://upload-images.jianshu.io/upload_images/6083033-0bc37e602c33dd08.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)![image.png](http://upload-images.jianshu.io/upload_images/6083033-6b284c4fe9bfd4b1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)打开localhost:3030,然后进行上传工作。![image.png](http://upload-images.jianshu.io/upload_images/6083033-2ad760024a49faf1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)![image.png](http://upload-images.jianshu.io/upload_images/6083033-568881e0b101766f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)然而在上传的时候出现了很多的错误。为什么呢,出现编码问题经过仔细的排查我发现有两个解决途径:1、将中文全部表示为英文标识2、通过notepad++将编码格式改变![image.png](http://upload-images.jianshu.io/upload_images/6083033-30aa7058ffdfe20c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)但是增加这一行后没有解决问题通过软件更改编码模式最后我通过更改编码格式来解决这个额问题![image.png](http://upload-images.jianshu.io/upload_images/6083033-c10f3807fb62751c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)都上传成功了点击edit![image.png](http://upload-images.jianshu.io/upload_images/6083033-dd63b4ac26cab681.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)点击info查看信息## 五、使用SPARQL语法进行简单查询SPARQL是为rdf开发的一种查询语言和数据获取协议,反正就把它当作关系型数据库的sql语言进行nosql数据库的查询。进行最简单的3元组查询![image.png](http://upload-images.jianshu.io/upload_images/6083033-5b0e771d65046bc4.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)调整limit可以改变查询获得的数量调整offset可以跳过开始的条数并且通过实验我发现大小写在sparql中都是可以的查询个人![image.png](http://upload-images.jianshu.io/upload_images/6083033-7eb865e76853cb9a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)![image.png](http://upload-images.jianshu.io/upload_images/6083033-fabeb25b212e5ade.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)在我看来这个data文件形成了一个大表,把所有foaf文件链接起来![image.png](http://upload-images.jianshu.io/upload_images/6083033-d2e70c9137e288c7.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)接下来查询失败![ ](http://upload-images.jianshu.io/upload_images/6083033-5c047bb54231ab5e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)查询名字(宾语部分)![image.png](http://upload-images.jianshu.io/upload_images/6083033-d9b3ef3aa0fd506c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)##六、补充相关数据,建立数据关联。这里我查询了一下并没有具体的做法。1、创建新的节点2、通过D2R服务器在语义Web上发布关系数据库的工具##七、建立可视化关系图![image.png](http://upload-images.jianshu.io/upload_images/6083033-f88330ba175c8bb6.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)![image.png](http://upload-images.jianshu.io/upload_images/6083033-d77307d2839a3c4c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)然而下载失败使用另外一个软件![image.png](http://upload-images.jianshu.io/upload_images/6083033-608f6d4bda9c0f4f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)再次更换技术路线使用progege![image.png](http://upload-images.jianshu.io/upload_images/6083033-1e2721f7d5468b3d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)在Protege中应该是不能编辑OWL代码的,但可以生成或导出OWL、RDF代码。如果想直接编辑OWL代码,然后在针对这种可视化的语言进行操作。

推荐阅读更多精彩内容