python如何使用PROV数据溯源模型(含python代码)「建议收藏」

python如何使用PROV数据溯源模型(含python代码)「建议收藏」首先在python中导入prov模块,我用的是可能你因为版本不对无法导入包win+R输入cmdpipinstallprov[dot]我的这个显然是已经安装了的注意:运行代码的时候把编译器调整为fromprov.mod

首先在python 中导入prov模块

在这里插入图片描述
可能你因为版本不对无法导入包
win+R输入cmd

pip install prov[dot]

在这里插入图片描述我的这个显然是已经安装了的
注意:运行代码的时候把编译器调整为
在这里插入图片描述

代码实现

from prov.model import ProvDocument
d1=ProvDocument()
d1.add_namespace('now', 'http://www.provbook.org/nownews/')
d1.add_namespace('nowpeople', 'http://www.provbook.org/nownews/people/')
d1.add_namespace('bk', 'http://www.provbook.org/ns/#')
# 创建实体
e1 = d1.entity('now:employment-article-v1.html')
#创建代理
d1.agent('nowpeople:Bob')
# 把实体分给代理
d1.wasAttributedTo(e1,'nowpeople:BOb')
print(d1.get_provn())

输出结果如下,我们知道PROV模型是含有三个模块的,分别是entity,activity,agent,我们这里是创建一个为now的实体,然后将它转为为newpeople的代理。
在这里插入图片描述

from prov.model import ProvDocument
d1=ProvDocument()
d1.add_namespace('now', 'http://www.provbook.org/nownews/')
d1.add_namespace('nowpeople', 'http://www.provbook.org/nownews/people/')
d1.add_namespace('bk', 'http://www.provbook.org/ns/#')
# 创建实体
e1 = d1.entity('now:employment-article-v1.html')
#创建代理
d1.agent('nowpeople:Bob')
# 把实体分给代理
d1.wasAttributedTo(e1,'nowpeople:BOb')
#print(d1.get_provn())
# 我们创建一个新的实体govftp

d1.add_namespace('govftp', 'ftp://ftp.bls.gov/pub/special.requests/oes/')
d1.add_namespace('void', 'http://govftpvocab.deri.ie/void#')
# 'now:employment-article-v1.html' 被派生给数据集 govftp:oesm11st.zip
d1.entity('govftp:oesm11st.zip', { 
   'prov:label': 'employment-stats-2011', 'prov:type': 'void:Dataset'})
d1.wasDerivedFrom('now:employment-article-v1.html', 'govftp:oesm11st.zip')
print(d1.get_provn())

在这里插入图片描述

# 增加一个活动
d1.add_namespace('is', 'http://www.provbook.org/nownews/is/#')
d1.activity('is:writeArticle')
# 活动被govftp使用,被now继承
d1.used('is:writeArticle','govftp:oesmllst.zip')
d1.wasGeneratedBy('now:employment-article-v1.html','is:writeArticle')
print(d1.get_provn())

在这里插入图片描述

可视化

from prov.model import ProvDocument
from prov.dot import prov_to_dot
d1=ProvDocument()
d1.add_namespace('now', 'http://www.provbook.org/nownews/')
d1.add_namespace('nowpeople', 'http://www.provbook.org/nownews/people/')
d1.add_namespace('bk', 'http://www.provbook.org/ns/#')
# 创建实体
e1 = d1.entity('now:employment-article-v1.html')
#创建代理
d1.agent('nowpeople:Bob')
# 把实体分给代理
d1.wasAttributedTo(e1,'nowpeople:BOb')
#print(d1.get_provn())
# 我们创建一个新的实体govftp

d1.add_namespace('govftp', 'ftp://ftp.bls.gov/pub/special.requests/oes/')
d1.add_namespace('void', 'http://govftpvocab.deri.ie/void#')
# 'now:employment-article-v1.html' 被派生给数据集 govftp:oesm11st.zip
d1.entity('govftp:oesm11st.zip', { 
   'prov:label': 'employment-stats-2011', 'prov:type': 'void:Dataset'})
d1.wasDerivedFrom('now:employment-article-v1.html', 'govftp:oesm11st.zip')
#print(d1.get_provn())
# 增加一个活动
d1.add_namespace('is', 'http://www.provbook.org/nownews/is/#')
d1.activity('is:writeArticle')
# 活动被govftp使用,被now继承
d1.used('is:writeArticle','govftp:oesmllst.zip')
d1.wasGeneratedBy('now:employment-article-v1.html','is:writeArticle')
#print(d1.get_provn())

dot=prov_to_dot(d1)
#python现在的路径下多了一张图片,打开这张图片,如下图
dot.write_png('article-prov.png')
# 保存为PDF格式
dot.write_pdf('article-prov.pdf')

在这里插入图片描述

转为json 格式

print(d1.serialize(indent=2))

其中indent的值我试着换成1,3打印结果都是相同的
打印结果如下
{

“prefix”: {

“now”: “http://www.provbook.org/nownews/”,
“nowpeople”: “http://www.provbook.org/nownews/people/”,
“bk”: “http://www.provbook.org/ns/#”,
“govftp”: “ftp://ftp.bls.gov/pub/special.requests/oes/”,
“void”: “http://govftpvocab.deri.ie/void#”,
“is”: “http://www.provbook.org/nownews/is/#”
},
“entity”: {

“now:employment-article-v1.html”: {},
“govftp:oesm11st.zip”: {

“prov:label”: “employment-stats-2011”,
“prov:type”: “void:Dataset”
}
},
“agent”: {

“nowpeople:Bob”: {}
},
“wasAttributedTo”: {

:id1″: {

“prov:entity”: “now:employment-article-v1.html”,
“prov:agent”: “nowpeople:BOb”
}
},
“wasDerivedFrom”: {

:id2”: {

“prov:generatedEntity”: “now:employment-article-v1.html”,
“prov:usedEntity”: “govftp:oesm11st.zip”
}
}, “activity”: {

“is:writeArticle”: {}
},
“used”: {

:id3″: {

“prov:activity”: “is:writeArticle”,
“prov:entity”: “govftp:oesmllst.zip”
}
},
“wasGeneratedBy”: {

:id4”: {

“prov:entity”: “now:employment-article-v1.html”,
“prov:activity”: “is:writeArticle”
}
}
}

Process finished with exit code 0

将文档上传到provestore

注册一个provestore账号

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
from provstore.api import Api
api=Api(username=‘hhh’,api_key=‘e099ae5baf987768550192d50fc1cab1f2b2fbcf’)
stored_document = api.document.create(d1,name=“name”,public=False)
报错
在这里插入图片描述
方法和步骤都是参考官方文档来的,provestore是个外网,所以访问时间超时也是很正常的。
参考
https://github.com/trungdong/notebooks

今天的文章python如何使用PROV数据溯源模型(含python代码)「建议收藏」分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/86229.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注