44次发布
新 0.4.0-alpha.8 | 2024年8月22日 |
---|---|
0.4.0-alpha.7 | 2024年5月22日 |
0.4.0-alpha.6 | 2024年3月25日 |
0.3.22 | 2023年12月1日 |
0.1.1 | 2020年8月14日 |
#5 in 数据库实现
819 每月下载量
用于 8 crates
5MB
104K SLoC
Oxigraph
Oxigraph是一个实现了SPARQL标准的图数据库库。
它的目标是提供一个符合标准、安全且快速的磁盘图数据库。它还提供了一组用于读取、写入和处理RDF文件的工具函数。
Oxigraph正处于积极开发中,SPARQL查询评估尚未优化。
Oxigraph还提供基于此库的命令行工具和Python库。
Oxigraph实现了以下规范
- SPARQL 1.1 查询、SPARQL 1.1 更新 和 SPARQL 1.1 联邦查询。
- Turtle、TriG、N-Triples、N-Quads 和 RDF/XML RDF序列化格式,用于数据摄取和检索。
- SPARQL查询结果XML格式、SPARQL 1.1查询结果JSON格式 和 SPARQL 1.1查询结果CSV和TSV格式。
提供了一个初步的基准测试 在这里。Oxigraph的内部设计在维基百科上进行了描述。
Oxigraph的主要入口点是Store
结构体
use oxigraph::store::Store;
use oxigraph::model::*;
use oxigraph::sparql::QueryResults;
let store = Store::new().unwrap();
// insertion
let ex = NamedNode::new("http://example.com").unwrap();
let quad = Quad::new(ex.clone(), ex.clone(), ex.clone(), GraphName::DefaultGraph);
store.insert(&quad).unwrap();
// quad filter
let results = store.quads_for_pattern(Some(ex.as_ref().into()), None, None, None).collect::<Result<Vec<Quad>,_>>().unwrap();
assert_eq!(vec![quad], results);
// SPARQL query
if let QueryResults::Solutions(mut solutions) = store.query("SELECT ?s WHERE { ?s ?p ?o }").unwrap() {
assert_eq!(solutions.next().unwrap().unwrap().get("s"), Some(&ex.into()));
}
它基于以下可以单独使用的crate
oxrdf
,数据结构编码RDF基本概念(oxigraph::model
模块)。oxrdfio
,一个用于RDF格式的统一解析器和序列化API(oxigraph::io
模块)。它本身依赖于spargebra
,一个SPARQL解析器。sparesults
,SPARQL结果格式的解析器和序列化器(oxigraph::sparql::results
模块)。sparopt
,一个SPARQL优化器。oxsdatatypes
,一些XML Schema数据类型的实现。
要在本地构建库,请务必使用git clone --recursive https://github.com/oxigraph/oxigraph.git
克隆包括子模块的仓库,或者使用git submodule update --init
将子模块添加到已克隆的仓库中。
可以通过禁用rocksdb
默认特性来禁用RocksDB存储后端,仅使用内存回退。
oxigraph = { version = "*", default-features = false }
这是将Oxigraph编译为WASM时的默认行为。
许可证
此项目根据您的选择受以下其中之一许可:
- Apache License,版本2.0(LICENSE-APACHE或
<http://www.apache.org/licenses/LICENSE-2.0>
) - MIT许可(LICENSE-MIT或
<http://opensource.org/licenses/MIT>
)
。
贡献
除非您明确声明,否则根据Apache-2.0许可证定义的,您提交给Oxigraph的任何有意贡献都应如上所述双重许可,不附加任何额外条款或条件。
依赖关系
~6–19MB
~276K SLoC