#schema-validation #validation #wikidata #duck-db #subsetting #pregel

pschema-rs

基于Pregel的schema验证算法,用于生成Wikidata子集的Rust语言实现

2个版本

0.0.2 2023年6月8日
0.0.1 2023年5月28日

#1308 in 数据库接口

GPL-3.0-or-later

1.5MB
865

pschema-rs

CI codecov latest_version documentation

pschema-rs是一个Rust库,它提供了一个基于Pregel的schema验证算法,用于从Wikidata生成数据子集。它设计得既高效又可扩展,易于使用,适用于处理大量来自Wikidata数据的各种应用。

特性

  • 基于Pregel的schema验证pschema-rs使用Pregel模型,一种基于图的计算模型,对Wikidata实体进行schema验证。这允许对大型数据集进行高效且可扩展的处理。

  • Rust实现pschema-rs是用Rust语言实现的,Rust是一种以性能、内存安全性和并发特性而闻名的系统编程语言。这确保了该库运行速度快、可靠且安全。

  • 生成Wikidata子集pschema-rs提供了根据schema验证规则从Wikidata生成数据子集的功能。这使得用户可以根据他们的特定要求从Wikidata中过滤和提取相关数据。

  • 可定制验证规则pschema-rs允许用户使用简单灵活的语法定义自己的验证规则。这使得根据特定应用的需求定制schema验证过程变得容易。

  • 易于使用的APIpschema-rs提供了一个用户友好的API,使得将其集成到任何Rust项目中变得简单。该API提供了执行schema验证和生成Wikidata子集的高级接口,具有全面的文档和示例,以帮助用户快速入门。

安装

要在Rust项目中使用pschema-rs,您可以在Cargo.toml文件中将它添加为依赖项

[dependencies]
pschema = "0.0.2"

用法

以下是一个示例,展示如何使用pschema-rs进行schema验证并从Wikidata生成数据子集

use pregel_rs::graph_frame::GraphFrame;
use pschema_rs::backends::duckdb::DuckDB;
use pschema_rs::backends::Backend;
use pschema_rs::pschema::PSchema;
use pschema_rs::shape::shex::Shape;
use pschema_rs::shape::shex::TripleConstraint;
use wikidata_rs::id::Id;

fn main() -> Result<(), String> {
    // Define validation rules
    let start = Shape::TripleConstraint(TripleConstraint::new(
        1,
        Id::from("P31").into(),
        Id::from("Q515").into(),
    ));

    // Load Wikidata entities
    let edges = DuckDB::import("./examples/from_duckdb/3000lines.duckdb")?;

    // Perform schema validation
    match GraphFrame::from_edges(edges) {
        Ok(graph) => match PSchema::new(start).validate(graph) {
            Ok(result) => {
                println!("Schema validation result:");
                println!("{:?}", result);
                Ok(())
            }
            Err(error) => Err(error.to_string()),
        },
        Err(error) => Err(format!("Cannot create a GraphFrame: {}", error)),
    }
}

有关如何定义验证规则、从Wikidata加载实体以及处理数据子集的更多信息,请参阅文档。

  1. wdsub是一个用Scala编写的生成Wikidata子集的应用程序。
  2. pschema 是一个基于 Scala 的库,相当于这个。

许可证

版权所有 © 2023 Ángel Iglesias Préstamo ([email protected])

本程序是免费软件:您可以根据自由软件基金会发布的 GNU 通用公共许可证的条款重新分发和/或修改它,许可证版本为 3 或(根据您的选择)任何更高版本。

本程序的分发是希望它将是有用的,但没有任何保证;甚至没有关于适销性或特定用途适用性的暗示性保证。有关更多信息,请参阅 GNU 通用公共许可证。

您应该已经收到了 GNU 通用公共许可证的副本。如果没有,请参阅 https://www.gnu.org/licenses/

通过为这个项目做出贡献,您同意在相同的许可证下发布您的贡献。

依赖关系

~61MB
~1M SLoC