shacl_validation/constraints/core/other/
closed.rs

1use crate::constraints::constraint_error::ConstraintError;
2use crate::constraints::NativeValidator;
3use crate::constraints::SparqlValidator;
4use crate::constraints::Validator;
5use crate::engine::native::NativeEngine;
6use crate::engine::sparql::SparqlEngine;
7use crate::engine::Engine;
8use crate::validation_report::result::ValidationResult;
9use crate::value_nodes::ValueNodes;
10use shacl_ast::compiled::component::Closed;
11use shacl_ast::compiled::component::CompiledComponent;
12use shacl_ast::compiled::shape::CompiledShape;
13use srdf::Query;
14use srdf::Rdf;
15use srdf::Sparql;
16use std::fmt::Debug;
17
18impl<S: Rdf + Debug> Validator<S> for Closed<S> {
19    fn validate(
20        &self,
21        _component: &CompiledComponent<S>,
22        _shape: &CompiledShape<S>,
23        _store: &S,
24        _engine: impl Engine<S>,
25        _value_nodes: &ValueNodes<S>,
26        _source_shape: Option<&CompiledShape<S>>,
27    ) -> Result<Vec<ValidationResult>, ConstraintError> {
28        Err(ConstraintError::NotImplemented("Closed".to_string()))
29    }
30}
31
32impl<S: Query + Debug + 'static> NativeValidator<S> for Closed<S> {
33    fn validate_native(
34        &self,
35        component: &CompiledComponent<S>,
36        shape: &CompiledShape<S>,
37        store: &S,
38        value_nodes: &ValueNodes<S>,
39        source_shape: Option<&CompiledShape<S>>,
40    ) -> Result<Vec<ValidationResult>, ConstraintError> {
41        self.validate(
42            component,
43            shape,
44            store,
45            NativeEngine,
46            value_nodes,
47            source_shape,
48        )
49    }
50}
51
52impl<S: Sparql + Debug + 'static> SparqlValidator<S> for Closed<S> {
53    fn validate_sparql(
54        &self,
55        component: &CompiledComponent<S>,
56        shape: &CompiledShape<S>,
57        store: &S,
58        value_nodes: &ValueNodes<S>,
59        source_shape: Option<&CompiledShape<S>>,
60    ) -> Result<Vec<ValidationResult>, ConstraintError> {
61        self.validate(
62            component,
63            shape,
64            store,
65            SparqlEngine,
66            value_nodes,
67            source_shape,
68        )
69    }
70}