shacl 0.3.21

A SHACL validator for RDF data, implemented in Rust.
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
use crate::ast::ASTComponent;
use crate::rdf::parsers::utils::{parse_components_for_iri, terms_as_nodes};
use rudof_rdf::rdf_core::FocusRDF;
use rudof_rdf::rdf_core::parser::rdf_node_parser::constructors::ListParser;
use rudof_rdf::rdf_core::parser::rdf_node_parser::{ParserExt, RDFNodeParse};
use rudof_rdf::rdf_core::vocabs::ShaclVocab;

pub(crate) fn or<RDF: FocusRDF>() -> impl RDFNodeParse<RDF, Output = Vec<ASTComponent>> {
    parse_components_for_iri(
        ShaclVocab::sh_or(),
        ListParser::new().flat_map(|ls| {
            let shapes: Vec<_> = terms_as_nodes::<RDF>(ls)?;
            Ok(ASTComponent::Or(shapes))
        }),
    )
}