RdfCore.withStandardCodecs constructor

RdfCore.withStandardCodecs({
  1. RdfNamespaceMappings? namespaceMappings,
  2. List<RdfGraphCodec> additionalCodecs = const [],
  3. List<RdfDatasetCodec> additionalDatasetCodecs = const [],
  4. List<RdfBinaryGraphCodec> additionalBinaryGraphCodecs = const [],
  5. List<RdfBinaryDatasetCodec> additionalBinaryDatasetCodecs = const [],
  6. IriTermFactory iriTermFactory = IriTerm.validated,
})

Creates a new RDF library instance with standard codecs registered

This convenience constructor sets up an RDF library with Turtle, N-Triples, TriG, and N-Quads codecs ready to use. It's the recommended way to create an instance for most applications.

For JSON-LD support, add locorda_rdf_jsonld and pass its codecs via additionalCodecs and additionalDatasetCodecs.

The namespaceMappings parameter provides optional custom namespace mappings for all codecs.

The additionalCodecs parameter is an optional list of additional graph codecs to register beyond the standard ones.

The additionalDatasetCodecs parameter is an optional list of additional dataset codecs to register beyond the standard ones.

The iriTermFactory parameter specifies the factory function for creating IRI terms. Defaults to IriTerm.validated which performs validation. If you need to minimize memory footprint, you can pass a flyweight here that caches IRI instances.

Example:

final rdf = RdfCore.withStandardCodecs();
final graph = rdf.decode(turtleData, contentType: 'text/turtle');

Implementation

factory RdfCore.withStandardCodecs({
  RdfNamespaceMappings? namespaceMappings,
  List<RdfGraphCodec> additionalCodecs = const [],
  List<RdfDatasetCodec> additionalDatasetCodecs = const [],
  List<RdfBinaryGraphCodec> additionalBinaryGraphCodecs = const [],
  List<RdfBinaryDatasetCodec> additionalBinaryDatasetCodecs = const [],
  IriTermFactory iriTermFactory = IriTerm.validated,
}) {
  final effectiveNamespaceMappings =
      namespaceMappings ?? const RdfNamespaceMappings();

  final registry = RdfCodecRegistry([
    // Register standard formats
    TurtleCodec(
        namespaceMappings: effectiveNamespaceMappings,
        iriTermFactory: iriTermFactory),
    NTriplesCodec(iriTermFactory: iriTermFactory),

    // Register additional codecs (e.g. JSON-LD from locorda_rdf_jsonld)
    ...additionalCodecs
  ]);

  final datasetRegistry = RdfDatasetCodecRegistry([
    // Register standard dataset formats
    // TriG is registered first as the default (human-readable, like Turtle for graphs)
    TriGCodec(
        namespaceMappings: effectiveNamespaceMappings,
        iriTermFactory: iriTermFactory),
    NQuadsCodec(iriTermFactory: iriTermFactory),

    // Register additional dataset codecs (e.g. JSON-LD from locorda_rdf_jsonld)
    ...additionalDatasetCodecs
  ]);

  final binaryGraphRegistry =
      RdfBinaryGraphCodecRegistry(additionalBinaryGraphCodecs);
  final binaryDatasetRegistry =
      RdfBinaryDatasetCodecRegistry(additionalBinaryDatasetCodecs);

  return RdfCore(
    registry: registry,
    datasetRegistry: datasetRegistry,
    binaryGraphRegistry: binaryGraphRegistry,
    binaryDatasetRegistry: binaryDatasetRegistry,
  );
}