You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@marmotta.apache.org by ss...@apache.org on 2013/09/30 18:44:42 UTC

[05/50] [abbrv] git commit: MARMOTTA-225: fixed re-serialisation of URIs as fieldname

MARMOTTA-225: fixed re-serialisation of URIs as fieldname

Project: http://git-wip-us.apache.org/repos/asf/incubator-marmotta/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-marmotta/commit/1a3a45cc
Tree: http://git-wip-us.apache.org/repos/asf/incubator-marmotta/tree/1a3a45cc
Diff: http://git-wip-us.apache.org/repos/asf/incubator-marmotta/diff/1a3a45cc

Branch: refs/heads/master
Commit: 1a3a45ccc5724113ae1f5d6ada219d1a34152213
Parents: 6591259
Author: Jakob Frank <ja...@apache.org>
Authored: Tue Sep 10 12:27:38 2013 +0200
Committer: Jakob Frank <ja...@apache.org>
Committed: Tue Sep 10 12:30:34 2013 +0200

----------------------------------------------------------------------
 .../ldpath/model/fields/FieldMapping.java       | 23 +++++---
 .../ldpath/model/tests/LiteralTypeTest.java     | 15 ++++--
 .../at/newmedialab/ldpath/parser/rdfpath.jj     | 55 +++++++++++---------
 .../src/test/resources/parse/program.ldpath     |  5 +-
 4 files changed, 62 insertions(+), 36 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/1a3a45cc/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/fields/FieldMapping.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/fields/FieldMapping.java b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/fields/FieldMapping.java
index 538be06..ad7984b 100644
--- a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/fields/FieldMapping.java
+++ b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/fields/FieldMapping.java
@@ -21,6 +21,7 @@ import com.google.common.base.Function;
 import com.google.common.collect.Collections2;
 import com.google.common.collect.ImmutableList;
 
