shacl_validation/constraints/core/other/
in.rs1use crate::constraints::constraint_error::ConstraintError;
2use crate::constraints::SparqlValidator;
3use crate::constraints::{NativeValidator, Validator};
4use crate::engine::native::NativeEngine;
5use crate::engine::sparql::SparqlEngine;
6use crate::engine::Engine;
7use crate::helpers::constraint::validate_with;
8use crate::validation_report::result::ValidationResult;
9use crate::value_nodes::ValueNodeIteration;
10use crate::value_nodes::ValueNodes;
11use shacl_ast::compiled::component::CompiledComponent;
12use shacl_ast::compiled::component::In;
13use shacl_ast::compiled::shape::CompiledShape;
14use srdf::Query;
15use srdf::Rdf;
16use srdf::Sparql;
17use std::fmt::Debug;
18
19impl<S: Rdf + Debug> Validator<S> for In<S> {
20 fn validate(
21 &self,
22 component: &CompiledComponent<S>,
23 shape: &CompiledShape<S>,
24 _: &S,
25 _: impl Engine<S>,
26 value_nodes: &ValueNodes<S>,
27 _source_shape: Option<&CompiledShape<S>>,
28 ) -> Result<Vec<ValidationResult>, ConstraintError> {
29 let r#in = |value_node: &S::Term| !self.values().contains(value_node);
30 validate_with(component, shape, value_nodes, ValueNodeIteration, r#in)
31 }
32}
33
34impl<S: Query + Debug + 'static> NativeValidator<S> for In<S> {
35 fn validate_native(
36 &self,
37 component: &CompiledComponent<S>,
38 shape: &CompiledShape<S>,
39 store: &S,
40 value_nodes: &ValueNodes<S>,
41 source_shape: Option<&CompiledShape<S>>,
42 ) -> Result<Vec<ValidationResult>, ConstraintError> {
43 self.validate(
44 component,
45 shape,
46 store,
47 NativeEngine,
48 value_nodes,
49 source_shape,
50 )
51 }
52}
53
54impl<S: Sparql + Debug + 'static> SparqlValidator<S> for In<S> {
55 fn validate_sparql(
56 &self,
57 component: &CompiledComponent<S>,
58 shape: &CompiledShape<S>,
59 store: &S,
60 value_nodes: &ValueNodes<S>,
61 source_shape: Option<&CompiledShape<S>>,
62 ) -> Result<Vec<ValidationResult>, ConstraintError> {
63 self.validate(
64 component,
65 shape,
66 store,
67 SparqlEngine,
68 value_nodes,
69 source_shape,
70 )
71 }
72}