使用前缀显示 rdflib 图中的实体

Moi*_*nac 5 python prefix rdflib

我正在使用 rdflib 将 RDF 图加载到 Python 脚本中 我想使用定义的前缀打印主题列表 我没有找到任何应​​用前缀的方法。我的代码

import rdflib
filepath = "... my file path ..."
gs = rdflib.Graph()
gs.bind('qs', "http://qs.org/")
gs.bind('foaf',"http://xmlns.com/foaf/0.1/")
gs.parse(filepath,format="nt")
mdstr = ""
for subject in gs.subjects():
    mdstr += str(subject) +"\n"
print(mdstr)
Run Code Online (Sandbox Code Playgroud)

例如,我得到 http://qs.org/s12095 代替 qs:s12095

kic*_*r86 0

相关 rdflib 文档。图中的前缀存储在其NamespaceManager对象中。要让 rdflib 打印前缀而不是完整的 IRI,您可以调用它的方法.n3(graph.namespace_manager)。所以对于你的情况,你可以这样做:

from rdflib import Namespace
from rdflib.namespace import NamespaceManager

# bind namespace to the graph or its namespace manager
graph.bind('qs', Namespace('http://qs.org/'))

# assuming entity is IRI http://qs.org/s12095
print(entity) # --> http://qs.org/s12095
print(entity.n3(graph.namespace_manager)) # --> qs:s12095
Run Code Online (Sandbox Code Playgroud)