Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit77a8beb

Browse files
committed
Added QueryBuilder.bgp(), bgpTriples(), bgpTriple()
1 parent33a0cf0 commit77a8beb

File tree

2 files changed

+43
-10
lines changed

2 files changed

+43
-10
lines changed

‎src/com/atomgraph/platform/query/QueryBuilder.ts‎

Lines changed: 35 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import{Parser,Query,BaseQuery,Pattern,Expression,FilterPattern,OperationExpression,Term}from'sparqljs';
1+
import{Parser,Query,BaseQuery,Pattern,Expression,FilterPattern,BgpPattern,OperationExpression,Triple,Term}from'sparqljs';
22

33
exportclassQueryBuilder
44
{
@@ -26,11 +26,40 @@ export class QueryBuilder
2626
returnthis;
2727
}
2828

29-
publicfilter(filter:FilterPattern):QueryBuilder
29+
publicbgp(bgp:BgpPattern):QueryBuilder
3030
{
31-
this.where(filter);
31+
returnthis.where(bgp);
32+
}
3233

33-
returnthis;
34+
publicbgpTriples(triples:Triple[]):QueryBuilder
35+
{
36+
letbgp:BgpPattern={
37+
"type":"bgp",
38+
"triples":triples
39+
};
40+
41+
// if the last pattern is BGP, append triples to it instead of adding new BGP
42+
if(this.getQuery().where)
43+
{
44+
letlastPattern=this.getQuery().where![this.getQuery().where!.length-1];
45+
if(lastPattern.type==="bgp")
46+
{
47+
lastPattern.triples=lastPattern.triples.concat(triples);
48+
returnthis;
49+
}
50+
}
51+
52+
returnthis.bgp(bgp);
53+
}
54+
55+
publicbgpTriple(triple:Triple):QueryBuilder
56+
{
57+
returnthis.bgpTriples([triple]);
58+
}
59+
60+
publicfilter(filter:FilterPattern):QueryBuilder
61+
{
62+
returnthis.where(filter);
3463
}
3564

3665
publicfilterRegex(varName:string,pattern:string,caseInsensitive?:boolean):QueryBuilder
@@ -48,9 +77,7 @@ export class QueryBuilder
4877
"expression":expression
4978
};
5079

51-
this.filter(filter);
52-
53-
returnthis;
80+
returnthis.filter(filter);
5481
}
5582

5683
publicfilterIn(varName:string,list:Term[]):QueryBuilder
@@ -66,9 +93,7 @@ export class QueryBuilder
6693
"expression":expression
6794
};
6895

69-
this.filter(filter);
70-
71-
returnthis;
96+
returnthis.filter(filter);
7297
}
7398

7499
protectedgetQuery():BaseQuery

‎test/com/atomgraph/platform/query/QueryBuilder.spec.ts‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,14 @@ import 'mocha';
55

66
describe('should build an equivalent query',()=>{
77

8+
it('bgp()',()=>{
9+
letquery="SELECT ?s { ?s ?p ?o }";
10+
letexpected="SELECT ?s { ?s ?p ?o . ?s ?x \"y\" }";
11+
letactual=QueryBuilder.fromString(query).bgpTriple({subject:QueryBuilder.variable("s"),predicate:QueryBuilder.variable("x"),object:QueryBuilder.literal("y")}).build();
12+
13+
expect(actual).to.deep.equal(newParser().parse(expected));
14+
});
15+
816
it('filterRegex()',()=>{
917
letquery="SELECT ?s { ?s ?p ?o }";
1018
letexpected="SELECT ?s { ?s ?p ?o FILTER (regex(?s, \"test\")) }";

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp