#[cfg(not(target_family = "wasm"))]
use rudof_generate::{DataGenerator, GeneratorConfig};
#[cfg(not(target_family = "wasm"))]
use rudof_rdf::rdf_core::{NeighsRDF, RDFFormat};
#[cfg(not(target_family = "wasm"))]
use rudof_rdf::rdf_impl::{OxigraphInMemory, ReaderMode};
#[cfg(not(target_family = "wasm"))]
use std::collections::HashMap;
#[cfg(not(target_family = "wasm"))]
use std::io::Write;
#[cfg(not(target_family = "wasm"))]
use tempfile::NamedTempFile;
#[cfg(not(target_family = "wasm"))]
#[tokio::test]
async fn debug_shex_datatype_test() {
let shex_schema = r#"
PREFIX ex: <http://example.org/>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
ex:PersonShape {
ex:name xsd:string ;
ex:age xsd:integer ;
ex:active xsd:boolean
}
"#;
let mut schema_file = NamedTempFile::new().unwrap();
writeln!(schema_file, "{shex_schema}").unwrap();
let output_file = NamedTempFile::new().unwrap();
let mut config = GeneratorConfig::default();
config.generation.entity_count = 3;
config.output.path = output_file.path().to_path_buf();
let mut generator = DataGenerator::new(config).unwrap();
generator.load_shex_schema(schema_file.path()).await.unwrap();
generator.generate().await.unwrap();
let graph = OxigraphInMemory::from_path(output_file.path(), &RDFFormat::Turtle, None, &ReaderMode::Strict)
.expect("Failed to parse generated RDF");
let content = std::fs::read_to_string(output_file.path()).unwrap();
println!("Generated RDF content:\n{content}");
let mut datatype_counts = HashMap::new();
for triple in graph.triples().unwrap() {
if let oxrdf::Term::Literal(lit) = &triple.object {
let datatype = lit.datatype().to_string();
let clean_datatype = datatype.trim_start_matches('<').trim_end_matches('>');
println!("Found literal: {} with datatype: {}", lit.value(), clean_datatype);
*datatype_counts.entry(clean_datatype.to_string()).or_insert(0) += 1;
}
}
println!("Datatype counts: {datatype_counts:?}");
if !datatype_counts.contains_key("http://www.w3.org/2001/XMLSchema#string") {
println!("Missing string datatype! Keys: {:?}", datatype_counts.keys());
}
if !datatype_counts.contains_key("http://www.w3.org/2001/XMLSchema#integer") {
println!("Missing integer datatype! Keys: {:?}", datatype_counts.keys());
}
if !datatype_counts.contains_key("http://www.w3.org/2001/XMLSchema#boolean") {
println!("Missing boolean datatype! Keys: {:?}", datatype_counts.keys());
}
}