rdf - 如何通过 rdflib 获取 XML 属性
问题描述
我有一个包含以下内容的 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
,但我没有找到获取它的方法。该文档也不承认 BNodes 上的 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的问题,它只是不尊重你给它的标识符。查看有关此问题的更多信息。
我会建议
一世。使用支持空白节点保存的不同图形数据库
ii. 使用 XML 解析器
iii. 将空白节点提升为rdf:resource
推荐阅读
- c++ - 尝试使用 C++ 从列表中打印无效的电子邮件地址?
- python - Pyinstaller python to .exe;如何解决此问题?
- pandas - Networkx:着色时网络中的节点消失
- sql - ORA-30929: 此处不允许使用 ORDER SIBLINGS BY 子句
- css - CSS 掩码元素仅位于其顶部的位置
- node.js - webpackdevserver 监听回调没有被调用
- python - 检查日期是否在熊猫合并的范围内
- javascript - 如果用户在 AWS Cognito TOTP AssociateSoftwareToken MFA 有效禁用后退出应用程序
- ruby-on-rails - 在rails中以单一形式更新表中的多个记录?
- kotlin - 2x NavHostFragments 在 LayoutInspector 中可见,但在我的布局中只有 1 个