将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

 

posted @ 2018-01-08 14:53  Hyacinth-Yuan  阅读(1351)  评论(0编辑  收藏  举报