tripleMapToTurtle function

String tripleMapToTurtle(
  1. Map<URIRef, Map<URIRef, dynamic>> triples, {
  2. Map<String, Namespace>? bindNamespaces,
})

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;
}