use rdftk_core::model::{
graph::Graph,
literal::Literal,
statement::{BlankNode, Statement, SubjectNode},
};
use rdftk_iri::{Iri, IriPrefixMap, VOCABULARY_DC_TERMS, VOCABULARY_FOAF, VOCABULARY_RDF};
use std::str::FromStr;
pub fn tony_benn_graph() -> Graph {
let mappings = IriPrefixMap::default()
.with_vocabulary(&VOCABULARY_RDF)
.with_vocabulary(&VOCABULARY_DC_TERMS)
.with_vocabulary(&VOCABULARY_FOAF);
let mut graph = Graph::default();
graph.set_prefix_mappings(mappings);
let subject_iri = Iri::from_str("http://en.wikipedia.org/wiki/Tony_Benn").unwrap();
graph.insert(Statement::new(
&subject_iri,
Iri::from_str("http://purl.org/dc/elements/1.1/title").unwrap(),
Literal::plain("Tony Benn"),
));
graph.insert(Statement::new(
&subject_iri,
Iri::from_str("http://purl.org/dc/elements/1.1/publisher").unwrap(),
Literal::plain("Wikipedia"),
));
graph.insert(Statement::new(
&subject_iri,
Iri::from_str("http://purl.org/dc/elements/1.1/description").unwrap(),
BlankNode::from_str("B1").unwrap(),
));
graph.insert(Statement::new(
BlankNode::from_str("B1").unwrap(),
Iri::from_str("http://xmlns.com/foaf/0.1/name").unwrap(),
Literal::plain("Tony Benn"),
));
graph.insert(Statement::new(
BlankNode::from_str("B1").unwrap(),
Iri::from_str("http://www.w3.org/1999/02/22-rdf-syntax-ns#type").unwrap(),
Iri::from_str("http://xmlns.com/foaf/0.1/Person").unwrap(),
));
graph
}
#[test]
fn test_simple_graph_len() {
let graph = tony_benn_graph();
assert_eq!(graph.len(), 5);
}
#[test]
fn test_simple_graph_contains_individual() {
let graph = tony_benn_graph();
let subject_iri = Iri::from_str("http://en.wikipedia.org/wiki/Tony_Benn").unwrap();
assert!(graph.contains_subject(&subject_iri.into()));
let subject_iri = Iri::from_str("http://en.wikipedia.org/wiki/Harold_Wilson").unwrap();
assert!(!graph.contains_subject(&subject_iri.into()));
}
#[test]
fn test_simple_graph_contains_subject() {
let graph = tony_benn_graph();
let subject_iri = Iri::from_str("http://en.wikipedia.org/wiki/Tony_Benn").unwrap();
let subject = SubjectNode::from(subject_iri);
assert!(graph.contains_subject(&subject));
let subject_iri = Iri::from_str("http://en.wikipedia.org/wiki/Harold_Wilson").unwrap();
let subject = SubjectNode::from(subject_iri);
assert!(!graph.contains_subject(&subject));
}