pub fn canonicalize_quads(
    input_quads: &[Quad]
) -> Result<String, CanonicalizationError>
Expand description

Returns the serialized canonical form of the canonicalized dataset, where any blank nodes in the input quads are assigned deterministic identifiers.

§Examples

use oxrdf::Quad;
use oxttl::NQuadsParser;
use rdf_canon::canonicalize_quads;
use std::io::Cursor;
let input = r#"_:e0 <http://example.org/vocab#next> _:e1 _:g .
_:e0 <http://example.org/vocab#prev> _:e2 _:g .
_:e1 <http://example.org/vocab#next> _:e2 _:g .
_:e1 <http://example.org/vocab#prev> _:e0 _:g .
_:e2 <http://example.org/vocab#next> _:e0 _:g .
_:e2 <http://example.org/vocab#prev> _:e1 _:g .
<urn:ex:s> <urn:ex:p> "\u0008\u0009\u000a\u000b\u000c\u000d\u0022\u005c\u007f" _:g .
"#;
let expected = r#"<urn:ex:s> <urn:ex:p> "\b\t\n\u000B\f\r\"\\\u007F" _:c14n0 .
_:c14n1 <http://example.org/vocab#next> _:c14n2 _:c14n0 .
_:c14n1 <http://example.org/vocab#prev> _:c14n3 _:c14n0 .
_:c14n2 <http://example.org/vocab#next> _:c14n3 _:c14n0 .
_:c14n2 <http://example.org/vocab#prev> _:c14n1 _:c14n0 .
_:c14n3 <http://example.org/vocab#next> _:c14n1 _:c14n0 .
_:c14n3 <http://example.org/vocab#prev> _:c14n2 _:c14n0 .
"#;

let input_quads: Vec<Quad> = NQuadsParser::new()
    .parse_read(Cursor::new(input))
    .map(|x| x.unwrap())
    .collect();
let canonicalized = canonicalize_quads(&input_quads).unwrap();

assert_eq!(canonicalized, expected);