1use crate::model::annotations::AnnotationBuilder;
6use crate::model::modules::Module;
7use crate::model::HasBody;
8use crate::stdlib::rdf;
9
10pub const MODULE_NAME: &str = "rdfs";
15pub const MODULE_URL: &str = "http://www.w3.org/2000/01/rdf-schema#";
16
17pub const CLASS: &str = "Class";
18pub const CONTAINER: &str = "Container";
19pub const CONTAINER_MEMBERSHIP_PROPERTY: &str = "ContainerMembershipProperty";
20pub const DATATYPE: &str = "Datatype";
21pub const LITERAL: &str = "Literal";
22pub const RESOURCE: &str = "Resource";
23
24pub const COMMENT: &str = "comment";
25pub const DOMAIN: &str = "domain";
26pub const IS_DEFINED_BY: &str = "isDefinedBy";
27pub const LABEL: &str = "label";
28pub const MEMBER: &str = "member";
29pub const RANGE: &str = "range";
30pub const SEE_ALSO: &str = "seeAlso";
31pub const SUB_CLASS_OF: &str = "subClassOf";
32pub const SUB_PROPERTY_OF: &str = "subPropertyOf";
33
34pub fn module() -> Module {
39 #[allow(non_snake_case)]
40 let MODULE_IRI: url::Url = url::Url::parse(MODULE_URL).unwrap();
41 let mut module = Module::empty(id!(MODULE_NAME)).with_base_uri(MODULE_IRI.clone());
42
43 module
44 .body_mut()
45 .add_to_imports(import!(id!(rdf::MODULE_NAME)));
46
47 module
48 .body_mut()
49 .extend_definitions(vec![
50 rdf!(class CLASS, MODULE_IRI).into(),
52 rdf!(class CONTAINER, MODULE_IRI).into(),
53 rdf!(class DATATYPE, MODULE_IRI; CLASS).into(),
54 rdf!(class LITERAL, MODULE_IRI; RESOURCE).into(),
55 rdf!(class RESOURCE, MODULE_IRI).into(),
56 rdf!(thing CONTAINER_MEMBERSHIP_PROPERTY, MODULE_IRI;
58 (rdf::MODULE_NAME, rdf::PROPERTY))
59 .into(),
60 rdf!(property COMMENT, MODULE_IRI; RESOURCE => LITERAL).into(),
62 rdf!(property DOMAIN, MODULE_IRI;
63 (rdf::MODULE_NAME, rdf::PROPERTY) => CLASS)
64 .into(),
65 rdf!(property IS_DEFINED_BY, MODULE_IRI; RESOURCE => RESOURCE).into(),
66 rdf!(property LABEL, MODULE_IRI; RESOURCE => LITERAL).into(),
67 rdf!(property MEMBER, MODULE_IRI; RESOURCE => RESOURCE).into(),
68 rdf!(property RANGE, MODULE_IRI;
69 (rdf::MODULE_NAME, rdf::PROPERTY) => CLASS)
70 .into(),
71 rdf!(property SEE_ALSO, MODULE_IRI; RESOURCE => RESOURCE).into(),
72 rdf!(property SUB_CLASS_OF, MODULE_IRI; CLASS => CLASS).into(),
73 rdf!(property SUB_PROPERTY_OF, MODULE_IRI;
74 (rdf::MODULE_NAME, rdf::PROPERTY) =>
75 (rdf::MODULE_NAME, rdf::PROPERTY))
76 .into(),
77 ])
78 .unwrap();
79
80 module
81}