use mownstr::MownStr;
use sophia_iri::InvalidIri;
use std::borrow::Borrow;
use std::fmt;
pub use sophia_iri::IriRef;
#[macro_use]
mod _macro;
mod _namespace;
pub use _namespace::*;
mod _term;
pub use _term::*;
pub mod rdf {
namespace!(
"http://www.w3.org/1999/02/22-rdf-syntax-ns#",
Alt,
Bag,
List,
PlainLiteral,
Property,
Seq,
Statement,
HTML,
JSON,
langString,
XMLLiteral,
direction,
first,
language,
object,
predicate,
rest,
subject,
value,
nil,
RDF,
ID,
Description,
about,
parseType,
resource,
li,
nodeID,
datatype,
bagID,
aboutEach,
aboutEachPrefix;
type_, "type"
);
}
#[rustfmt::skip]
pub mod xsd {
namespace!(
"http://www.w3.org/2001/XMLSchema#",
anyType,
anySimpleType,
duration,
dateTime,
time,
date,
gYearMonth,
gYear,
gMonthDay,
gDay,
gMonth,
boolean,
base64Binary,
hexBinary,
float,
double,
anyURI,
QName,
NOTATION,
string,
normalizedString,
token,
language,
Name,
NCName,
ID,
IDREF,
IDREFS,
ENTITY,
ENTITIES,
NMTOKEN,
NMTOKENS,
decimal,
integer,
nonPositiveInteger,
negativeInteger,
long,
int,
short,
byte,
nonNegativeInteger,
unsignedLong,
unsignedInt,
unsignedShort,
unsignedByte,
positiveInteger
);
}
pub mod rdfs {
namespace!(
"http://www.w3.org/2000/01/rdf-schema#",
Class,
Container,
ContainerMembershipProperty,
Datatype,
Literal,
Resource,
domain,
range,
subClassOf,
subPropertyOf,
comment,
isDefinedBy,
label,
member,
seeAlso
);
}
pub mod xml {
namespace!(
"http://www.w3.org/XML/1998/namespace#",
lang,
space,
base,
id,
Father
);
}
pub mod owl {
namespace!(
"http://www.w3.org/2002/07/owl#",
Nothing,
Thing,
AllDifferent,
AllDisjointClasses,
AnnotationProperty,
Class,
DatatypeProperty,
FunctionalProperty,
InverseFunctionalProperty,
IrreflexiveProperty,
ObjectProperty,
SymmetricProperty,
TransitiveProperty,
allValuesFrom,
assertionProperty,
complementOf,
differentFrom,
disjointWith,
distinctMembers,
equivalentClass,
equivalentProperty,
intersectionOf,
inverseOf,
maxCardinality,
maxQualifiedCardinality,
members,
onClass,
oneOf,
onProperty,
propertyChainAxiom,
propertyDisjointWith,
sameAs,
someValuesFrom,
sourceIndividual,
targetIndividual,
targetValue,
unionOf
);
}
#[cfg(test)]
mod test {
use super::*;
use std::rc::Rc;
#[test]
fn test_same_term() {
let ns1 = Namespace::new("http://schema.org/").unwrap();
let ns2 = Namespace::new(Rc::from("http://schema.org/")).unwrap();
assert_eq!(
ns1.get("name").unwrap().to_string(),
ns1.get("name").unwrap().to_string()
);
assert_eq!(
ns2.get("name").unwrap().to_string(),
ns2.get("name").unwrap().to_string()
);
assert_eq!(
ns1.get("name").unwrap().to_string(),
ns2.get("name").unwrap().to_string()
);
}
#[test]
fn test_different_terms() {
let ns1 = Namespace::new("http://schema.org/").unwrap();
assert_ne!(
ns1.get("name").unwrap().to_string(),
ns1.get("givenName").unwrap().to_string()
);
}
#[test]
fn test_invalid_namespace() {
assert!(Namespace::new("http://schema.org ").is_err());
}
#[test]
fn test_invalid_suffix() {
let ns1 = Namespace::new("http://schema.org/").unwrap();
assert!(ns1.get("name ").is_err());
}
}