python中用rdflib生成rdf,用sparql查询

xiaoxiao2021-02-28  71

根据原作者:利用RDFLib的SPARQL进行查询的一个例子进行了改写。 其他资料: rdflib中SPARQL如何判断得到的结果为空 使用 SPARQL 查询 RDF Python RDF知识库查询

接下来,上我的代码~ 其实,根据三元组的模式

# coding:utf-8 import rdflib def create(): g = rdflib.Graph() has_border_with = rdflib.URIRef('http://www.example.org/has_border_with') located_in = rdflib.URIRef('http://www.example.org/located_in') ############## germany = rdflib.URIRef('http://www.example.org/country1') france = rdflib.URIRef('http://www.example.org/country2') china = rdflib.URIRef('http://www.example.org/country3') mongolia = rdflib.URIRef('http://www.example.org/country4') ############## europa = rdflib.URIRef('http://www.example.org/part1') asia = rdflib.URIRef('http://www.example.org/part2') ############## g.add((germany, has_border_with, france)) g.add((china, has_border_with, mongolia)) g.add((germany, located_in, europa)) g.add((france, located_in, europa)) g.add((china, located_in, asia)) g.add((mongolia, located_in, asia)) ############## # c3,has,c4 # c3,loc,p2 g.serialize("graph.rdf") def query(): g = rdflib.Graph() g.parse("graph.rdf", format="xml") ################################ # <a,?,?> q = "select ?relation ?part where { <http://www.example.org/country1> ?relation ?part}" x = g.query(q) t = list(x) ##### 二维 # print(t[0][0]) # http://www.example.org/has_border_with # print(t[0][1]) # http://www.example.org/part1 print(len(t)) #没有,则=0 print(t[0]) # <?,b,?> q = "select ?country ?part where {?country <http://www.example.org/located_in> ?part}" x = g.query(q) t = list(x) print(len(t)) print(t[0]) # <?,?,c> q = "select ?country ?relation where {?country ?relation <http://www.example.org/part1>}" x = g.query(q) t = list(x) print(len(t)) print(t[0]) ################################ # <a,b,?> q = "select ?part where {<http://www.example.org/country1> <http://www.example.org/located_in> ?part}" x = g.query(q) t = list(x) ######二维: n*1 print(len(t)) # print(t[0][0]) # http://www.example.org/part1 print(t[0]) # <a,?,c> # <?,a,b> if __name__ == "__main__": create() query()

graph.rdf:

<?xml version="1.0" encoding="UTF-8"?> <rdf:RDF xmlns:ns1="http://www.example.org/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" > <rdf:Description rdf:about="http://www.example.org/country3"> <ns1:located_in rdf:resource="http://www.example.org/part2"/> <ns1:has_border_with rdf:resource="http://www.example.org/country4"/> </rdf:Description> <rdf:Description rdf:about="http://www.example.org/country1"> <ns1:has_border_with rdf:resource="http://www.example.org/country2"/> <ns1:located_in rdf:resource="http://www.example.org/part1"/> </rdf:Description> <rdf:Description rdf:about="http://www.example.org/country2"> <ns1:located_in rdf:resource="http://www.example.org/part1"/> </rdf:Description> <rdf:Description rdf:about="http://www.example.org/country4"> <ns1:located_in rdf:resource="http://www.example.org/part2"/> </rdf:Description> </rdf:RDF>
转载请注明原文地址: https://www.6miu.com/read-2632743.html

最新回复(0)