1- import type { DataFactory , DatasetCore , Quad_Object , Quad_Subject , Term } from "@rdfjs/types"
1+ import type { Quad_Object , Quad_Subject , Term } from "@rdfjs/types"
22import type { ITermMapping } from "./type/ITermMapping.js"
33import type { IValueMapping } from "./type/IValueMapping.js"
44import { WrappingSet } from "./WrappingSet.js"
55import { WrappingMap } from "./WrappingMap.js"
6+ import { Something } from "./something.js"
67
78
8- export class TermWrapper {
9- public readonly term : Term ;
10- public readonly dataset : DatasetCore ;
11- public readonly factory : DataFactory ;
12-
13- public constructor ( term : string , dataset : DatasetCore , factory : DataFactory ) ;
14- public constructor ( term : Term , dataset : DatasetCore , factory : DataFactory ) ;
15- public constructor ( term : string | Term , dataset : DatasetCore , factory : DataFactory ) {
16- if ( typeof term === "string" ) {
17- this . term = factory . namedNode ( term ) ;
18- } else {
19- this . term = term ;
20- }
21- this . dataset = dataset ;
22- this . factory = factory ;
23- }
24-
9+ export class TermWrapper extends Something {
2510 protected singular < T > ( p : string , valueMapping : IValueMapping < T > ) : T {
2611 const predicate = this . factory . namedNode ( p )
27- const matches = this . dataset . match ( this . term , predicate ) [ Symbol . iterator ] ( )
12+ const matches = this . dataset . match ( this as Term , predicate ) [ Symbol . iterator ] ( )
2813
2914 // TODO: Expose standard errors
3015 const { value : first , done : none } = matches . next ( )
3116
3217 if ( none ) {
33- throw new Error ( `More than one value for predicate ${ p } on term ${ this . term . value } ` )
18+ throw new Error ( `More than one value for predicate ${ p } on term ${ this . value } ` )
3419 }
3520
3621 if ( ! matches . next ( ) . done ) {
37- throw new Error ( `No value found for predicate ${ p } on term ${ this . term . value } ` )
22+ throw new Error ( `No value found for predicate ${ p } on term ${ this . value } ` )
3823 }
3924
4025 return valueMapping ( new TermWrapper ( first . object , this . dataset , this . factory ) )
@@ -43,7 +28,7 @@ export class TermWrapper {
4328 protected singularNullable < T > ( p : string , valueMapping : IValueMapping < T > ) : T | undefined {
4429 const predicate = this . factory . namedNode ( p )
4530
46- for ( const q of this . dataset . match ( this . term , predicate ) ) {
31+ for ( const q of this . dataset . match ( this as Term , predicate ) ) {
4732 return valueMapping ( new TermWrapper ( q . object , this . dataset , this . factory ) )
4833 }
4934
@@ -61,7 +46,7 @@ export class TermWrapper {
6146 protected overwriteNullable < T > ( p : string , value : T | undefined , termMapping : ITermMapping < T > ) : void {
6247 const predicate = this . factory . namedNode ( p )
6348
64- for ( const q of this . dataset . match ( this . term , predicate ) ) {
49+ for ( const q of this . dataset . match ( this as Term , predicate ) ) {
6550 this . dataset . delete ( q )
6651 }
6752
@@ -70,9 +55,9 @@ export class TermWrapper {
7055 return
7156 }
7257
73- // TODO: Do we really need to test if this.term is a Quad Subject here?
58+ // TODO: Do we really need to test if this is a Quad Subject here?
7459 // @Samu I imagine this is tested at instantiation time in the constructor if at all
75- if ( ! TermWrapper . isQuadSubject ( this . term ) ) {
60+ if ( ! TermWrapper . isQuadSubject ( this as Term ) ) {
7661 return // TODO: throw error?
7762 }
7863
@@ -83,11 +68,11 @@ export class TermWrapper {
8368 return // TODO: throw error?
8469 }
8570
86- if ( ! TermWrapper . isQuadObject ( o . term ) ) {
71+ if ( ! TermWrapper . isQuadObject ( o as Term ) ) {
8772 return // TODO: throw error?
8873 }
8974
90- const q = this . factory . quad ( this . term , predicate , o . term )
75+ const q = this . factory . quad ( this as Quad_Subject , predicate , o as Quad_Object )
9176 this . dataset . add ( q )
9277 }
9378
0 commit comments