RDFLib是一个用于处理RDF(一种简单而强大的表示信息语言)的Python库。
项目描述
RDFLib
RDFLib是一个用于处理RDF的纯Python包。RDFLib包含处理RDF所需的大部分功能,包括
- RDF/XML、N3、NTriples、N-Quads、Turtle、TriX、Trig和JSON-LD的解析器和序列化器
- 一个可以由多种存储实现之一支持的图形界面
- 内存、持久存储(Berkeley DB)和远程SPARQL端点的存储实现
- SPARQL 1.1实现 - 支持SPARQL 1.1查询和更新语句
- SPARQL函数扩展机制
RDFlib系列包
RDFlib社区维护了许多具有不同目的的RDF相关Python代码仓库。例如
- rdflib - RDFLib核心
- sparqlwrapper - 简单的Python包装器,用于远程执行SPARQL服务查询
- pyLODE - 基于LODE的OWL本体文档工具,使用Python和模板
- pyrdfa3 - RDFa 1.1蒸馏/解析库:可以从(X)HTML、SVG或XML中提取RDFa 1.1/1.0。
- pymicrodata - 从带有微数据的HTML5页面中提取RDF的模块
- pySHACL - 一个纯Python模块,允许对RDF图进行SHACL图的验证
- OWL-RL - OWL2 RL配置文件的简单实现,通过所有OWL RL定义的可能三元组扩展图
请在此处查看所有包/仓库列表
欢迎并感谢对RDFLib系列包的维护支持。
版本 & 发布
7.1.0a0
当前main
分支。7.x.y
当前发布版本,仅支持Python 3.8.1+。- 请参阅发布
6.x.y
仅支持Python 3.7+。相较于5.0.0版本有很多改进- 请参阅发布
5.x.y
支持Python 2.7和3.4+,与4.2.2版本基本兼容。
请参阅https://rdflib.dev了解发布概览。
文档
请参阅https://rdflib.readthedocs.io查看从代码构建的文档。请注意,有latest
、stable
5.0.0
和4.2.2
文档版本,与发布版本相匹配。
安装
可以使用Python的包管理工具pip安装RDFLib的稳定发布版本
$ pip install rdflib
或者,您可以手动从Python包索引(PyPI)下载包,地址为https://pypi.python.org/pypi/rdflib
RDFLib当前版本为7.0.0,请参阅CHANGELOG.md
文件了解本版本的更新内容。
安装当前主分支(适用于开发者)
您可以使用pip通过以下任一选项从git仓库安装rdflib:
$ pip install git+https://github.com/rdflib/rdflib@main
或者
$ pip install -e git+https://github.com/rdflib/rdflib@main#egg=rdflib
或者从您本地克隆的仓库,您可以使用以下任一选项安装它:
$ poetry install # installs into a poetry-managed venv
或者
$ pip install -e .
入门
RDFLib旨在成为一个Pythonic的RDF API。RDFLib的主要数据对象是Graph
,它是一个包含RDF Subject, Predicate, Object 三元组的Python集合
创建图,然后从DBPedia加载数据,最后打印结果
from rdflib import Graph
g = Graph()
g.parse('http://dbpedia.org/resource/Semantic_Web')
for s, p, o in g:
print(s, p, o)
三元组的组件是URI(资源)或文字(值)。
URI通过命名空间分组,RDFLib包含了常见的命名空间
from rdflib.namespace import DC, DCTERMS, DOAP, FOAF, SKOS, OWL, RDF, RDFS, VOID, XMLNS, XSD
您可以使用它们这样做
from rdflib import Graph, URIRef, Literal
from rdflib.namespace import RDFS, XSD
g = Graph()
semweb = URIRef('http://dbpedia.org/resource/Semantic_Web')
type = g.value(semweb, RDFS.label)
其中RDFS
是RDFS命名空间,XSD
是XML Schema Datatypes命名空间,g.value
返回给定三元组模式的对象(如果有多个,则为任意一个)。
或者这样做,向图g
添加一个三元组
g.add((
URIRef("http://example.com/person/nick"),
FOAF.givenName,
Literal("Nick", datatype=XSD.string)
))
以下三元组(以n-triples格式表示)<http://example.com/person/nick> <http://xmlns.com/foaf/0.1/givenName> "Nick"^^<http://www.w3.org/2001/XMLSchema#string> .
已创建,其中属性 FOAF.givenName
的URI为 <http://xmlns.com/foaf/0.1/givenName>
,而 XSD.string
的URI为 <http://www.w3.org/2001/XMLSchema#string>
。
您可以将命名空间绑定到前缀,以缩短RDF/XML、Turtle、N3、TriG、TriX和JSON-LD序列化的URI。
g.bind("foaf", FOAF)
g.bind("xsd", XSD)
这将允许上述n-triples三元组以如下方式序列化
print(g.serialize(format="turtle"))
得到以下结果
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
<http://example.com/person/nick> foaf:givenName "Nick"^^xsd:string .
还可以定义新的命名空间
dbpedia = Namespace('http://dbpedia.org/ontology/')
abstracts = list(x for x in g.objects(semweb, dbpedia['abstract']) if x.language=='en')
另请参阅 ./examples
特性
该库包含RDF/XML、N3、NTriples、N-Quads、Turtle、TriX、JSON-LD、RDFa和Microdata的解析器和序列化器。
该库提供了一个Graph接口,该接口可以由任何一种Store实现支持。
此核心RDFLib包包括内存存储和基于Berkeley DB的持久存储的store实现。
包括SPARQL 1.1实现,支持SPARQL 1.1查询和更新语句。
RDFLib是开源的,并由GitHub维护。RDFLib的当前和以前版本在PyPI上列出。
RDFlib "家族"中包含多个其他项目,请参阅https://github.com/RDFLib/。
运行测试
在主机上运行测试
使用pytest
运行测试套件。
poetry install
poetry run pytest
在主机上运行测试覆盖率并生成覆盖率报告
使用pytest
和pytest-cov
运行测试套件并生成HTML覆盖率报告。
poetry run pytest --cov
查看测试覆盖率
一旦测试生成了覆盖率报告的HTML输出,通过运行以下命令查看它
poetry run pytest --cov --cov-report term --cov-report html
python -m http.server --directory=htmlcov
贡献
RDFLib通过用户贡献而生存和成长!请阅读我们的贡献指南和开发者指南以开始。请考虑在这里提交Pull Requests
要获取开发环境,请考虑使用Gitpod或Google Cloud Shell。
您还可以在这里提出问题
支持 & 联系方式
对于一般的“我该如何...”查询,请使用https://stackoverflow.com并在您的问题中添加rdflib
标签。现有问题
如果您想联系rdflib维护者,请通过以下方式联系
- rdflib-dev邮件列表: https://groups.google.com/group/rdflib-dev
- 聊天,可在gitter或通过matrix #RDFLib_rdflib:gitter.im获得。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。