如何使用SPARQL查询ttl文件?

时间:2019-09-11 17:30:20

标签: python sparql rdf rdflib

我正在尝试学习SPARQL,为此,我需要对本地ttl文件执行查询。我已经对此进行了研究,每个响应都说要使用rdflib,然后针对该查询运行查询。

这是我正在使用的示例ttl文件

# filename: ex002.ttl

@prefix ab: <http://learningsparql.com/ns/addressbook#> .

ab:richard ab:homeTel "(229) 276-5135" . 
ab:richard ab:email   "richard49@hotmail.com" . 

ab:cindy ab:homeTel "(245) 646-5488" . 
ab:cindy ab:email   "cindym@gmail.com" . 

ab:craig ab:homeTel "(194) 966-1505" . 
ab:craig ab:email   "craigellis@yahoo.com" . 
ab:craig ab:email   "c.ellis@usairwaysgroup.com" .

现在应该正常工作的python代码如下

filename = "C:/DataStuff/SemanticOntology/LearningSPARQLExamples/ex002.ttl" 
import rdflib
g = rdflib.Graph()

result = g.parse(filename, format='ttl')
print(result)
query = """
SELECT * WHERE {
        ?s ?p ?o .
}
"""

g.query(query)
for stmt in g:
    print(stmt)

不幸的是,每当到达g.query(query)时,我就会得到ModuleNotFoundError: No module named 'rdfextras'

好的-没问题。因此,我去conda-forge安装它,并说该软件包无法从当前渠道获得。

好的,很奇怪。因此,我进行了一些研究并发现了https://github.com/RDFLib/rdfextras 表示已停用,rdflib >=4不再需要。因此,我检查了rdflib的版本,它是4.2.2。显然,出了点问题,因为它不需要rdfextras

有两个问题-

  1. 如果我的rdflib >=4版本是为什么?
  2. 最终-这就是重点。我不在乎这种方法,所以我该如何使用python对本地ttl文件运行SPARQL查询(这种方式不需要我的计算机上的管理员权限)

谢谢。

1 个答案:

答案 0 :(得分:1)

我很抱歉-我刚到家并重新运行了查询,现在它似乎正在运行。我不知道从现在到大约2小时前有什么变化