Skip to main content

Federated Catalogue Filters Examples

Use these snippets when you want practical filtering behaviour for dataset lookups, from simple page reads through to structured index generation.

FilterByExample

import { MemoryEntityStorageConnector } from '@twin.org/entity-storage-connector-memory';
import { EntityStorageConnectorFactory } from '@twin.org/entity-storage-models';
import { FilterByExample } from '@twin.org/federated-catalogue-filters';

EntityStorageConnectorFactory.register('dataset', () => new MemoryEntityStorageConnector());

const filter = new FilterByExample({
datasetStorageConnectorType: 'dataset'
});

console.log(filter.className() === FilterByExample.CLASS_NAME); // true
import { MemoryEntityStorageConnector } from '@twin.org/entity-storage-connector-memory';
import { EntityStorageConnectorFactory } from '@twin.org/entity-storage-models';
import { FilterByExample } from '@twin.org/federated-catalogue-filters';

EntityStorageConnectorFactory.register('dataset', () => new MemoryEntityStorageConnector());

const filter = new FilterByExample({
datasetStorageConnectorType: 'dataset'
});

const index = await filter.createIndex({
'@context': ['https://www.w3.org/ns/dcat3.jsonld'],
'@type': 'dcat:Dataset',
'@id': 'urn:dataset:air-quality-2026',
'dcterms:title': { '@value': 'Air quality readings' },
'dcterms:description': { '@value': 'Hourly PM2.5 values' },
'dcterms:publisher': { '@id': 'did:web:publisher.example' },
'dcat:keyword': [{ '@value': 'air' }, { '@value': 'pm25' }]
});

console.log(Object.keys(index).length); // 4
import { MemoryEntityStorageConnector } from '@twin.org/entity-storage-connector-memory';
import { EntityStorageConnectorFactory } from '@twin.org/entity-storage-models';
import { FilterByExample } from '@twin.org/federated-catalogue-filters';

EntityStorageConnectorFactory.register('dataset', () => new MemoryEntityStorageConnector());

const filter = new FilterByExample({
datasetStorageConnectorType: 'dataset'
});

const result = await filter.query(
{
'dcterms:publisher': { '@id': 'did:web:publisher.example' }
},
'cursor-1',
10
);

console.log(Array.isArray(result.datasets)); // true
console.log(typeof result.cursor === 'string' || result.cursor === undefined); // true