|
From: <mrp...@us...> - 2014-09-02 19:28:40
|
Revision: 8637
http://sourceforge.net/p/bigdata/code/8637
Author: mrpersonick
Date: 2014-09-02 19:28:35 +0000 (Tue, 02 Sep 2014)
Log Message:
-----------
Ticket #714: Sesame 2.7. Tidying up some CI loose ends.
Modified Paths:
--------------
branches/SESAME_2_7/bigdata-rdf/src/java/com/bigdata/rdf/sparql/ast/eval/ASTEvalHelper.java
branches/SESAME_2_7/bigdata-rdf/src/test/com/bigdata/rdf/sparql/ast/eval/service/TestRemoteSparql10QueryBuilder.java
branches/SESAME_2_7/bigdata-rdf/src/test/com/bigdata/rdf/sparql/ast/eval/service/TestRemoteSparql11QueryBuilder.java
branches/SESAME_2_7/bigdata-sails/src/java/com/bigdata/rdf/sail/sparql/PrefixDeclProcessor.java
Modified: branches/SESAME_2_7/bigdata-rdf/src/java/com/bigdata/rdf/sparql/ast/eval/ASTEvalHelper.java
===================================================================
--- branches/SESAME_2_7/bigdata-rdf/src/java/com/bigdata/rdf/sparql/ast/eval/ASTEvalHelper.java 2014-09-02 16:01:51 UTC (rev 8636)
+++ branches/SESAME_2_7/bigdata-rdf/src/java/com/bigdata/rdf/sparql/ast/eval/ASTEvalHelper.java 2014-09-02 19:28:35 UTC (rev 8637)
@@ -953,6 +953,10 @@
// final Map<String, BindingsClause> nsBindingsClauses,
final List<BindingsClause> bindingsClauses) {
+ if (group == null) {
+ return;
+ }
+
if (group instanceof JoinGroupNode && ((JoinGroupNode) group).isOptional()) {
return;
}
Modified: branches/SESAME_2_7/bigdata-rdf/src/test/com/bigdata/rdf/sparql/ast/eval/service/TestRemoteSparql10QueryBuilder.java
===================================================================
--- branches/SESAME_2_7/bigdata-rdf/src/test/com/bigdata/rdf/sparql/ast/eval/service/TestRemoteSparql10QueryBuilder.java 2014-09-02 16:01:51 UTC (rev 8636)
+++ branches/SESAME_2_7/bigdata-rdf/src/test/com/bigdata/rdf/sparql/ast/eval/service/TestRemoteSparql10QueryBuilder.java 2014-09-02 19:28:35 UTC (rev 8637)
@@ -50,6 +50,7 @@
import com.bigdata.rdf.model.BigdataURI;
import com.bigdata.rdf.model.BigdataValue;
import com.bigdata.rdf.sail.sparql.AbstractBigdataExprBuilderTestCase;
+import com.bigdata.rdf.sail.sparql.PrefixDeclProcessor;
import com.bigdata.rdf.sparql.ast.ConstantNode;
import com.bigdata.rdf.sparql.ast.FilterNode;
import com.bigdata.rdf.sparql.ast.FunctionNode;
@@ -157,7 +158,7 @@
final String exprImage = "SERVICE <" + serviceURI + "> { ?s ?p ?o }";
- final Map<String,String> prefixDecls = new LinkedHashMap<String, String>();
+ final Map<String,String> prefixDecls = new LinkedHashMap<String, String>(PrefixDeclProcessor.defaultDecls);
{
prefixDecls.put("foo", "http://www.bigdata.com/foo");
}
@@ -229,7 +230,7 @@
final String exprImage = "SERVICE <" + serviceURI + "> { ?s ?p ?o }";
- final Map<String,String> prefixDecls = new LinkedHashMap<String, String>();
+ final Map<String,String> prefixDecls = new LinkedHashMap<String, String>(PrefixDeclProcessor.defaultDecls);
{
prefixDecls.put("foo", "http://www.bigdata.com/foo");
}
@@ -316,7 +317,7 @@
final String exprImage = "SERVICE <" + serviceURI + "> { ?s ?p ?o }";
- final Map<String,String> prefixDecls = new LinkedHashMap<String, String>();
+ final Map<String,String> prefixDecls = new LinkedHashMap<String, String>(PrefixDeclProcessor.defaultDecls);
{
prefixDecls.put("foo", "http://www.bigdata.com/foo");
}
@@ -463,7 +464,7 @@
final String exprImage = "SERVICE <" + serviceURI + "> { ?book ?p ?o}";
- final Map<String,String> prefixDecls = new LinkedHashMap<String, String>();
+ final Map<String,String> prefixDecls = new LinkedHashMap<String, String>(PrefixDeclProcessor.defaultDecls);
{
prefixDecls.put("", "http://example.org/book/");
}
@@ -652,7 +653,7 @@
final String exprImage = "SERVICE <" + serviceURI + "> { ?s ?p ?o }";
- final Map<String,String> prefixDecls = new LinkedHashMap<String, String>();
+ final Map<String,String> prefixDecls = new LinkedHashMap<String, String>(PrefixDeclProcessor.defaultDecls);
final ServiceNode serviceNode = new ServiceNode(new ConstantNode(
makeIV(serviceURI)), groupNode);
@@ -763,7 +764,7 @@
final String exprImage = "SERVICE <" + serviceURI + "> { ?s ?p ?o }";
- final Map<String,String> prefixDecls = new LinkedHashMap<String, String>();
+ final Map<String,String> prefixDecls = new LinkedHashMap<String, String>(PrefixDeclProcessor.defaultDecls);
final ServiceNode serviceNode = new ServiceNode(new ConstantNode(
makeIV(serviceURI)), groupNode);
@@ -888,7 +889,7 @@
final String exprImage = "SERVICE <" + serviceURI + "> { ?s ?p ?o . ?s ?p ?o1 }";
- final Map<String,String> prefixDecls = new LinkedHashMap<String, String>();
+ final Map<String,String> prefixDecls = new LinkedHashMap<String, String>(PrefixDeclProcessor.defaultDecls);
final ServiceNode serviceNode = new ServiceNode(new ConstantNode(
makeIV(serviceURI)), groupNode);
@@ -1023,7 +1024,7 @@
final String exprImage = "SERVICE <" + serviceURI + "> { ?s ?p ?o }";
- final Map<String,String> prefixDecls = new LinkedHashMap<String, String>();
+ final Map<String,String> prefixDecls = new LinkedHashMap<String, String>(PrefixDeclProcessor.defaultDecls);
final ServiceNode serviceNode = new ServiceNode(new ConstantNode(
makeIV(serviceURI)), groupNode);
@@ -1149,7 +1150,7 @@
final String exprImage = "SERVICE <" + serviceURI + "> { ?s ?p ?o }";
- final Map<String,String> prefixDecls = new LinkedHashMap<String, String>();
+ final Map<String,String> prefixDecls = new LinkedHashMap<String, String>(PrefixDeclProcessor.defaultDecls);
final ServiceNode serviceNode = new ServiceNode(new ConstantNode(
makeIV(serviceURI)), groupNode);
@@ -1358,7 +1359,7 @@
//
// final String exprImage = "SERVICE <" + serviceURI + "> { [] ?p ?o }";
//
-// final Map<String,String> prefixDecls = new LinkedHashMap<String, String>();
+// final Map<String,String> prefixDecls = new LinkedHashMap<String, String>(PrefixDeclProcessor.defaultDecls);
//
// final ServiceNode serviceNode = new ServiceNode(new ConstantNode(
// makeIV(serviceURI)), groupNode);
Modified: branches/SESAME_2_7/bigdata-rdf/src/test/com/bigdata/rdf/sparql/ast/eval/service/TestRemoteSparql11QueryBuilder.java
===================================================================
--- branches/SESAME_2_7/bigdata-rdf/src/test/com/bigdata/rdf/sparql/ast/eval/service/TestRemoteSparql11QueryBuilder.java 2014-09-02 16:01:51 UTC (rev 8636)
+++ branches/SESAME_2_7/bigdata-rdf/src/test/com/bigdata/rdf/sparql/ast/eval/service/TestRemoteSparql11QueryBuilder.java 2014-09-02 19:28:35 UTC (rev 8637)
@@ -56,6 +56,7 @@
import com.bigdata.rdf.model.BigdataURI;
import com.bigdata.rdf.model.BigdataValue;
import com.bigdata.rdf.sail.sparql.AbstractBigdataExprBuilderTestCase;
+import com.bigdata.rdf.sail.sparql.PrefixDeclProcessor;
import com.bigdata.rdf.sparql.ast.BindingsClause;
import com.bigdata.rdf.sparql.ast.ConstantNode;
import com.bigdata.rdf.sparql.ast.FilterNode;
@@ -169,7 +170,7 @@
final String exprImage = "SERVICE <" + serviceURI + "> { ?s ?p ?o }";
- final Map<String,String> prefixDecls = new LinkedHashMap<String, String>();
+ final Map<String,String> prefixDecls = new LinkedHashMap<String, String>(PrefixDeclProcessor.defaultDecls);
{
prefixDecls.put("foo", "http://www.bigdata.com/foo");
}
@@ -249,7 +250,7 @@
final String exprImage = "SERVICE <" + serviceURI + "> { ?s ?p ?o }";
- final Map<String,String> prefixDecls = new LinkedHashMap<String, String>();
+ final Map<String,String> prefixDecls = new LinkedHashMap<String, String>(PrefixDeclProcessor.defaultDecls);
{
prefixDecls.put("foo", "http://www.bigdata.com/foo");
}
@@ -345,7 +346,7 @@
final String exprImage = "SERVICE <" + serviceURI + "> { ?s ?p ?o }";
- final Map<String,String> prefixDecls = new LinkedHashMap<String, String>();
+ final Map<String,String> prefixDecls = new LinkedHashMap<String, String>(PrefixDeclProcessor.defaultDecls);
{
prefixDecls.put("foo", "http://www.bigdata.com/foo");
}
@@ -477,7 +478,7 @@
final String exprImage = "SERVICE <" + serviceURI + "> { ?book ?p ?o}";
- final Map<String,String> prefixDecls = new LinkedHashMap<String, String>();
+ final Map<String,String> prefixDecls = new LinkedHashMap<String, String>(PrefixDeclProcessor.defaultDecls);
{
prefixDecls.put("", "http://example.org/book/");
}
@@ -624,7 +625,7 @@
final String exprImage = "SERVICE <" + serviceURI + "> { ?s ?p ?o }";
- final Map<String,String> prefixDecls = new LinkedHashMap<String, String>();
+ final Map<String,String> prefixDecls = new LinkedHashMap<String, String>(PrefixDeclProcessor.defaultDecls);
final ServiceNode serviceNode = new ServiceNode(new ConstantNode(
makeIV(serviceURI)), groupNode);
@@ -728,7 +729,7 @@
final String exprImage = "SERVICE <" + serviceURI + "> { ?s ?p ?o }";
- final Map<String,String> prefixDecls = new LinkedHashMap<String, String>();
+ final Map<String,String> prefixDecls = new LinkedHashMap<String, String>(PrefixDeclProcessor.defaultDecls);
final ServiceNode serviceNode = new ServiceNode(new ConstantNode(
makeIV(serviceURI)), groupNode);
@@ -854,7 +855,7 @@
final String exprImage = "SERVICE <" + serviceURI + "> { ?s ?p ?o . ?s ?p ?o1 }";
- final Map<String,String> prefixDecls = new LinkedHashMap<String, String>();
+ final Map<String,String> prefixDecls = new LinkedHashMap<String, String>(PrefixDeclProcessor.defaultDecls);
final ServiceNode serviceNode = new ServiceNode(new ConstantNode(
makeIV(serviceURI)), groupNode);
@@ -985,7 +986,7 @@
final String exprImage = "SERVICE <" + serviceURI + "> { ?s ?p ?o }";
- final Map<String,String> prefixDecls = new LinkedHashMap<String, String>();
+ final Map<String,String> prefixDecls = new LinkedHashMap<String, String>(PrefixDeclProcessor.defaultDecls);
final ServiceNode serviceNode = new ServiceNode(new ConstantNode(
makeIV(serviceURI)), groupNode);
@@ -1073,7 +1074,7 @@
final String exprImage = "SERVICE <" + serviceURI + "> { ?s ?p ?o }";
- final Map<String,String> prefixDecls = new LinkedHashMap<String, String>();
+ final Map<String,String> prefixDecls = new LinkedHashMap<String, String>(PrefixDeclProcessor.defaultDecls);
final ServiceNode serviceNode = new ServiceNode(new ConstantNode(
makeIV(serviceURI)), groupNode);
Modified: branches/SESAME_2_7/bigdata-sails/src/java/com/bigdata/rdf/sail/sparql/PrefixDeclProcessor.java
===================================================================
--- branches/SESAME_2_7/bigdata-sails/src/java/com/bigdata/rdf/sail/sparql/PrefixDeclProcessor.java 2014-09-02 16:01:51 UTC (rev 8636)
+++ branches/SESAME_2_7/bigdata-sails/src/java/com/bigdata/rdf/sail/sparql/PrefixDeclProcessor.java 2014-09-02 19:28:35 UTC (rev 8637)
@@ -12,7 +12,9 @@
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import org.openrdf.model.vocabulary.DC;
import org.openrdf.model.vocabulary.FN;
+import org.openrdf.model.vocabulary.FOAF;
import org.openrdf.model.vocabulary.OWL;
import org.openrdf.model.vocabulary.RDF;
import org.openrdf.model.vocabulary.RDFS;
@@ -45,6 +47,23 @@
*/
public class PrefixDeclProcessor {
+ public static final Map<String,String> defaultDecls =
+ new LinkedHashMap<String, String>();
+
+ static {
+ defaultDecls.put("rdf", RDF.NAMESPACE);
+ defaultDecls.put("rdfs", RDFS.NAMESPACE);
+ defaultDecls.put("sesame", SESAME.NAMESPACE);
+ defaultDecls.put("owl", OWL.NAMESPACE);
+ defaultDecls.put("xsd", XMLSchema.NAMESPACE);
+ defaultDecls.put("fn", FN.NAMESPACE);
+ defaultDecls.put("foaf", FOAF.NAMESPACE);
+ defaultDecls.put("dc", DC.NAMESPACE);
+ defaultDecls.put("hint", QueryHints.NAMESPACE);
+ defaultDecls.put("bd", BD.NAMESPACE);
+ defaultDecls.put("bds", BDS.NAMESPACE);
+ }
+
/**
* Processes prefix declarations in queries. This method collects all
* prefixes that are declared in the supplied query, verifies that prefixes
@@ -59,7 +78,7 @@
* If the query contains redefined prefixes or qnames that use
* undefined prefixes.
*/
- public static Map<String, String> process(ASTOperationContainer qc)
+ public static Map<String, String> process(ASTOperationContainer qc)
throws MalformedQueryException
{
List<ASTPrefixDecl> prefixDeclList = qc.getPrefixDeclList();
@@ -78,34 +97,37 @@
prefixMap.put(prefix, iri);
}
- // insert some default prefixes (if not explicitly defined in the query)
- insertDefaultPrefix(prefixMap, "rdf", RDF.NAMESPACE);
- insertDefaultPrefix(prefixMap, "rdfs", RDFS.NAMESPACE);
- insertDefaultPrefix(prefixMap, "sesame", SESAME.NAMESPACE);
- insertDefaultPrefix(prefixMap, "owl", OWL.NAMESPACE);
- insertDefaultPrefix(prefixMap, "xsd", XMLSchema.NAMESPACE);
- insertDefaultPrefix(prefixMap, "fn", FN.NAMESPACE);
- insertDefaultPrefix(prefixMap, "hint", QueryHints.NAMESPACE);
- insertDefaultPrefix(prefixMap, "bd", BD.NAMESPACE);
- insertDefaultPrefix(prefixMap, "bds", BDS.NAMESPACE);
+ // insert some default prefixes (if not explicitly defined in the query)
+// insertDefaultPrefix(prefixMap, "rdf", RDF.NAMESPACE);
+// insertDefaultPrefix(prefixMap, "rdfs", RDFS.NAMESPACE);
+// insertDefaultPrefix(prefixMap, "sesame", SESAME.NAMESPACE);
+// insertDefaultPrefix(prefixMap, "owl", OWL.NAMESPACE);
+// insertDefaultPrefix(prefixMap, "xsd", XMLSchema.NAMESPACE);
+// insertDefaultPrefix(prefixMap, "fn", FN.NAMESPACE);
+// insertDefaultPrefix(prefixMap, "hint", QueryHints.NAMESPACE);
+// insertDefaultPrefix(prefixMap, "bd", BD.NAMESPACE);
+// insertDefaultPrefix(prefixMap, "bds", BDS.NAMESPACE);
+ for (Map.Entry<String, String> e : defaultDecls.entrySet()) {
+ insertDefaultPrefix(prefixMap, e.getKey(), e.getValue());
+ }
- ASTUnparsedQuadDataBlock dataBlock = null;
- if (qc.getOperation() instanceof ASTInsertData) {
- ASTInsertData insertData = (ASTInsertData)qc.getOperation();
- dataBlock = insertData.jjtGetChild(ASTUnparsedQuadDataBlock.class);
+ ASTUnparsedQuadDataBlock dataBlock = null;
+ if (qc.getOperation() instanceof ASTInsertData) {
+ ASTInsertData insertData = (ASTInsertData)qc.getOperation();
+ dataBlock = insertData.jjtGetChild(ASTUnparsedQuadDataBlock.class);
- }
- else if (qc.getOperation() instanceof ASTDeleteData) {
- ASTDeleteData deleteData = (ASTDeleteData)qc.getOperation();
- dataBlock = deleteData.jjtGetChild(ASTUnparsedQuadDataBlock.class);
- }
+ }
+ else if (qc.getOperation() instanceof ASTDeleteData) {
+ ASTDeleteData deleteData = (ASTDeleteData)qc.getOperation();
+ dataBlock = deleteData.jjtGetChild(ASTUnparsedQuadDataBlock.class);
+ }
- if (dataBlock != null) {
- String prefixes = createPrefixesInSPARQLFormat(prefixMap);
- // TODO optimize string concat?
- dataBlock.setDataBlock(prefixes + dataBlock.getDataBlock());
- }
- else {
+ if (dataBlock != null) {
+ String prefixes = createPrefixesInSPARQLFormat(prefixMap);
+ // TODO optimize string concat?
+ dataBlock.setDataBlock(prefixes + dataBlock.getDataBlock());
+ }
+ else {
QNameProcessor visitor = new QNameProcessor(prefixMap);
try {
qc.jjtAccept(visitor, null);
@@ -113,30 +135,30 @@
catch (VisitorException e) {
throw new MalformedQueryException(e);
}
- }
+ }
return prefixMap;
}
- private static void insertDefaultPrefix(Map<String, String> prefixMap, String prefix, String namespace) {
- if (!prefixMap.containsKey(prefix) && !prefixMap.containsValue(namespace)) {
- prefixMap.put(prefix, namespace);
- }
- }
+ private static void insertDefaultPrefix(Map<String, String> prefixMap, String prefix, String namespace) {
+ if (!prefixMap.containsKey(prefix) && !prefixMap.containsValue(namespace)) {
+ prefixMap.put(prefix, namespace);
+ }
+ }
- private static String createPrefixesInSPARQLFormat(Map<String, String> prefixMap) {
- StringBuilder sb = new StringBuilder();
- for (Entry<String, String> entry : prefixMap.entrySet()) {
- sb.append("PREFIX");
- final String prefix = entry.getKey();
- if (prefix != null) {
- sb.append(" " + prefix);
- }
- sb.append(":");
- sb.append(" <" + entry.getValue() + "> \n");
- }
- return sb.toString();
- }
+ private static String createPrefixesInSPARQLFormat(Map<String, String> prefixMap) {
+ StringBuilder sb = new StringBuilder();
+ for (Entry<String, String> entry : prefixMap.entrySet()) {
+ sb.append("PREFIX");
+ final String prefix = entry.getKey();
+ if (prefix != null) {
+ sb.append(" " + prefix);
+ }
+ sb.append(":");
+ sb.append(" <" + entry.getValue() + "> \n");
+ }
+ return sb.toString();
+ }
private static class QNameProcessor extends ASTVisitorBase {
@@ -147,48 +169,48 @@
}
@Override
- public Object visit(ASTQName qnameNode, Object data)
+ public Object visit(ASTQName qnameNode, Object data)
throws VisitorException
{
- String qname = qnameNode.getValue();
+ String qname = qnameNode.getValue();
- int colonIdx = qname.indexOf(':');
+ int colonIdx = qname.indexOf(':');
assert colonIdx >= 0 : "colonIdx should be >= 0: " + colonIdx;
- String prefix = qname.substring(0, colonIdx);
- String localName = qname.substring(colonIdx + 1);
+ String prefix = qname.substring(0, colonIdx);
+ String localName = qname.substring(colonIdx + 1);
String namespace = prefixMap.get(prefix);
if (namespace == null) {
- throw new VisitorException("QName '" + qname + "' uses an undefined prefix");
+ throw new VisitorException("QName '" + qname + "' uses an undefined prefix");
}
- localName = processEscapesAndHex(localName);
+ localName = processEscapesAndHex(localName);
// Replace the qname node with a new IRI node in the parent node
- ASTIRI iriNode = new ASTIRI(SyntaxTreeBuilderTreeConstants.JJTIRI);
+ ASTIRI iriNode = new ASTIRI(SyntaxTreeBuilderTreeConstants.JJTIRI);
iriNode.setValue(namespace + localName);
qnameNode.jjtReplaceWith(iriNode);
return null;
}
- private String processEscapesAndHex(String localName) {
+ private String processEscapesAndHex(String localName) {
// first process hex-encoded chars.
- StringBuffer unencoded = new StringBuffer();
- Pattern hexPattern = Pattern.compile("([^\\\\]|^)(%[A-F\\d][A-F\\d])", Pattern.CASE_INSENSITIVE);
- Matcher m = hexPattern.matcher(localName);
+ StringBuffer unencoded = new StringBuffer();
+ Pattern hexPattern = Pattern.compile("([^\\\\]|^)(%[A-F\\d][A-F\\d])", Pattern.CASE_INSENSITIVE);
+ Matcher m = hexPattern.matcher(localName);
boolean result = m.find();
while (result) {
- // we match the previous char because we need to be sure we are not
- // processing an escaped % char rather than
+ // we match the previous char because we need to be sure we are not
+ // processing an escaped % char rather than
// an actual hex encoding, for example: 'foo\%bar'.
- String previousChar = m.group(1);
- String encoded = m.group(2);
+ String previousChar = m.group(1);
+ String encoded = m.group(2);
- int codePoint = Integer.parseInt(encoded.substring(1), 16);
- String decoded = String.valueOf(Character.toChars(codePoint));
+ int codePoint = Integer.parseInt(encoded.substring(1), 16);
+ String decoded = String.valueOf(Character.toChars(codePoint));
m.appendReplacement(unencoded, previousChar + decoded);
result = m.find();
@@ -196,22 +218,22 @@
m.appendTail(unencoded);
// then process escaped special chars.
- StringBuffer unescaped = new StringBuffer();
- Pattern escapedCharPattern = Pattern.compile("\\\\[_~\\.\\-!\\$\\&\\'\\(\\)\\*\\+\\,\\;\\=\\:\\/\\?#\\@\\%]");
- m = escapedCharPattern.matcher(unencoded.toString());
- result = m.find();
+ StringBuffer unescaped = new StringBuffer();
+ Pattern escapedCharPattern = Pattern.compile("\\\\[_~\\.\\-!\\$\\&\\'\\(\\)\\*\\+\\,\\;\\=\\:\\/\\?#\\@\\%]");
+ m = escapedCharPattern.matcher(unencoded.toString());
+ result = m.find();
while (result) {
- String escaped = m.group();
+ String escaped = m.group();
m.appendReplacement(unescaped, escaped.substring(1));
result = m.find();
}
m.appendTail(unescaped);
- return unescaped.toString();
+ return unescaped.toString();
}
@Override
- public Object visit(ASTServiceGraphPattern node, Object data)
+ public Object visit(ASTServiceGraphPattern node, Object data)
throws VisitorException
{
node.setPrefixDeclarations(prefixMap);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|