+import java.net.URI;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
@@ -38,6 +39,8 @@ import org.apache.marmotta.ldpath.api.transformers.NodeTransformer;
  */
 public class FieldMapping<T,Node> implements LDPathConstruct<Node> {
 
+    private boolean isSimpleName = true;
+    
     /**
      * The name of the field in the search index
      */
@@ -46,7 +49,7 @@ public class FieldMapping<T,Node> implements LDPathConstruct<Node> {
     /**
      * The type of the field in the search index
      */
-    private String fieldType;
+    private URI fieldType;
 
     /**
      * The selector to use for selecting nodes
@@ -63,10 +66,15 @@ public class FieldMapping<T,Node> implements LDPathConstruct<Node> {
      */
     private Map<String, String> fieldConfig;
 
-    public FieldMapping() {
+    private FieldMapping() {
     }
-
-    public FieldMapping(String fieldName, String fieldType, NodeSelector<Node> selector, NodeTransformer<T,Node> transformer, Map<String, String> fieldConfig) {
+    
+    public FieldMapping(URI fieldName, URI fieldType, NodeSelector<Node> selector, NodeTransformer<T,Node> transformer, Map<String, String> fieldConfig) {
+        this(fieldName.toString(), fieldType, selector, transformer, fieldConfig);
+        this.isSimpleName = false;
+    }
+    
+    public FieldMapping(String fieldName, URI fieldType, NodeSelector<Node> selector, NodeTransformer<T,Node> transformer, Map<String, String> fieldConfig) {
     	this();
         this.fieldName = fieldName;
         this.fieldType = fieldType;
@@ -80,7 +88,7 @@ public class FieldMapping<T,Node> implements LDPathConstruct<Node> {
         return fieldName;
     }
 
-    public String getFieldType() {
+    public URI getFieldType() {
         return fieldType;
     }
 
@@ -162,7 +170,10 @@ public class FieldMapping<T,Node> implements LDPathConstruct<Node> {
             }
             fc.append(")");
         }
-        return String.format("%s = %s :: <%s>%s ;", fieldName, selector.getPathExpression(backend), fieldType, fc.toString());
+        if (isSimpleName)
+            return String.format("%s = %s :: <%s>%s ;", fieldName, selector.getPathExpression(backend), fieldType, fc.toString());
+        else
+            return String.format("<%s> = %s :: <%s>%s ;", fieldName, selector.getPathExpression(backend), fieldType, fc.toString());
     }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/1a3a45cc/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/tests/LiteralTypeTest.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/tests/LiteralTypeTest.java b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/tests/LiteralTypeTest.java
index 0ed55d5..bbd63d8 100644
--- a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/tests/LiteralTypeTest.java
+++ b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/tests/LiteralTypeTest.java
@@ -17,6 +17,8 @@
  */
 package org.apache.marmotta.ldpath.model.tests;
 
+import java.net.URI;
+
 import org.apache.marmotta.ldpath.api.backend.NodeBackend;
 import org.apache.marmotta.ldpath.api.backend.RDFBackend;
 import org.apache.marmotta.ldpath.api.tests.NodeTest;
@@ -35,10 +37,14 @@ import org.apache.marmotta.ldpath.api.tests.NodeTest;
  */
 public class LiteralTypeTest<Node> extends NodeTest<Node> {
 
-    private String typeUri;
+    private URI typeUri;
 
     public LiteralTypeTest(String typeUri) {
-        this.typeUri = typeUri;
+        this.typeUri = URI.create(typeUri);
+    }
+    
+    public LiteralTypeTest(URI uri) {
+        this.typeUri = uri;
     }
 
     /**
@@ -55,9 +61,10 @@ public class LiteralTypeTest<Node> extends NodeTest<Node> {
         if(rdfBackend.isLiteral(node)) {
 
             if(typeUri != null) {
-                return typeUri.equals(rdfBackend.getLiteralType(node).toString());
+                return typeUri.equals(rdfBackend.getLiteralType(node));
             } else {
-                return null == rdfBackend.getLiteralType(node).toString();
+                // FIXME: MARMOTTA-39
+                return null == rdfBackend.getLiteralType(node);
             }
         } else {
             return false;

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/1a3a45cc/libraries/ldpath/ldpath-core/src/main/javacc/at/newmedialab/ldpath/parser/rdfpath.jj
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-core/src/main/javacc/at/newmedialab/ldpath/parser/rdfpath.jj b/libraries/ldpath/ldpath-core/src/main/javacc/at/newmedialab/ldpath/parser/rdfpath.jj
index bd0e133..bd71bb5 100644
--- a/libraries/ldpath/ldpath-core/src/main/javacc/at/newmedialab/ldpath/parser/rdfpath.jj
+++ b/libraries/ldpath/ldpath-core/src/main/javacc/at/newmedialab/ldpath/parser/rdfpath.jj
@@ -212,11 +212,16 @@ public class LdPathParser<Node> {
             }
         }
 
+        public Node resolveURI(URI uri) {
            return backend.createURI(uri.toString());
+        }
 
-        public Node resolveResource(String uri) {
+        public Node resolveResource(String uri) throws ParseException {
             return backend.createURI(uri);
         }
 
+        public Node resolveResource(String prefix, String local) throws ParseException {
+            return resolveResource(resolveNamespace(prefix)+local);
        }
+
 
         public String resolveNamespace(String prefix) throws ParseException {
             String uri = namespaces.get(prefix);
@@ -243,6 +248,14 @@ public class LdPathParser<Node> {
             }
         }
 
+        public NodeTransformer<?,Node> getTransformer(URI type) throws ParseException {
+            return getTransformer(type.toString());
+        }
+
+        public NodeTransformer<?,Node> getTransformer(Node node) throws ParseException {
+            return getTransformer(backend.stringValue(node));
+        }
+
         public NodeTransformer<?,Node> getTransformer(String uri) throws ParseException {
             if(xsdNodeTransformerMap.get(uri) != null) {
                 return xsdNodeTransformerMap.get(uri);
@@ -484,7 +497,7 @@ Program Program() :
   (
     <K_BOOST> boostSelector = Selector() <SCOLON> {
     	NodeTransformer transformer = getTransformer(Program.DOCUMENT_BOOST_TYPE);
-		FieldMapping booster = new FieldMapping("@boost", Program.DOCUMENT_BOOST_TYPE, boostSelector, transformer, null);
+		FieldMapping booster = new FieldMapping("@boost", java.net.URI.create(Program.DOCUMENT_BOOST_TYPE), boostSelector, transformer, null);
 		program.setBooster(booster);  
     }
   )?
@@ -504,13 +517,13 @@ Program Program() :
 LinkedList<Node> UriList() :
 {
     LinkedList<Node> rest = null;
-    String uri;
+    URI uri;
 }
 {
     uri = Uri() ( <COMMA> rest = UriList() )?
     {
       if (rest == null) rest = new LinkedList<Node>();
-      rest.addFirst(resolveResource(uri));
+      rest.addFirst(resolveURI(uri));
       return rest;
     }
 }
@@ -519,8 +532,8 @@ FieldMapping Rule() :
 {
     FieldMapping<?,Node> rule;
     Token name;
-    String uri;
-    String type = null;
+    URI uri;
+    URI type = null;
     NodeSelector<Node> selector;
     NodeTransformer<?,Node> transformer;
     Map<String, String> conf = null;
@@ -600,16 +613,16 @@ String ConfVal() : {
 |	id = <IDENTIFIER> { return id.image; }
 }
 
-String Uri() : {
+URI Uri() : {
     Token uri, prefix, localName;
 
 }
 {
     uri = <URI> {
-       return uri.image.substring(1,uri.image.length()-1);
+       return java.net.URI.create(uri.image.substring(1,uri.image.length()-1));
     }
 |   prefix = <IDENTIFIER> ":" localName = <IDENTIFIER> {
-        return resolveNamespace(prefix.image)+localName.image;
+        return java.net.URI.create(resolveNamespace(prefix.image)+localName.image);
     }
 }
 
@@ -821,13 +834,11 @@ TestingSelector TestingSelector() :
 ReversePropertySelector ReversePropertySelector() :
 {
 	ReversePropertySelector result = null;
-	Node property;
-    String uri;
+	URI uri;
 }
 {
 	<INVERSE> uri = Uri() {
-        property = resolveResource(uri);
-        result   = new ReversePropertySelector(property);
+        result   = new ReversePropertySelector(resolveURI(uri));
         return result;
 	}
 }
@@ -835,13 +846,11 @@ ReversePropertySelector ReversePropertySelector() :
 PropertySelector PropertySelector() :
 {
     PropertySelector result = null;
-    Node property;
-    String uri;
+    URI uri;
 }
 {
     uri = Uri() {
-        property = resolveResource(uri);
-        result   = new PropertySelector(property);
+        result   = new PropertySelector(resolveURI(uri));
         return result;
     }
 }
@@ -997,7 +1006,7 @@ LiteralLanguageTest LiteralLanguageTest():
 
 LiteralTypeTest LiteralTypeTest():
 {
-    String type;
+    URI type;
 }
 {
     <TYPE> type = Uri() {
@@ -1060,19 +1069,15 @@ PathEqualityTest PathEqualityTest():
 
 Node Node():
 {
-    String uri, type = null;
+    URI uri, type = null;
     Token literal, language;
 }
 {
     uri = Uri() {
-        return resolveResource(uri);
+        return resolveURI(uri);
     }
 |   literal = <STRLIT>  (<TYPE> type = Uri() )? {
-        try {
-            return backend.createLiteral(literal.image.substring(1, literal.image.length()-1),null,type == null ? null : new URI(type));
-        } catch(java.net.URISyntaxException ex) {
-            throw new ParseException("could not parse type URI "+type+": "+ex.getMessage());
-	    }
+        return backend.createLiteral(literal.image.substring(1, literal.image.length()-1),null,type);
     }
 |   literal = <STRLIT>  <LANG> language = <IDENTIFIER> {
         return backend.createLiteral(literal.image.substring(1, literal.image.length()-1),new Locale(language.image),null);

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/1a3a45cc/libraries/ldpath/ldpath-core/src/test/resources/parse/program.ldpath
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-core/src/test/resources/parse/program.ldpath b/libraries/ldpath/ldpath-core/src/test/resources/parse/program.ldpath
index 7d2670a..fc4fdc5 100644
--- a/libraries/ldpath/ldpath-core/src/test/resources/parse/program.ldpath
+++ b/libraries/ldpath/ldpath-core/src/test/resources/parse/program.ldpath
@@ -31,4 +31,7 @@ group = (test:p1 / test:p2) :: test:type ;
 
 inverse = ^test:incoming :: test:type ;
 
-config = test:foo :: test:type(c1="true", c2="false", c3="1.234") ;
\ No newline at end of file
+config = test:foo :: test:type(c1="true", c2="false", c3="1.234") ;
+
+foo:bar = test:foo :: test:type ;
+<http://test/> = test:test :: test:type ;