#sparql #triple #graph #resources #description #implemented #framework

rdf

rdf 是一个基于 Rust 实现的资源描述框架 (RDF) 和 SPARQL 的库

5 个版本

使用旧的 Rust 2015

0.1.4 2018 年 7 月 26 日
0.1.3 2018 年 5 月 28 日
0.1.2 2018 年 5 月 11 日
0.1.1 2018 年 3 月 20 日
0.1.0 2018 年 3 月 20 日

#961Web 编程

Download history 22/week @ 2024-03-14 22/week @ 2024-03-21 36/week @ 2024-03-28 24/week @ 2024-04-04 21/week @ 2024-04-11 23/week @ 2024-04-18 19/week @ 2024-04-25 14/week @ 2024-05-02 27/week @ 2024-05-09 25/week @ 2024-05-16 20/week @ 2024-05-23 26/week @ 2024-05-30 20/week @ 2024-06-06 22/week @ 2024-06-13 58/week @ 2024-06-20 23/week @ 2024-06-27

126 每月下载量
4 crates 中使用

MIT 许可证

160KB
3K SLoC

rdf-rs

注意:该项目仍在开发中,目前不稳定。

rdf 是一个用于资源描述框架 (RDF) 和 SPARQL 的库,由 Rust 实现。

该项目是我学习 Rust 并将其与我对语义网技术的兴趣相结合的一种方式。

基本示例

RDF 三元组可以存储并表示为图。

use rdf::graph::Graph;
use rdf::uri::Uri;
use rdf::triple::Triple;

let mut graph = Graph::new(None);
let subject = graph.create_blank_node();
let predicate = graph.create_uri_node(&Uri::new("http://example.org/show/localName".to_string()));
let object = graph.create_blank_node();
let triple = Triple::new(&subject, &predicate, &object);

graph.add_triple(&triple);

RDF 图可以序列化为支持的格式。

use rdf::writer::n_triples_writer::NTriplesWriter;
use rdf::writer::rdf_writer::RdfWriter;
use rdf::graph::Graph;
use rdf::uri::Uri;
use rdf::triple::Triple;

let writer = NTriplesWriter::new();

let mut graph = Graph::new(None);
let subject = graph.create_blank_node();
let predicate = graph.create_uri_node(&Uri::new("http://example.org/show/localName".to_string()));
let object = graph.create_blank_node();
let triple = Triple::new(&subject, &predicate, &object);

graph.add_triple(&triple);
assert_eq!(writer.write_to_string(&graph).unwrap(),
           "_:auto0 <http://example.org/show/localName> _:auto1 .\n".to_string());

RDF 语法也可以解析并转换为 RDF 图。

use rdf::reader::turtle_parser::TurtleParser;
use rdf::reader::rdf_parser::RdfParser;
use rdf::uri::Uri;

let input = "@base <http://example.org/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .

<http://www.w3.org/2001/sw/RDFCore/ntriples/> rdf:type foaf:Document ;
        <http://purl.org/dc/terms/title> \"N-Triples\"@en-US ;
        foaf:maker _:art .";

let mut reader = TurtleParser::from_string(input.to_string());
match reader.decode() {
  Ok(graph) => {
    assert_eq!(graph.count(), 3);
    assert_eq!(graph.namespaces().len(), 2);
    assert_eq!(graph.base_uri(), &Some(Uri::new("http://example.org/".to_string())))
  },
  Err(_) => assert!(false)
}

当前状态

目前 rdf-rs 提供了表示 RDF 图、三元组和节点的基礎数据结构。以下格式可以解析和序列化

  • Turtle
  • N-Triples

未来工作和想法

  • 支持使用 SPARQL 进行查询
  • 添加对更多格式的支持
  • 更全面的 Uri 数据结构

无运行时依赖