OpenHPS/openhps-rdf

View on GitHub
src/models/SerializableThing.ts

Summary

Maintainability
A
0 mins
Test Coverage
import { SerializableMember, SerializableObject } from '@openhps/core';
import { BlankNodeId, IriString, RDFSerializer, Thing } from '../rdf';

@SerializableObject({
    rdf: {
        deserializer: (thing: Thing, object: SerializableThing) => {
            object.id = thing.value as IriString | BlankNodeId;
            object.termType = thing.termType;
            return object;
        },
    },
})
export class SerializableThing {
    termType: 'NamedNode' | 'BlankNode';
    @SerializableMember({
        rdf: {
            identifier: true,
        },
    })
    id: IriString | BlankNodeId;

    toThing(): Thing {
        const deserialized = RDFSerializer.serialize(this);
        return {
            termType: this.termType,
            value: this.id,
            ...deserialized,
        };
    }
}