tripleMapToTurtle function
Generate Turtle string from triples stored in a map: {subject: {predicate: {object}}}
- subject: URIRef String
- predicate: URIRef String
- object: {dynamic}
Implementation
String tripleMapToTurtle(
Map<URIRef, Map<URIRef, dynamic>> triples, {
Map<String, Namespace>? bindNamespaces,
}) {
final g = Graph();
for (final sub in triples.keys) {
final predMap = triples[sub];
for (final pre in predMap!.keys) {
final objs = predMap[pre];
final objList = objs is Iterable ? List.from(objs) : [objs];
if (objList.length != Set.from(objList).length) {
throw Exception('Duplicated triples \n'
'subject: ${sub.value},\n'
'predicate: ${pre.value},\n'
'objects: ${[for (final o in objList) o.toString()]}.');
}
for (final obj in objList) {
g.addTripleToGroups(sub, pre, obj);
}
}
}
if (bindNamespaces != null) {
bindNamespaces.forEach(g.bind);
}
g.serialize(abbr: 'short');
return g.serializedString;
}