将JSON数据转存为RDF格式文件+RDF知识库查询
本文将实现JSON数据到RDF格式文件的转化,并基于RDF知识库进行查询,从而实现一个简易的知识图谱。
本文采取的数据是openkg上的微观经济学知识库,microeco.json。
首先实现JSON到RDF的转化
import json import rdflib with open("microeco.json","rb") as jsonfile: data=json.load(jsonfile) gg=rdflib.Graph() for i in range(0,len(data)): txt=data[i] try: s=rdflib.URIRef('http://www.openkg.cn/dataset/microeconomy/' + txt['subject']) p=rdflib.URIRef('http://www.openkg.cn/dataset/microeconomy/'+txt['relation']) o=rdflib.URIRef('http://www.openkg.cn/dataset/microeconomy/'+txt['object']) gg.add((s,p,o)) except Exception as e: pass gg.serialize('data.rdf') jsonfile.close()
转化后的文件截图如下:
基于RDF知识库进行查询
import rdflib import re gg=rdflib.Graph() gg.parse("data.rdf",format="xml") while 1: print("please input the Subject words:") try: subject, predicate, object = eval(input()) data = ['', '', ''] if subject != '' and predicate == '' and object == '': q = "select ?predicate ?object where {<http://www.openkg.cn/dataset/microeconomy/" + subject + "> ?predicate ?object}" data[0] = subject x1 = gg.query(q) for i in range(len(list(x1))): s = str(list(x1)[i]) # .decode('unicode_escape') txt = re.findall(r'microeconomy/.*?\'', s) data[1] = txt[0][13:-1] data[2] = txt[1][13:-1] print(data[0], data[1], data[2]) except: pass
此时仅支持输入主语时的查询。效果如下:
其实,这个称之为知识图谱终究是太简化了些,不过倒是对知识图谱的真正操作有个非常好的开始了
下一步的话,就是以本文工作为基点的前期工作和后续工作了
前期工作就是从文本提取整理成结构话的数据JSON或RDF,当然最后大多还是要转成RDF。这也是比较重要的部分。
后续工作便是对于查询结果的可视化。再接再厉!
数据及代码:点击下载
参考:
http://blog.csdn.net/headwind_/article/details/70148539
http://blog.csdn.net/headwind_/article/details/70234169
http://blog.csdn.net/headwind_/article/details/70234546