Skip to content

Commit 66afd0e

Browse files
authored
Merge pull request #46 from matthieubosquet/datafactory
Issue #45: Add missing spec methods to DataFactory interface
2 parents 0ed985c + cfc4d28 commit 66afd0e

File tree

3 files changed

+62
-0
lines changed

3 files changed

+62
-0
lines changed

.changeset/afraid-donuts-retire.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@rdfjs/types": major
3+
---
4+
5+
Add missing methods `fromTerm` and `fromQuad` to the `DataFactory` interface

data-model.d.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -287,4 +287,24 @@ export interface DataFactory<OutQuad extends BaseQuad = Quad, InQuad extends Bas
287287
* @see Quad
288288
*/
289289
quad(subject: InQuad['subject'], predicate: InQuad['predicate'], object: InQuad['object'], graph?: InQuad['graph']): OutQuad;
290+
291+
/**
292+
* @param original The original term.
293+
* @return A new instance of the term such that newTermInstance.equals(original) returns true.
294+
* @see Term
295+
*/
296+
fromTerm<T extends NamedNode>(original: T): NamedNode;
297+
fromTerm<T extends BlankNode>(original: T): BlankNode;
298+
fromTerm<T extends Literal>(original: T): Literal;
299+
fromTerm<T extends Variable>(original: T): Variable;
300+
fromTerm<T extends DefaultGraph>(original: T): DefaultGraph;
301+
fromTerm<T extends BaseQuad>(original: T): OutQuad;
302+
fromTerm<T extends Term>(original: T): T;
303+
304+
/**
305+
* @param original The original quad.
306+
* @return A new instance of the quad such that newQuadInstance.equals(original) returns true.
307+
* @see Quad
308+
*/
309+
fromQuad(original: InQuad): OutQuad;
290310
}

rdf-js-tests.ts

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,26 @@ function test_datafactory() {
8484

8585
const variable: Variable = dataFactory.variable ? dataFactory.variable('v1') : <any> {};
8686

87+
const defaultGraph: DefaultGraph = dataFactory.defaultGraph();
88+
89+
type NamedNodeExt = NamedNode & { someProp: string };
90+
const term1: NamedNode = dataFactory.fromTerm(<NamedNodeExt>{});
91+
type BlankNodeExt = BlankNode & { someProp: string };
92+
const term2: BlankNode = dataFactory.fromTerm(<BlankNodeExt>{});
93+
type LiteralExt = Literal & { someProp: string };
94+
const term3: Literal = dataFactory.fromTerm(<LiteralExt>{});
95+
type VariableExt = Variable & { someProp: string };
96+
const term4: Variable = dataFactory.fromTerm(<VariableExt> {});
97+
type DefaultGraphExt = DefaultGraph & { someProp: string };
98+
const term5: DefaultGraph = dataFactory.fromTerm(<DefaultGraphExt>{});
99+
100+
const quadFromQuad: Term = dataFactory.fromQuad(dataFactory.quad(
101+
dataFactory.namedNode("x"),
102+
dataFactory.namedNode("y"),
103+
dataFactory.literal(""),
104+
dataFactory.defaultGraph()
105+
));
106+
87107
const term: NamedNode = <any> {};
88108
interface QuadBnode extends BaseQuad {
89109
subject: Term;
@@ -119,6 +139,8 @@ function test_datafactory_star() {
119139
const equalToSelf: boolean = quadBobAge2.equals(quadBobAge);
120140
const notEqualToOtherType: boolean = quadBobAge2.equals(dataFactory.namedNode('ex:something:else'));
121141
}
142+
143+
const quadTerm: Quad = dataFactory.fromTerm(quadBobAge);
122144
}
123145

124146
function test_datafactory_star_basequad() {
@@ -143,6 +165,21 @@ function test_datafactory_star_basequad() {
143165
const equalToSelf: boolean = quadBobAge2.equals(quadBobAge);
144166
const notEqualToOtherType: boolean = quadBobAge2.equals(dataFactory.namedNode('ex:something:else'));
145167
}
168+
169+
const baseQuadTerm: BaseQuad = dataFactory.fromTerm(quadBobAge);
170+
171+
const baseQuad: BaseQuad = dataFactory.fromQuad(quadBobAge);
172+
173+
// Test with regular Quad
174+
const quadDataFactory: DataFactory<Quad> = <any> {};
175+
176+
const regularQuadBobAge: Quad = quadDataFactory.quad(
177+
dataFactory.namedNode('ex:bob'),
178+
dataFactory.namedNode('ex:age'),
179+
dataFactory.literal('23'),
180+
);
181+
182+
const quadTerm: Quad = quadDataFactory.fromTerm(regularQuadBobAge);
146183
}
147184

148185
function test_stream() {

0 commit comments

Comments
 (0)