Skip to content

Commit 65c1c9f

Browse files
author
Olaf Hartig
committed
separated non-Jena data related stuff out of TriplePatternFragmentImpl into TriplePatternFragmentBase
1 parent e1c9cad commit 65c1c9f

File tree

2 files changed

+142
-91
lines changed

2 files changed

+142
-91
lines changed
Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
package org.linkeddatafragments.fragments.tpf;
2+
3+
import java.util.NoSuchElementException;
4+
5+
import org.linkeddatafragments.fragments.LinkedDataFragmentBase;
6+
import org.linkeddatafragments.util.CommonResources;
7+
8+
import com.hp.hpl.jena.datatypes.xsd.XSDDatatype;
9+
import com.hp.hpl.jena.rdf.model.Literal;
10+
import com.hp.hpl.jena.rdf.model.Model;
11+
import com.hp.hpl.jena.rdf.model.Resource;
12+
import com.hp.hpl.jena.rdf.model.Statement;
13+
import com.hp.hpl.jena.rdf.model.StmtIterator;
14+
import com.hp.hpl.jena.util.iterator.NiceIterator;
15+
16+
/**
17+
* Base class for implementations of {@link TriplePatternFragment}.
18+
*
19+
* @author Ruben Verborgh
20+
* @author <a href="http://olafhartig.de">Olaf Hartig</a>
21+
*/
22+
abstract public class TriplePatternFragmentBase extends LinkedDataFragmentBase
23+
implements TriplePatternFragment
24+
{
25+
private final long totalSize;
26+
27+
/**
28+
* Creates an empty Triple Pattern Fragment.
29+
*/
30+
public TriplePatternFragmentBase( final String fragmentURL,
31+
final String datasetURL ) {
32+
this( 0L, fragmentURL, datasetURL, 1, true );
33+
}
34+
35+
/**
36+
* Creates an empty Triple Pattern Fragment page.
37+
*/
38+
public TriplePatternFragmentBase( final String fragmentURL,
39+
final String datasetURL,
40+
final long pageNumber,
41+
final boolean isLastPage ) {
42+
this( 0L, fragmentURL, datasetURL, pageNumber, isLastPage );
43+
}
44+
45+
/**
46+
* Creates a new Triple Pattern Fragment.
47+
* @param totalSize the total size
48+
*/
49+
public TriplePatternFragmentBase( long totalSize,
50+
final String fragmentURL,
51+
final String datasetURL,
52+
final long pageNumber,
53+
final boolean isLastPage ) {
54+
super( fragmentURL, datasetURL, pageNumber, isLastPage );
55+
this.totalSize = totalSize < 0L ? 0L : totalSize;
56+
}
57+
58+
@Override
59+
public StmtIterator getTriples() {
60+
if ( totalSize == 0L )
61+
return emptyStmtIterator;
62+
else
63+
return getNonEmptyStmtIterator();
64+
}
65+
66+
abstract protected StmtIterator getNonEmptyStmtIterator();
67+
68+
@Override
69+
public long getTotalSize() {
70+
return totalSize;
71+
}
72+
73+
@Override
74+
public void addMetadata( final Model model )
75+
{
76+
super.addMetadata( model );
77+
78+
final Resource fragmentId = model.createResource( fragmentURL );
79+
80+
final Literal totalTyped = model.createTypedLiteral( totalSize,
81+
XSDDatatype.XSDinteger );
82+
final Literal limitTyped = model.createTypedLiteral( getMaxPageSize(),
83+
XSDDatatype.XSDinteger );
84+
85+
fragmentId.addLiteral( CommonResources.VOID_TRIPLES, totalTyped );
86+
fragmentId.addLiteral( CommonResources.HYDRA_TOTALITEMS, totalTyped );
87+
fragmentId.addLiteral( CommonResources.HYDRA_ITEMSPERPAGE, limitTyped );
88+
}
89+
90+
@Override
91+
public void addControls( final Model model )
92+
{
93+
super.addControls( model );
94+
95+
final Resource datasetId = model.createResource( getDatasetURI() );
96+
97+
final Resource triplePattern = model.createResource();
98+
final Resource subjectMapping = model.createResource();
99+
final Resource predicateMapping = model.createResource();
100+
final Resource objectMapping = model.createResource();
101+
102+
datasetId.addProperty( CommonResources.HYDRA_SEARCH, triplePattern );
103+
104+
triplePattern.addProperty( CommonResources.HYDRA_TEMPLATE, getTemplate() );
105+
triplePattern.addProperty( CommonResources.HYDRA_MAPPING, subjectMapping );
106+
triplePattern.addProperty( CommonResources.HYDRA_MAPPING, predicateMapping );
107+
triplePattern.addProperty( CommonResources.HYDRA_MAPPING, objectMapping );
108+
109+
subjectMapping.addProperty( CommonResources.HYDRA_VARIABLE, TriplePatternFragmentRequest.PARAMETERNAME_SUBJ );
110+
subjectMapping.addProperty( CommonResources.HYDRA_PROPERTY, CommonResources.RDF_SUBJECT );
111+
112+
predicateMapping.addProperty( CommonResources.HYDRA_VARIABLE, TriplePatternFragmentRequest.PARAMETERNAME_PRED );
113+
predicateMapping.addProperty( CommonResources.HYDRA_PROPERTY, CommonResources.RDF_PREDICATE );
114+
115+
objectMapping.addProperty( CommonResources.HYDRA_VARIABLE, TriplePatternFragmentRequest.PARAMETERNAME_OBJ );
116+
objectMapping.addProperty( CommonResources.HYDRA_PROPERTY, CommonResources.RDF_OBJECT );
117+
}
118+
119+
public String getTemplate() {
120+
return datasetURL + "{?" +
121+
TriplePatternFragmentRequest.PARAMETERNAME_SUBJ + "," +
122+
TriplePatternFragmentRequest.PARAMETERNAME_PRED + "," +
123+
TriplePatternFragmentRequest.PARAMETERNAME_OBJ + "}";
124+
}
125+
126+
127+
public static final StmtIterator emptyStmtIterator = new EmptyStmtIterator();
128+
129+
public static class EmptyStmtIterator
130+
extends NiceIterator<Statement>
131+
implements StmtIterator
132+
{
133+
public Statement nextStatement() { throw new NoSuchElementException(); }
134+
}
135+
136+
}
Lines changed: 6 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,16 @@
11
package org.linkeddatafragments.fragments.tpf;
22

