如何通过 rdflib 获取 XML 属性
How to get XML Attributes via rdflib
我有一个包含以下内容的 rdf 文件:
<?xml version="1.0" encoding="utf-8"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
>
<rdf:Description rdf:about="http://someurl.com/def/elementtype/projectState">
<rdfs:domain rdf:nodeID="projectState_0" />
</rdf:Description>
</rdf:RDF>
由以下代码解析:
import rdflib
g = rdflib.Graph()
with open("problem/err.rdf", 'r', encoding='UTF-8') as fp:
g.load(fp, format='application/rdf+xml')
for s, p, o in g:
print(f"subject:{s}")
print(f"predicate:{p}")
print(f"object:{o}")
print()
我希望谓词公开属性 nodeID
但我没有找到获取它的方法。该文档也不承认 BNode 上的 xml 属性(没有内容的空白节点)。
通常不承诺在导入图形时保留空白节点主题(一些图形数据库如 GraphDB 确实提供了选项)。当我第一次 运行 代码时,输出是
subject:http://someurl.com/def/elementtype/projectState
predicate:http://www.w3.org/2000/01/rdf-schema#domain
object:N4ae82de375104726a1a2e5344ee6a44e
当我第二次运行时,输出是
subject:http://someurl.com/def/elementtype/projectState
predicate:http://www.w3.org/2000/01/rdf-schema#domain
object:N79f7d744f68f439388484f02a9367be5
所以关于公开 nodeId 的问题,它只是不尊重你给它的标识符。查看有关 this 问题的更多信息。
我会建议
我。使用不同的支持空白节点保存的图数据库
二。使用 XML 解析器
三。将空白节点提升为 rdf:resource
我有一个包含以下内容的 rdf 文件:
<?xml version="1.0" encoding="utf-8"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
>
<rdf:Description rdf:about="http://someurl.com/def/elementtype/projectState">
<rdfs:domain rdf:nodeID="projectState_0" />
</rdf:Description>
</rdf:RDF>
由以下代码解析:
import rdflib
g = rdflib.Graph()
with open("problem/err.rdf", 'r', encoding='UTF-8') as fp:
g.load(fp, format='application/rdf+xml')
for s, p, o in g:
print(f"subject:{s}")
print(f"predicate:{p}")
print(f"object:{o}")
print()
我希望谓词公开属性 nodeID
但我没有找到获取它的方法。该文档也不承认 BNode 上的 xml 属性(没有内容的空白节点)。
通常不承诺在导入图形时保留空白节点主题(一些图形数据库如 GraphDB 确实提供了选项)。当我第一次 运行 代码时,输出是
subject:http://someurl.com/def/elementtype/projectState
predicate:http://www.w3.org/2000/01/rdf-schema#domain
object:N4ae82de375104726a1a2e5344ee6a44e
当我第二次运行时,输出是
subject:http://someurl.com/def/elementtype/projectState
predicate:http://www.w3.org/2000/01/rdf-schema#domain
object:N79f7d744f68f439388484f02a9367be5
所以关于公开 nodeId 的问题,它只是不尊重你给它的标识符。查看有关 this 问题的更多信息。
我会建议
我。使用不同的支持空白节点保存的图数据库
二。使用 XML 解析器
三。将空白节点提升为 rdf:resource