linked_data_schema/
lib.rs1mod linked_data_schema_field_visitor;
2
3pub use linked_data_schema_derive::LinkedDataSchema;
4pub use linked_data_schema_field_visitor::LinkedDataSchemaFieldVisitor;
5use rudof_rdf::rdf_core::Rdf;
6use shacl_ast::ShaclSchema;
7use shacl_ast::component::Component;
8
9pub mod reexports {
10 pub use iri_s;
11 pub use prefixmap;
12 pub use rudof_rdf;
13 pub use shacl_ast;
14 pub use shacl_rdf;
15 pub use uuid;
16}
17
18pub trait LinkedDataSchema {
19 fn shacl<RDF: Rdf>() -> ShaclSchema<RDF>;
20
21 fn components() -> Vec<Component>;
22}
23
24#[macro_export]
25macro_rules! print_linked_data_schema_for {
26 ( $x:ty ) => {
27 let schema = <$x>::shacl();
28 {
29 use ::linked_data_schema::reexports::rudof_rdf::rdf_core::RDFFormat::Turtle;
30 use ::linked_data_schema::reexports::rudof_rdf::rdf_impl::InMemoryGraph;
31 use ::linked_data_schema::reexports::shacl_rdf::ShaclWriter;
32
33 let mut shacl_writer = ShaclWriter::<InMemoryGraph>::default();
34 shacl_writer.write(&schema).unwrap();
35
36 let mut cursor = Cursor::new(Vec::new());
37
38 shacl_writer.serialize(&Turtle, &mut cursor).unwrap();
39
40 let content = cursor.into_inner();
41 let s = String::from_utf8(content).unwrap();
42 println!("{}", s);
43 }
44 };
45}