bra0-kg 0.2.1

bra0 Knowledge Graph core — RDF transformations (sophia) + KgStore trait (NextGraph-First)
Documentation
//! RDF serialization via sophia — Turtle, N-Triples, JSON-LD
//!
//! Capabilities served: DP-4 (Export), GOV-3 (Provenance)

use sophia::api::prelude::*;
use sophia::api::serializer::Stringifier;
use sophia::inmem::graph::LightGraph;
use sophia_turtle::serializer::turtle::TurtleSerializer;

/// Serialize a LightGraph to Turtle string.
pub fn to_turtle(graph: &LightGraph) -> Result<String, Box<dyn std::error::Error>> {
    let mut ser = TurtleSerializer::new_stringifier();
    ser.serialize_graph(graph)?;
    Ok(ser.to_string())
}

#[cfg(test)]
mod tests {
    use super::*;
    use crate::parse;

    /// T3 (partial): round-trip parse → serialize
    #[test]
    fn round_trip_turtle() {
        let input = r#"
            @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
            <http://example.org/A> a rdfs:Class ;
                rdfs:label "Test"@en .
        "#;
        let (graph, _) = parse::parse_turtle(input).unwrap();
        let output = to_turtle(&graph).unwrap();
        assert!(output.contains("example.org/A"));
    }
}