#serialization #semantic-web #rdf #macro-derive

linked-data

Linked-Data 数据集序列化和反序列化特质

2 个版本

0.1.2 2024年3月25日
0.1.1 2024年3月25日
0.1.0 2024年3月22日

#418编码

Download history 20/week @ 2024-04-14 8/week @ 2024-04-21 7/week @ 2024-04-28 2/week @ 2024-05-05 11/week @ 2024-05-12 58/week @ 2024-05-19 49/week @ 2024-05-26 94/week @ 2024-06-02 49/week @ 2024-06-09 77/week @ 2024-06-16 139/week @ 2024-06-23 89/week @ 2024-06-30 158/week @ 2024-07-07 82/week @ 2024-07-14 105/week @ 2024-07-21 414/week @ 2024-07-28

765 每月下载量
42 crate(23 个直接使用)中使用

MIT/Apache

115KB
3.5K SLoC

Linked-Data 序列化和反序列化原语

GitHub Actions Workflow Status Crate informations Crates.io MSRV License Documentation

此库提供了用于序列化和反序列化Linked-Data类型的原始特质。它附带 derive 宏(使用 derive 功能),可以自动为您实现这些原始特质。

示例

use iref::IriBuf;
use static_iref::iri;

#[derive(linked_data::Serialize, linked_data::Deserialize)]
#[ld(prefix("ex" = "http://example.org/"))]
struct Foo {
  #[ld(id)]
  id: IriBuf,

  #[ld("ex:name")]
  name: String,

  #[ld("ex:email")]
  email: String
}

let value = Foo {
  id: iri!("http://example.org/JohnSmith").to_owned(),
  name: "John Smith".to_owned(),
  email: "[email protected]".to_owned()
};

let quads = linked_data::to_quads(rdf_types::generator::Blank::new(), &value)
  .expect("RDF serialization failed");

for quad in quads {
  use rdf_types::RdfDisplay;
  println!("{} .", quad.rdf_display())
}

这将打印以下内容

<http://example.org/JohnSmith> <http://example.org/name> "John Smith" .
<http://example.org/JohnSmith> <http://example.org/email> "[email protected]" .

许可证

许可协议为以下之一

任选其一。

贡献

除非您明确表示,否则根据 Apache-2.0 许可证定义的,您有意提交以包含在工作中的任何贡献,将按上述方式双授权,没有任何额外的条款或条件。

依赖项

~11MB
~226K SLoC