Table of Contents

Class S128ProductCatalogue

Namespace
EncDotNet.S100.Datasets.S128.DataModel
Assembly
EncDotNet.S100.Datasets.S128.dll

Strongly-typed projection of an S128Dataset as a catalogue of nautical products (S-128 Edition 2.0.0).

public sealed class S128ProductCatalogue
Inheritance
S128ProductCatalogue
Inherited Members

Remarks

S-128 datasets describe the nautical products produced by an agency. The typed model surfaces three product subclasses (S128ElectronicProduct, S128PhysicalProduct, S128Service) through a common S128CatalogueEntry base, plus dedicated typed records for producer, distributor, contact, and section-header metadata.

The headline value-add is supersedes resolution: every product entry's Supersedes and SupersededBy collections are populated from the dataset's theReference xlinks whose companion ProductMapping/categoryOfProductMapping classifies as HigherPriorityAlternative (S-128 § 12). All other mappings land in RelatedProducts with their raw category text preserved for forward compatibility.

Projection issues — unresolved xlinks, attribute parse failures — surface as ProjectionDiagnostic entries rather than exceptions. The projection only throws when the source dataset is fully empty (no features and no information types).

Properties

Contacts

Contact-details metadata records.

public IReadOnlyList<S128ContactDetails> Contacts { get; init; }

Property Value

IReadOnlyList<S128ContactDetails>

DatasetIdentifier

The dataset identifier carried by the source GML Dataset element.

public string? DatasetIdentifier { get; init; }

Property Value

string

Distributors

Distributor metadata records.

public IReadOnlyList<S128DistributorInformation> Distributors { get; init; }

Property Value

IReadOnlyList<S128DistributorInformation>

Producers

Producer metadata records.

public IReadOnlyList<S128ProducerInformation> Producers { get; init; }

Property Value

IReadOnlyList<S128ProducerInformation>

ProductIdentifier

The S-128 product identifier (typically "S-128").

public string? ProductIdentifier { get; init; }

Property Value

string

Products

All catalogue product entries, polymorphic over the three product subclasses.

public required IReadOnlyList<S128CatalogueEntry> Products { get; init; }

Property Value

IReadOnlyList<S128CatalogueEntry>

SectionHeaders

Catalogue section header records.

public IReadOnlyList<S128CatalogueSectionHeader> SectionHeaders { get; init; }

Property Value

IReadOnlyList<S128CatalogueSectionHeader>

Source

The originating feature-bag dataset.

public required S128Dataset Source { get; init; }

Property Value

S128Dataset

Methods

From(S128Dataset, out IReadOnlyList<ProjectionDiagnostic>)

Projects a feature-bag S128Dataset into the typed data model. Issues encountered during projection are reported via diagnostics; the projection only throws for a fully empty dataset (no features and no information types).

public static S128ProductCatalogue From(S128Dataset dataset, out IReadOnlyList<ProjectionDiagnostic> diagnostics)

Parameters

dataset S128Dataset

The source dataset.

diagnostics IReadOnlyList<ProjectionDiagnostic>

Out parameter receiving the projection diagnostics.

Returns

S128ProductCatalogue

Exceptions

InvalidOperationException

Thrown if dataset contains neither features nor information types.