ld-core 0.4.0

Linked-Data dataset serialization and deserialization traits, with derive macros
Documentation
use ld_core::rdfx::{RdfDisplay, generator};
use ld_core::{Deserialize, LinkedDataResource, Serialize, to_quads};

#[derive(Serialize, Deserialize)]
#[ld(prefix("ex" = "http://example.org/"))]
enum Subject {
	Name(String),
}

#[derive(Serialize, Deserialize)]
#[ld(prefix("ex" = "http://example.org/"))]
enum SubjectCompound {
	Name(#[ld("ex:name")] String),
}

#[derive(Serialize, Deserialize)]
#[ld(prefix("ex" = "http://example.org/"))]
enum Property {
	#[ld("ex:name")]
	Name(String),
}

#[derive(Serialize, Deserialize)]
#[ld(prefix("ex" = "http://example.org/"))]
enum PropertyCompound {
	#[ld("ex:name")]
	Name(#[ld("ex:value")] String),
}

#[derive(Serialize, Deserialize)]
#[ld(prefix("ex" = "http://example.org/"))]
enum Ids {
	#[ld("ex:A")]
	A,
}

fn main() {
	let a = Subject::Name("A".to_string());
	println!(
		"{:?}",
		a.interpretation(
			&mut ld_core::rdfx::generator::LocalGeneratorInterpretation::new(
				generator::Blank::new()
			)
		)
	);

	println!();
	let b = SubjectCompound::Name("B".to_string());
	let quads = to_quads(generator::Blank::new(), &b).expect("RDF serialization failed");
	for quad in quads {
		println!("{} .", quad.rdf_display())
	}

	println!();
	let c = Property::Name("C".to_string());
	let quads = to_quads(generator::Blank::new(), &c).expect("RDF serialization failed");
	for quad in quads {
		println!("{} .", quad.rdf_display())
	}

	println!();
	let d = PropertyCompound::Name("D".to_string());
	let quads = to_quads(generator::Blank::new(), &d).expect("RDF serialization failed");
	for quad in quads {
		println!("{} .", quad.rdf_display())
	}

	println!();
	let e = Ids::A;
	println!(
		"{:?}",
		e.interpretation(
			&mut ld_core::rdfx::generator::LocalGeneratorInterpretation::new(
				generator::Blank::new()
			)
		)
	);
}