python使用rdflib创建rdf,在jena fuseki上执行SPARQL查询

  1. 建立并启动jena fuseki服务
    参考:https://www.cnblogs.com/bincoding/p/11223372.html
  2. 使用rdflib创建rdf文件
import rdflib

def create_rdf():
    g = rdflib.Graph()
    # 实体
    pinganfu = rdflib.URIRef('http://www.example.org/pinganfu')
    yiwaixian = rdflib.URIRef('http://www.example.org/yiwaixian')
    # 关系
    price = rdflib.URIRef('http://www.example.org/price')
    product_from = rdflib.URIRef('http://www.example.org/from')
    # 属性
    price_100 = rdflib.URIRef('http://www.example.org/100')
    price_200 = rdflib.URIRef('http://www.example.org/200')
    from_paic = rdflib.URIRef('http://www.example.org/paic')
    from_pajiankang = rdflib.URIRef('http://www.example.org/pingan jiankangxian')
    g.add((pinganfu, price, price_100))
    g.add((yiwaixian, price, price_200))
    g.add((pinganfu, product_from, from_paic))
    g.add((yiwaixian, product_from, from_pajiankang))

    g.serialize("graph.rdf")

if __name__ == "__main__":
    create_rdf()
  1. jena fuseki导入生成的rdf文件,需要utf-8格式
    771778-20190722002835910-186780166.png

  2. 执行查询
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>

select *
where {
  ?product <http://www.example.org/price> ?price .
}

where里的三个值分别表示主谓宾
其中?product ?price表示需要展示的字段,http://www.example.org/price相当于sql中的where条件,查询谓语等于http://www.example.org/price的所有结果

查询结果
771778-20190722005931374-977001907.png
jena数据格式
771778-20190722010058343-889337534.png

参考:
https://blog.csdn.net/Oeljeklaus/article/details/65436866
https://www.w3.org/TR/sparql11-query/#WritingSimpleQueries

转载于:https://www.cnblogs.com/bincoding/p/11223575.html

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值