使用RDFLib迭代SPARQL查询

时间:2017-07-20 19:51:14

标签: python sparql rdflib

我有一个SPARQL查询,它检索链接到人体解剖学本体中的类的所有节点:

queryloop=graph.query("""SELECT ?node ?othernodes ?othernodesLabel WHERE { 
?node rdf:type owl:Class .
?node ?y ?othernodes .
?othernodes rdfs:label ?othernodesLabel
} 
LIMIT 100""")

我现在需要遍历结果并将标签分组到python字典中,以便密钥包含类的标签(?node),并且该值包含相邻节点的标签,因此对于本体中的每个类,都有一个字典键(对于每个键,存在与相邻类一样多的值)。我不知道变量绑定如何在rdflib中工作,所以我不知道如何在python中编写一个可以访问SPARQL查询的for循环。

1 个答案:

答案 0 :(得分:0)

正如AKSW所指出的,最简单的方法是在SPARQL查询中包含您想要传输到字典的任何元素,然后在将它们附加到字典之前将它们作为属性进行访问,如下所示:

queryloop=graph.query("""SELECT ?node ?nodelabel ?othernodes ?othernodesLabel     WHERE { 
?node rdf:type owl:Class .
?node ?y ?othernodes .
?othernodes rdfs:label ?othernodesLabel
?node rdfs:label ?nodeLabel
} 
LIMIT 100""")

dictlabels={}
for row in queryloop:
    dictlabels.update(row.node, row.nodeLabel: row.othernodes,row.othernodesLabel)

这样,您将节点及其标签作为键,并将所有相邻节点及其标签作为值。