Skip to content

Commit 7119268

Browse files
author
Miel Vander Sande
committed
Merge conflict
2 parents 1c62dcd + 9f4fe2a commit 7119268

35 files changed

+399
-258
lines changed

src/org/linkeddatafragments/datasource/AbstractRequestProcessor.java

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

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

66
/**
77
* Base class for implementations of {@link IFragmentRequestProcessor}.
@@ -16,22 +16,22 @@ public void close() {}
1616

1717
@Override
1818
final public ILinkedDataFragment createRequestedFragment(
19-
final LinkedDataFragmentRequest request )
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
}

src/org/linkeddatafragments/datasource/AbstractRequestProcessorForTriplePatterns.java

Lines changed: 25 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import com.hp.hpl.jena.rdf.model.Model;
44

55
import org.linkeddatafragments.fragments.ILinkedDataFragment;
6-
import org.linkeddatafragments.fragments.LinkedDataFragmentRequest;
6+
import org.linkeddatafragments.fragments.ILinkedDataFragmentRequest;
77
import org.linkeddatafragments.fragments.tpf.ITriplePatternElement;
88
import org.linkeddatafragments.fragments.tpf.ITriplePatternFragment;
99
import org.linkeddatafragments.fragments.tpf.TriplePatternFragmentImpl;
@@ -13,40 +13,46 @@
1313
* Base class for implementations of {@link IFragmentRequestProcessor} that
1414
* 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 ITriplePatternFragmentRequest<?,?> ) {
36+
if ( request instanceof ITriplePatternFragmentRequest<?,?,?> ) {
3137
@SuppressWarnings("unchecked")
32-
final ITriplePatternFragmentRequest<TermType,VarType> tpfRequest =
33-
(ITriplePatternFragmentRequest<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 ITriplePatternFragmentRequest<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 ITriplePatternFragmentRequest<TermType,VarType> request )
55+
final ITriplePatternFragmentRequest<CTT,NVT,AVT> request )
5056
{
5157
super( request );
5258
}
@@ -55,16 +61,16 @@ public Worker(
5561
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 ITriplePatternFragmentRequest<TermType,VarType> tpfRequest =
67-
(ITriplePatternFragmentRequest<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(),
@@ -73,9 +79,9 @@ public ILinkedDataFragment createRequestedFragment()
7379
}
7480

7581
abstract protected ILinkedDataFragment createFragment(
76-
final ITriplePatternElement<TermType,VarType> subj,
77-
final ITriplePatternElement<TermType,VarType> pred,
78-
final ITriplePatternElement<TermType,VarType> obj,
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;

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: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,18 @@
44

55
import org.linkeddatafragments.fragments.ILinkedDataFragment;
66
import org.linkeddatafragments.fragments.ILinkedDataFragment;
7-
import org.linkeddatafragments.fragments.LinkedDataFragmentRequest;
8-
import org.linkeddatafragments.fragments.LinkedDataFragmentRequest;
7+
import org.linkeddatafragments.fragments.ILinkedDataFragmentRequest;
8+
import org.linkeddatafragments.fragments.ILinkedDataFragmentRequest;
99

1010
/**
11-
* Processes {@link LinkedDataFragmentRequest}s and returns
11+
* Processes {@link ILinkedDataFragmentRequest}s and returns
1212
* the requested {@link ILinkedDataFragment}s.
1313
*
1414
* @author <a href="http://olafhartig.de">Olaf Hartig</a>
1515
*/
1616
public interface IFragmentRequestProcessor extends Closeable
1717
{
1818
ILinkedDataFragment createRequestedFragment(
19-
final LinkedDataFragmentRequest request )
19+
final ILinkedDataFragmentRequest request )
2020
throws IllegalArgumentException;
2121
}

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

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
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 ITriplePatternFragmentRequest<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 ITriplePatternFragmentRequest<RDFNode,String> req )
59+
public Worker(
60+
final ITriplePatternFragmentRequest<RDFNode,String,String> req )
6061
{
6162
super( req );
6263
}
6364

6465
@Override
6566
protected ILinkedDataFragment createFragment(
66-
final ITriplePatternElement<RDFNode,String> subject,
67-
final ITriplePatternElement<RDFNode,String> predicate,
68-
final ITriplePatternElement<RDFNode,String> object,
69-
final long offset,
70-
final long limit )
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/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/IndexRequestProcessorForTPFs.java

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
* @author <a href="http://olafhartig.de">Olaf Hartig</a>
2929
*/
3030
public class IndexRequestProcessorForTPFs
31-
extends AbstractRequestProcessorForTriplePatterns<RDFNode,String>
31+
extends AbstractRequestProcessorForTriplePatterns<RDFNode,String,String>
3232
{
3333
final static String RDF = "http://www.w3.org/1999/02/22-rdf-syntax-ns#";
3434
final static String RDFS = "http://www.w3.org/2000/01/rdf-schema#";
@@ -58,40 +58,42 @@ public IndexRequestProcessorForTPFs(
5858

5959
@Override
6060
protected Worker getTPFSpecificWorker(
61-
final ITriplePatternFragmentRequest<RDFNode,String> request )
61+
final ITriplePatternFragmentRequest<RDFNode,String,String> request )
6262
throws IllegalArgumentException
6363
{
6464
return new Worker( request );
6565
}
6666

6767

6868
protected class Worker
69-
extends AbstractRequestProcessorForTriplePatterns.Worker<RDFNode,String>
69+
extends AbstractRequestProcessorForTriplePatterns.Worker<RDFNode,String,String>
7070
{
71-
public Worker( final ITriplePatternFragmentRequest<RDFNode,String> req )
71+
public Worker(
72+
final ITriplePatternFragmentRequest<RDFNode,String,String> req )
7273
{
7374
super( req );
7475
}
7576

7677
@Override
7778
protected ILinkedDataFragment createFragment(
78-
final ITriplePatternElement<RDFNode,String> s,
79-
final ITriplePatternElement<RDFNode,String> p,
80-
final ITriplePatternElement<RDFNode,String> o,
81-
final long offset,
82-
final long limit )
79+
final ITriplePatternElement<RDFNode,String,String> s,
80+
final ITriplePatternElement<RDFNode,String,String> p,
81+
final ITriplePatternElement<RDFNode,String,String> o,
82+
final long offset,
83+
final long limit )
8384
{
8485
// FIXME: The following algorithm is incorrect for cases in which
8586
// the requested triple pattern contains a specific variable
86-
// multiple times (e.g., ?x foaf:knows ?x ).
87+
// multiple times;
88+
// e.g., (?x foaf:knows ?x ) or (_:bn foaf:knows _:bn)
8789
// see https://github.com/LinkedDataFragments/Server.Java/issues/25
8890

8991
final Resource subject = s.isVariable() ? null
90-
: s.asTerm().asResource();
92+
: s.asConstantTerm().asResource();
9193
final Property predicate = p.isVariable() ? null
92-
: ResourceFactory.createProperty(p.asTerm().asResource().getURI());
94+
: ResourceFactory.createProperty(p.asConstantTerm().asResource().getURI());
9395
final RDFNode object = o.isVariable() ? null
94-
: o.asTerm();
96+
: o.asConstantTerm();
9597

9698
StmtIterator listStatements = model.listStatements(subject, predicate, object);
9799
Model result = ModelFactory.createDefaultModel();

0 commit comments

Comments
 (0)