Skip to content

Commit af2add6

Browse files
committed
Merge pull request #6 from LinkedDataFragments/master
merging in latest changes from origin
2 parents f03b8ed + 9f4fe2a commit af2add6

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+515
-372
lines changed

src/org/linkeddatafragments/datasource/AbstractRequestProcessor.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package org.linkeddatafragments.datasource;
22

3-
import org.linkeddatafragments.fragments.LinkedDataFragment;
4-
import org.linkeddatafragments.fragments.LinkedDataFragmentRequest;
3+
import org.linkeddatafragments.fragments.ILinkedDataFragment;
4+
import org.linkeddatafragments.fragments.ILinkedDataFragmentRequest;
55

66
/**
77
* Base class for implementations of {@link IFragmentRequestProcessor}.
@@ -15,28 +15,28 @@ abstract public class AbstractRequestProcessor
1515
public void close() {}
1616

1717
@Override
18-
final public LinkedDataFragment createRequestedFragment(
19-
final LinkedDataFragmentRequest request )
18+
final public ILinkedDataFragment createRequestedFragment(
19+
final ILinkedDataFragmentRequest request )
2020
throws IllegalArgumentException
2121
{
2222
return getWorker( request ).createRequestedFragment();
2323
}
2424

2525
abstract protected Worker getWorker(
26-
final LinkedDataFragmentRequest request )
26+
final ILinkedDataFragmentRequest request )
2727
throws IllegalArgumentException;
2828

2929

3030
abstract static protected class Worker
3131
{
32-
public final LinkedDataFragmentRequest request;
32+
public final ILinkedDataFragmentRequest request;
3333

34-
public Worker( final LinkedDataFragmentRequest request )
34+
public Worker( final ILinkedDataFragmentRequest request )
3535
{
3636
this.request = request;
3737
}
3838

39-
abstract public LinkedDataFragment createRequestedFragment()
39+
abstract public ILinkedDataFragment createRequestedFragment()
4040
throws IllegalArgumentException;
4141

4242
} // end of class Worker

src/org/linkeddatafragments/datasource/AbstractRequestProcessorForTriplePatterns.java

Lines changed: 34 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -2,91 +2,97 @@
22

33
import com.hp.hpl.jena.rdf.model.Model;
44

5-
import org.linkeddatafragments.fragments.LinkedDataFragment;
6-
import org.linkeddatafragments.fragments.LinkedDataFragmentRequest;
7-
import org.linkeddatafragments.fragments.tpf.TriplePatternElement;
8-
import org.linkeddatafragments.fragments.tpf.TriplePatternFragment;
5+
import org.linkeddatafragments.fragments.ILinkedDataFragment;
6+
import org.linkeddatafragments.fragments.ILinkedDataFragmentRequest;
7+
import org.linkeddatafragments.fragments.tpf.ITriplePatternElement;
8+
import org.linkeddatafragments.fragments.tpf.ITriplePatternFragment;
99
import org.linkeddatafragments.fragments.tpf.TriplePatternFragmentImpl;
10-
import org.linkeddatafragments.fragments.tpf.TriplePatternFragmentRequest;
10+
import org.linkeddatafragments.fragments.tpf.ITriplePatternFragmentRequest;
1111

1212
/**
1313
* Base class for implementations of {@link IFragmentRequestProcessor} that
14-
* process {@link TriplePatternFragmentRequest}s.
14+
* process {@link ITriplePatternFragmentRequest}s.
1515
*
16-
* @param <TermType> type for representing RDF terms in triple patterns
17-
* @param <VarType> type for representing specific variables in triple patterns
16+
* @param <CTT>
17+
* type for representing constants in triple patterns (i.e., URIs and
18+
* literals)
19+
* @param <NVT>
20+
* type for representing named variables in triple patterns
21+
* @param <AVT>
22+
* type for representing anonymous variables in triple patterns (i.e.,
23+
* variables denoted by a blank node)
1824
*
1925
* @author <a href="http://olafhartig.de">Olaf Hartig</a>
2026
*/
2127
public abstract class
22-
AbstractRequestProcessorForTriplePatterns<TermType,VarType>
28+
AbstractRequestProcessorForTriplePatterns<CTT,NVT,AVT>
2329
extends AbstractRequestProcessor
2430
{
2531
@Override
26-
protected final Worker<TermType,VarType> getWorker(
27-
final LinkedDataFragmentRequest request )
32+
protected final Worker<CTT,NVT,AVT> getWorker(
33+
final ILinkedDataFragmentRequest request )
2834
throws IllegalArgumentException
2935
{
30-
if ( request instanceof TriplePatternFragmentRequest<?,?> ) {
36+
if ( request instanceof ITriplePatternFragmentRequest<?,?,?> ) {
3137
@SuppressWarnings("unchecked")
32-
final TriplePatternFragmentRequest<TermType,VarType> tpfRequest =
33-
(TriplePatternFragmentRequest<TermType,VarType>) request;
38+
final ITriplePatternFragmentRequest<CTT,NVT,AVT> tpfRequest =
39+
(ITriplePatternFragmentRequest<CTT,NVT,AVT>) request;
3440
return getTPFSpecificWorker( tpfRequest );
3541
}
3642
else
3743
throw new IllegalArgumentException( request.getClass().getName() );
3844
}
3945

40-
abstract protected Worker<TermType,VarType> getTPFSpecificWorker(
41-
final TriplePatternFragmentRequest<TermType,VarType> request )
46+
abstract protected Worker<CTT,NVT,AVT> getTPFSpecificWorker(
47+
final ITriplePatternFragmentRequest<CTT,NVT,AVT> request )
4248
throws IllegalArgumentException;
4349

4450

45-
abstract static protected class Worker<TermType,VarType>
51+
abstract static protected class Worker<CTT,NVT,AVT>
4652
extends AbstractRequestProcessor.Worker
4753
{
4854
public Worker(
49-
final TriplePatternFragmentRequest<TermType,VarType> request )
55+
final ITriplePatternFragmentRequest<CTT,NVT,AVT> request )
5056
{
5157
super( request );
5258
}
5359

5460
@Override
55-
public LinkedDataFragment createRequestedFragment()
61+
public ILinkedDataFragment createRequestedFragment()
5662
throws IllegalArgumentException
5763
{
58-
final long limit = LinkedDataFragmentRequest.TRIPLESPERPAGE;
64+
final long limit = ILinkedDataFragmentRequest.TRIPLESPERPAGE;
5965
final long offset;
6066
if ( request.isPageRequest() )
6167
offset = limit * ( request.getPageNumber() - 1L );
6268
else
6369
offset = 0L;
6470

6571
@SuppressWarnings("unchecked")
66-
final TriplePatternFragmentRequest<TermType,VarType> tpfRequest =
67-
(TriplePatternFragmentRequest<TermType,VarType>) request;
72+
final ITriplePatternFragmentRequest<CTT,NVT,AVT> tpfRequest =
73+
(ITriplePatternFragmentRequest<CTT,NVT,AVT>) request;
6874

6975
return createFragment( tpfRequest.getSubject(),
7076
tpfRequest.getPredicate(),
7177
tpfRequest.getObject(),
7278
offset, limit );
7379
}
7480

75-
abstract protected LinkedDataFragment createFragment(
76-
final TriplePatternElement<TermType,VarType> subj,
77-
final TriplePatternElement<TermType,VarType> pred,
78-
final TriplePatternElement<TermType,VarType> obj,
81+
abstract protected ILinkedDataFragment createFragment(
82+
final ITriplePatternElement<CTT,NVT,AVT> subj,
83+
final ITriplePatternElement<CTT,NVT,AVT> pred,
84+
final ITriplePatternElement<CTT,NVT,AVT> obj,
7985
final long offset,
8086
final long limit )
8187
throws IllegalArgumentException;
8288

83-
protected TriplePatternFragment createEmptyTriplePatternFragment()
89+
protected ITriplePatternFragment createEmptyTriplePatternFragment()
8490
{
8591
return new TriplePatternFragmentImpl( request.getFragmentURL(),
8692
request.getDatasetURL() );
8793
}
8894

89-
protected TriplePatternFragment createTriplePatternFragment(
95+
protected ITriplePatternFragment createTriplePatternFragment(
9096
final Model triples,
9197
final long totalSize,
9298
final boolean isLastPage )

src/org/linkeddatafragments/datasource/DataSource.java renamed to src/org/linkeddatafragments/datasource/DataSourceBase.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@
55
* @author mielvandersande
66
* @author Bart Hanssens
77
*/
8-
public abstract class DataSource implements IDataSource {
8+
public abstract class DataSourceBase implements IDataSource {
99
protected String title;
1010
protected String description;
1111

12-
public DataSource(String title, String description) {
12+
public DataSourceBase(String title, String description) {
1313
this.title = title;
1414
this.description = description;
1515
}

src/org/linkeddatafragments/datasource/DataSourceFactory.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package org.linkeddatafragments.datasource;
22

33
import com.google.gson.JsonObject;
4-
import org.linkeddatafragments.exceptions.DataSourceException;
4+
import org.linkeddatafragments.exceptions.DataSourceCreationException;
55
import org.linkeddatafragments.exceptions.UnknownDataSourceTypeException;
66

77
/**
@@ -16,9 +16,9 @@ public class DataSourceFactory {
1616
*
1717
* @param config
1818
* @return datasource interface
19-
* @throws DataSourceException
19+
* @throws DataSourceCreationException
2020
*/
21-
public static IDataSource create(JsonObject config) throws DataSourceException {
21+
public static IDataSource create(JsonObject config) throws DataSourceCreationException {
2222
String title = config.getAsJsonPrimitive("title").getAsString();
2323
String description = config.getAsJsonPrimitive("description").getAsString();
2424
String typeName = config.getAsJsonPrimitive("type").getAsString();

src/org/linkeddatafragments/datasource/IDataSourceType.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package org.linkeddatafragments.datasource;
22

3-
import org.linkeddatafragments.exceptions.DataSourceException;
3+
import org.linkeddatafragments.exceptions.DataSourceCreationException;
44

55
import com.google.gson.JsonObject;
66

@@ -28,5 +28,5 @@ public interface IDataSourceType
2828
IDataSource createDataSource( final String title,
2929
final String description,
3030
final JsonObject settings )
31-
throws DataSourceException;
31+
throws DataSourceCreationException;
3232
}

src/org/linkeddatafragments/datasource/IFragmentRequestProcessor.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,20 @@
22

33
import java.io.Closeable;
44

5-
import org.linkeddatafragments.fragments.LinkedDataFragment;
6-
import org.linkeddatafragments.fragments.LinkedDataFragmentRequest;
5+
import org.linkeddatafragments.fragments.ILinkedDataFragment;
6+
import org.linkeddatafragments.fragments.ILinkedDataFragment;
7+
import org.linkeddatafragments.fragments.ILinkedDataFragmentRequest;
8+
import org.linkeddatafragments.fragments.ILinkedDataFragmentRequest;
79

810
/**
9-
* Processes {@link LinkedDataFragmentRequest}s and returns
10-
* the requested {@link LinkedDataFragment}s.
11+
* Processes {@link ILinkedDataFragmentRequest}s and returns
12+
* the requested {@link ILinkedDataFragment}s.
1113
*
1214
* @author <a href="http://olafhartig.de">Olaf Hartig</a>
1315
*/
1416
public interface IFragmentRequestProcessor extends Closeable
1517
{
16-
LinkedDataFragment createRequestedFragment(
17-
final LinkedDataFragmentRequest request )
18+
ILinkedDataFragment createRequestedFragment(
19+
final ILinkedDataFragmentRequest request )
1820
throws IllegalArgumentException;
1921
}

src/org/linkeddatafragments/datasource/hdt/HdtBasedRequestProcessorForTPFs.java

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44

55
import org.linkeddatafragments.datasource.AbstractRequestProcessorForTriplePatterns;
66
import org.linkeddatafragments.datasource.IFragmentRequestProcessor;
7-
import org.linkeddatafragments.fragments.LinkedDataFragment;
8-
import org.linkeddatafragments.fragments.tpf.TriplePatternElement;
9-
import org.linkeddatafragments.fragments.tpf.TriplePatternFragmentRequest;
7+
import org.linkeddatafragments.fragments.ILinkedDataFragment;
8+
import org.linkeddatafragments.fragments.tpf.ITriplePatternElement;
9+
import org.linkeddatafragments.fragments.tpf.ITriplePatternFragmentRequest;
1010
import org.rdfhdt.hdt.enums.TripleComponentRole;
1111
import org.rdfhdt.hdt.hdt.HDT;
1212
import org.rdfhdt.hdt.hdt.HDTManager;
@@ -21,13 +21,13 @@
2121

2222
/**
2323
* Implementation of {@link IFragmentRequestProcessor} that processes
24-
* {@link TriplePatternFragmentRequest}s over data stored in HDT.
24+
* {@link ITriplePatternFragmentRequest}s over data stored in HDT.
2525
*
2626
* @author Ruben Verborgh
2727
* @author <a href="http://olafhartig.de">Olaf Hartig</a>
2828
*/
2929
public class HdtBasedRequestProcessorForTPFs
30-
extends AbstractRequestProcessorForTriplePatterns<RDFNode,String>
30+
extends AbstractRequestProcessorForTriplePatterns<RDFNode,String,String>
3131
{
3232
protected final HDT datasource;
3333
protected final NodeDictionary dictionary;
@@ -46,38 +46,40 @@ public HdtBasedRequestProcessorForTPFs( String hdtFile ) throws IOException
4646

4747
@Override
4848
protected Worker getTPFSpecificWorker(
49-
final TriplePatternFragmentRequest<RDFNode,String> request )
49+
final ITriplePatternFragmentRequest<RDFNode,String,String> request )
5050
throws IllegalArgumentException
5151
{
5252
return new Worker( request );
5353
}
5454

5555

5656
protected class Worker
57-
extends AbstractRequestProcessorForTriplePatterns.Worker<RDFNode,String>
57+
extends AbstractRequestProcessorForTriplePatterns.Worker<RDFNode,String,String>
5858
{
59-
public Worker( final TriplePatternFragmentRequest<RDFNode,String> req )
59+
public Worker(
60+
final ITriplePatternFragmentRequest<RDFNode,String,String> req )
6061
{
6162
super( req );
6263
}
6364

6465
@Override
65-
protected LinkedDataFragment createFragment(
66-
final TriplePatternElement<RDFNode,String> subject,
67-
final TriplePatternElement<RDFNode,String> predicate,
68-
final TriplePatternElement<RDFNode,String> object,
69-
final long offset,
70-
final long limit )
66+
protected ILinkedDataFragment createFragment(
67+
final ITriplePatternElement<RDFNode,String,String> subject,
68+
final ITriplePatternElement<RDFNode,String,String> predicate,
69+
final ITriplePatternElement<RDFNode,String,String> object,
70+
final long offset,
71+
final long limit )
7172
{
7273
// FIXME: The following algorithm is incorrect for cases in which
7374
// the requested triple pattern contains a specific variable
74-
// multiple times (e.g., ?x foaf:knows ?x ).
75+
// multiple times;
76+
// e.g., (?x foaf:knows ?x ) or (_:bn foaf:knows _:bn)
7577
// see https://github.com/LinkedDataFragments/Server.Java/issues/23
7678

7779
// look up the result from the HDT datasource)
78-
int subjectId = subject.isVariable() ? 0 : dictionary.getIntID(subject.asTerm().asNode(), TripleComponentRole.SUBJECT);
79-
int predicateId = predicate.isVariable() ? 0 : dictionary.getIntID(predicate.asTerm().asNode(), TripleComponentRole.PREDICATE);
80-
int objectId = object.isVariable() ? 0 : dictionary.getIntID(object.asTerm().asNode(), TripleComponentRole.OBJECT);
80+
int subjectId = subject.isVariable() ? 0 : dictionary.getIntID(subject.asConstantTerm().asNode(), TripleComponentRole.SUBJECT);
81+
int predicateId = predicate.isVariable() ? 0 : dictionary.getIntID(predicate.asConstantTerm().asNode(), TripleComponentRole.PREDICATE);
82+
int objectId = object.isVariable() ? 0 : dictionary.getIntID(object.asConstantTerm().asNode(), TripleComponentRole.OBJECT);
8183

8284
if (subjectId < 0 || predicateId < 0 || objectId < 0) {
8385
return createEmptyTriplePatternFragment();

src/org/linkeddatafragments/datasource/hdt/HdtDataSource.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import java.io.IOException;
44

5-
import org.linkeddatafragments.datasource.DataSource;
5+
import org.linkeddatafragments.datasource.DataSourceBase;
66
import org.linkeddatafragments.datasource.IFragmentRequestProcessor;
77
import org.linkeddatafragments.fragments.IFragmentRequestParser;
88
import org.linkeddatafragments.fragments.tpf.TPFRequestParserForJenaBackends;
@@ -13,7 +13,7 @@
1313
* @author Ruben Verborgh
1414
* @author <a href="http://olafhartig.de">Olaf Hartig</a>
1515
*/
16-
public class HdtDataSource extends DataSource {
16+
public class HdtDataSource extends DataSourceBase {
1717

1818
protected final HdtBasedRequestProcessorForTPFs requestProcessor;
1919

src/org/linkeddatafragments/datasource/hdt/HdtDataSourceType.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
import org.linkeddatafragments.datasource.IDataSource;
77
import org.linkeddatafragments.datasource.IDataSourceType;
8-
import org.linkeddatafragments.exceptions.DataSourceException;
8+
import org.linkeddatafragments.exceptions.DataSourceCreationException;
99

1010
import com.google.gson.JsonObject;
1111

@@ -20,15 +20,15 @@ public class HdtDataSourceType implements IDataSourceType
2020
public IDataSource createDataSource( final String title,
2121
final String description,
2222
final JsonObject settings )
23-
throws DataSourceException
23+
throws DataSourceCreationException
2424
{
2525
final String fname = settings.getAsJsonPrimitive("file").getAsString();
2626
final File file = new File( fname );
2727

2828
try {
2929
return new HdtDataSource(title, description, file.getAbsolutePath());
3030
} catch (IOException ex) {
31-
throw new DataSourceException(ex);
31+
throw new DataSourceCreationException(ex);
3232
}
3333
}
3434

src/org/linkeddatafragments/datasource/index/IndexDataSource.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import java.util.HashMap;
44

5-
import org.linkeddatafragments.datasource.DataSource;
5+
import org.linkeddatafragments.datasource.DataSourceBase;
66
import org.linkeddatafragments.datasource.IDataSource;
77
import org.linkeddatafragments.datasource.IFragmentRequestProcessor;
88
import org.linkeddatafragments.fragments.IFragmentRequestParser;
@@ -14,7 +14,7 @@
1414
* @author Miel Vander Sande
1515
* @author <a href="http://olafhartig.de">Olaf Hartig</a>
1616
*/
17-
public class IndexDataSource extends DataSource {
17+
public class IndexDataSource extends DataSourceBase {
1818

1919
protected final IndexRequestProcessorForTPFs requestProcessor;
2020

0 commit comments

Comments
 (0)