lodviz_core 0.3.0

Core visualization primitives and data structures for lodviz
Documentation
use lodviz_core::core::column_inference::{infer_column_types, InferenceConfig};
use lodviz_core::io::parse_csv;
use std::fs;

fn main() {
    let csv_content =
        fs::read_to_string("/tmp/test_inference.csv").expect("Failed to read test CSV");

    let (table, columns) = parse_csv(&csv_content).expect("Failed to parse CSV");

    println!("Columns found: {:?}", columns);
    println!("\nSample rows:");
    for (i, row) in table.rows().iter().take(3).enumerate() {
        println!("  Row {}: {:?}", i + 1, row);
    }

    let column_types = infer_column_types(&table, &columns, InferenceConfig::default());

    println!("\n=== INFERRED COLUMN TYPES ===");
    for (col_name, inferred) in columns.iter().zip(column_types.iter()) {
        println!("\n  Column: {}", col_name);
        println!("    Storage Type:  {:?}", inferred.storage_type);
        println!("    Semantic Type: {:?}", inferred.semantic_type);
        println!("    Confidence:    {:.2}%", inferred.confidence * 100.0);
        println!("    Cardinality:   {}", inferred.cardinality);
        println!("    Null Count:    {}", inferred.null_count);
        println!("    Sample Size:   {}", inferred.sample_size);
        println!("    Metadata:");
        println!("      Is Integer:       {}", inferred.metadata.is_integer);
        println!(
            "      Has Currency:     {}",
            inferred.metadata.has_currency_symbols
        );
        println!(
            "      Low Cardinality:  {}",
            inferred.metadata.is_low_cardinality
        );
    }
}