3-
import java.util.NoSuchElementException;
4-
5-
import org.linkeddatafragments.fragments.LinkedDataFragmentBase;
6-
import org.linkeddatafragments.util.CommonResources;
7-
8-
import com.hp.hpl.jena.datatypes.xsd.XSDDatatype;
9-
import com.hp.hpl.jena.rdf.model.Literal;
103
import com.hp.hpl.jena.rdf.model.Model;
11-
import com.hp.hpl.jena.rdf.model.Resource;
12-
import com.hp.hpl.jena.rdf.model.Statement;
134
import com.hp.hpl.jena.rdf.model.StmtIterator;
14-
import com.hp.hpl.jena.util.iterator.NiceIterator;
155

166
/**
177
* Implementation of {@link TriplePatternFragment}.
188
*
19-
* @author Ruben Verborgh
209
* @author <a href="http://olafhartig.de">Olaf Hartig</a>
2110
*/
22-
public class TriplePatternFragmentImpl extends LinkedDataFragmentBase
23-
implements TriplePatternFragment
11+
public class TriplePatternFragmentImpl extends TriplePatternFragmentBase
2412
{
25-
private final Model triples;
26-
private final long totalSize;
13+
protected final Model triples;
2714

2815
/**
2916
* Creates an empty Triple Pattern Fragment.
@@ -48,91 +35,19 @@ public TriplePatternFragmentImpl( final String fragmentURL,
4835
* @param triples the triples (possibly partial)
4936
* @param totalSize the total size
5037
*/
51-
public TriplePatternFragmentImpl( Model triples,
38+
public TriplePatternFragmentImpl( final Model triples,
5239
long totalSize,
5340
final String fragmentURL,
5441
final String datasetURL,
5542
final long pageNumber,
5643
final boolean isLastPage ) {
57-
super( fragmentURL, datasetURL, pageNumber, isLastPage );
44+
super( totalSize, fragmentURL, datasetURL, pageNumber, isLastPage );
5845
this.triples = triples;
59-
this.totalSize = totalSize < 0 ? 0 : totalSize;
60-
}
61-
62-
@Override
63-
public StmtIterator getTriples() {
64-
if ( triples != null )
65-
return triples.listStatements();
66-
else
67-
return emptyStmtIterator;
68-
}
69-
70-
@Override
71-
public long getTotalSize() {
72-
return totalSize;
73-
}
74-
75-
@Override
76-
public void addMetadata( final Model model )
77-
{
78-
super.addMetadata( model );
79-
80-
final Resource fragmentId = model.createResource( fragmentURL );
81-
82-
final Literal totalTyped = model.createTypedLiteral( totalSize,
83-
XSDDatatype.XSDinteger );
84-
final Literal limitTyped = model.createTypedLiteral( getMaxPageSize(),
85-
XSDDatatype.XSDinteger );
86-
87-
fragmentId.addLiteral( CommonResources.VOID_TRIPLES, totalTyped );
88-
fragmentId.addLiteral( CommonResources.HYDRA_TOTALITEMS, totalTyped );
89-
fragmentId.addLiteral( CommonResources.HYDRA_ITEMSPERPAGE, limitTyped );
9046
}
9147

9248
@Override
93-
public void addControls( final Model model )
94-
{
95-
super.addControls( model );
96-
97-
final Resource datasetId = model.createResource( getDatasetURI() );
98-
99-
final Resource triplePattern = model.createResource();
100-
final Resource subjectMapping = model.createResource();
101-
final Resource predicateMapping = model.createResource();
102-
final Resource objectMapping = model.createResource();
103-
104-
datasetId.addProperty( CommonResources.HYDRA_SEARCH, triplePattern );
105-
106-
triplePattern.addProperty( CommonResources.HYDRA_TEMPLATE, getTemplate() );
107-
triplePattern.addProperty( CommonResources.HYDRA_MAPPING, subjectMapping );
108-
triplePattern.addProperty( CommonResources.HYDRA_MAPPING, predicateMapping );
109-
triplePattern.addProperty( CommonResources.HYDRA_MAPPING, objectMapping );
110-
111-
subjectMapping.addProperty( CommonResources.HYDRA_VARIABLE, TriplePatternFragmentRequest.PARAMETERNAME_SUBJ );
112-
subjectMapping.addProperty( CommonResources.HYDRA_PROPERTY, CommonResources.RDF_SUBJECT );
113-
114-
predicateMapping.addProperty( CommonResources.HYDRA_VARIABLE, TriplePatternFragmentRequest.PARAMETERNAME_PRED );
115-
predicateMapping.addProperty( CommonResources.HYDRA_PROPERTY, CommonResources.RDF_PREDICATE );
116-
117-
objectMapping.addProperty( CommonResources.HYDRA_VARIABLE, TriplePatternFragmentRequest.PARAMETERNAME_OBJ );
118-
objectMapping.addProperty( CommonResources.HYDRA_PROPERTY, CommonResources.RDF_OBJECT );
119-
}
120-
121-
public String getTemplate() {
122-
return datasetURL + "{?" +
123-
TriplePatternFragmentRequest.PARAMETERNAME_SUBJ + "," +
124-
TriplePatternFragmentRequest.PARAMETERNAME_PRED + "," +
125-
TriplePatternFragmentRequest.PARAMETERNAME_OBJ + "}";
126-
}
127-
128-
129-
public static final StmtIterator emptyStmtIterator = new EmptyStmtIterator();
130-
131-
public static class EmptyStmtIterator
132-
extends NiceIterator<Statement>
133-
implements StmtIterator
134-
{
135-
public Statement nextStatement() { throw new NoSuchElementException(); }
49+
protected StmtIterator getNonEmptyStmtIterator() {
50+
return triples.listStatements();
13651
}
13752

13853
}

0 commit comments

Comments
 (0)