package eu.fbk.knowledgestore.internal.jaxrs;
import eu.fbk.knowledgestore.Outcome;
import eu.fbk.knowledgestore.data.Record;
import eu.fbk.knowledgestore.data.Stream;
import eu.fbk.knowledgestore.internal.rdf.HtmlRDF;
import eu.fbk.knowledgestore.internal.rdf.HtmlSparql;
import eu.fbk.knowledgestore.vocabulary.KS;
import eu.fbk.rdfpro.tql.TQL;
import org.openrdf.model.Statement;
import org.openrdf.model.URI;
import org.openrdf.query.BindingSet;
import javax.ws.rs.core.GenericType;
public final class Protocol {
// Type declarations
public static final GenericType<Stream<Record>> STREAM_OF_RECORDS //
= new GenericType<Stream<Record>>() { /* empty */};
public static final GenericType<Stream<Outcome>> STREAM_OF_OUTCOMES //
= new GenericType<Stream<Outcome>>() { /* empty */};
public static final GenericType<Stream<Statement>> STREAM_OF_STATEMENTS //
= new GenericType<Stream<Statement>>() { /* empty */};
public static final GenericType<Stream<BindingSet>> STREAM_OF_TUPLES //
= new GenericType<Stream<BindingSet>>() { /* empty */};
public static final GenericType<Stream<Boolean>> STREAM_OF_BOOLEANS //
= new GenericType<Stream<Boolean>>() { /* empty */};
// MIME types
public static final String MIME_TYPES_RDF = "" //
+ "application/ld+json;charset=UTF-8," //
+ "application/rdf+xml;charset=UTF-8," //
+ "application/n-triples;charset=UTF-8," //
+ "text/x-nquads;charset=UTF-8," //
+ "application/x-tql;charset=UTF-8," //
+ "text/turtle;charset=UTF-8," //
+ "text/n3;charset=UTF-8," //
+ "application/trix;charset=UTF-8," //
+ "application/x-trig;charset=UTF-8," //
+ "application/x-binary-rdf," //
+ "application/rdf+json;charset=UTF-8," //
+ "text/html;charset=UTF-8";
public static final String MIME_TYPES_SPARQL_TUPLE = "" //
+ "application/sparql-results+json;charset=UTF-8," //
+ "application/sparql-results+xml;charset=UTF-8," //
+ "text/csv;charset=UTF-8," //
+ "text/tab-separated-values;charset=UTF-8," //
+ "application/x-binary-rdf-results-table," //
+ "text/html;charset=UTF-8";
public static final String MIME_TYPES_SPARQL_BOOLEAN = "" //
+ "application/sparql-results+json;charset=UTF-8,"
+ "application/sparql-results+xml;charset=UTF-8," //
+ "text/boolean;charset=UTF-8," //
+ "text/html;charset=UTF-8";
public static final String MIME_TYPES_ALL = MIME_TYPES_RDF + "," + MIME_TYPES_SPARQL_TUPLE
+ "," + MIME_TYPES_SPARQL_BOOLEAN;
// Paths
public static final String PATH_REPRESENTATIONS = "files";
public static final String PATH_RESOURCES = "resources";
public static final String PATH_MENTIONS = "mentions";
public static final String PATH_ENTITIES = "entities";
public static final String PATH_AXIOMS = "axioms";
public static final String PATH_MATCH = "match";
public static final String PATH_UPDATE = "triplestoreupdate";
public static final String PATH_DELETE = "triplestoredelete";
public static final String PATH_CUSTOM = "custom";
public static final String PATH_SPARQL = "sparql";
public static final String SUBPATH_COUNT = "count";
public static final String SUBPATH_CREATE = "create";
public static final String SUBPATH_MERGE = "merge";
public static final String SUBPATH_UPDATE = "update";
public static final String SUBPATH_DELETE = "delete";
public static final String PARAMETER_PROBE = "probe";
public static final String PARAMETER_ACCEPT = "accept";
public static final String PARAMETER_TIMEOUT = "timeout";
public static final String PARAMETER_ID = "id";
public static final String PARAMETER_CONDITION = "condition";
public static final String PARAMETER_PROPERTY = "property";
public static final String PARAMETER_OFFSET = "offset";
public static final String PARAMETER_LIMIT = "limit";
public static final String PARAMETER_CRITERIA = "criteria";
public static final String PARAMETER_QUERY = "query";
public static final String PARAMETER_DEFAULT_GRAPH = "default-graph-uri";
public static final String PARAMETER_NAMED_GRAPH = "named-graph-uri";
public static final String HEADER_INVOCATION = "X-KS-Invocation";
public static final String HEADER_CHUNKED = "X-KS-Chunked";
public static final String HEADER_META = "X-KS-Content-Meta";
public static final String[] HTTPS_PROTOCOLS = new String[] { "TLSv1" };
public static final String[] HTTPS_CIPHER_SUITES = new String[] {
"TLS_DHE_RSA_WITH_AES_128_CBC_SHA", "SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA",
"TLS_RSA_WITH_AES_128_CBC_SHA", "SSL_RSA_WITH_3DES_EDE_CBC_SHA",
"TLS_DHE_DSS_WITH_AES_128_CBC_SHA", "SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA" };
public static String pathFor(final URI type) {
if (KS.RESOURCE.equals(type)) {
return PATH_RESOURCES;
} else if (KS.MENTION.equals(type)) {
return PATH_MENTIONS;
} else if (KS.ENTITY.equals(type)) {
return PATH_ENTITIES;
} else if (KS.AXIOM.equals(type)) {
return PATH_AXIOMS;
} else if (KS.REPRESENTATION.equals(type)) {
return PATH_REPRESENTATIONS;
}
throw new IllegalArgumentException("Invalid type " + type);
}
public static URI typeFor(final String path) {
if (path.equals(PATH_RESOURCES)) {
return KS.RESOURCE;
} else if (path.equals(PATH_MENTIONS)) {
return KS.MENTION;
} else if (path.equals(PATH_ENTITIES)) {
return KS.ENTITY;
} else if (path.equals(PATH_AXIOMS)) {
return KS.AXIOM;
} else if (path.equals(PATH_REPRESENTATIONS)) {
return KS.REPRESENTATION;
}
throw new IllegalArgumentException("Invalid path " + path);
}
static {
try {
TQL.register();
} catch (Throwable ex) {
// ignore: RDFpro TQL lib not available
}
HtmlRDF.register();
HtmlSparql.register();
}
}