python - 使用 python 的 rdflib 框架将三元组从列表添加到图形
问题描述
我正在尝试使用 python 的 rdflib 包将三元组添加到 Graph 中。这些关系以列表的形式提供(数据框中的特定列)
sampleRelations = ['similarTo', 'brotherOf', 'capitalOf']
g = Graph()
# general relations
gen = Namespace('http://abcd.com/general#')
g.bind('gen',gen)
# Adding predefined relationships
g.add( (gen.relatedTo, RDFS.subClassOf, OWL.ObjectProperty) )
这照常工作。但是,在遍历列表时:
for rel in sampleRelations:
g.add( ('gen.'+rel, RDFS.subClassOf, OWL.ObjectProperty) )
它抛出一个错误:“主题 %s 必须是 rdflib 术语”% (s,)。
relWithNamespace = gen+rel
print(relWithNamespace)
g.add( (relWithNamespace, RDFS.subClassOf, OWL.ObjectProperty) )
错误
AssertionError: Subject http://abcd.com/general#similarTo must be an rdflib term
我明白这个问题。我正在寻找可以规避这一点的指针。
解决方案
RDF terms can be of BNode, URI Reference or a Literal
sampleRelations = ['similarTo', 'brotherOf', 'capitalOf'`]
g = Graph()
# general relations
gen = Namespace('http://abcd.com/general#')
g.bind('gen',gen)
# Adding predefined relationships
g.add( (gen.relatedTo, RDFS.subClassOf, OWL.ObjectProperty) )
for rel in sampleRelations :
rel = URIRef('http://abcd.com/general#' + rel)
g.add((rel, RDFS.subClassOf, OWL.ObjectProperty))
URI Reference can be also done using:
for rel in sampleRelations :
g.add((gen.term(rel), RDFS.subClassOf, OWL.ObjectProperty))
or
for rel in sampleRelations :
g.add((gen[rel], RDFS.subClassOf, OWL.ObjectProperty))
推荐阅读
- c# - C# 在 DataGridView 上显示我的自定义控件,即使不编辑
- apache-spark - Pyspark 没有从 kafka 流中打印任何数据,也没有失败
- excel - 捕获列中的最后填充日期(VBA)
- discord - 如何将我的“检查”更改为不出错?
- swift - SwiftUI - 从嵌套子视图更改模型
- android - 如何在 React Native 中隐藏渲染元素?
- node.js - 有没有办法在 facebook messenger 聊天机器人上设置 cookie?
- css - 如何在 Rmarkdown Xaringan 代码块中包含不匹配的“]”?
- javascript - 链接预览不适用于 Telegram 和 Whatsapp
- ios - 如何使用 react-native-sensors 或 expo-sensor 计算 React Native 中的总旋转角度或旋转计数?