You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2014/11/30 15:31:25 UTC

[1/3] jena git commit: JENA-816 : Suppress datatype xsd:string when out for RDF 1.1

Repository: jena
Updated Branches:
  refs/heads/master a1c50acc9 -> e17f8b8f2


JENA-816 : Suppress datatype xsd:string when out for RDF 1.1

Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/a32cc904
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/a32cc904
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/a32cc904

Branch: refs/heads/master
Commit: a32cc904bf9b7cee6081bdbaf4b953b15f62f956
Parents: a1c50ac
Author: Andy Seaborne <an...@apache.org>
Authored: Sun Nov 30 14:29:33 2014 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Sun Nov 30 14:29:33 2014 +0000

----------------------------------------------------------------------
 .../jena/sparql/resultset/JSONOutputResultSet.java | 17 ++++++++---------
 1 file changed, 8 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/a32cc904/jena-arq/src/main/java/com/hp/hpl/jena/sparql/resultset/JSONOutputResultSet.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/com/hp/hpl/jena/sparql/resultset/JSONOutputResultSet.java b/jena-arq/src/main/java/com/hp/hpl/jena/sparql/resultset/JSONOutputResultSet.java
index a7296d6..5ba2579 100644
--- a/jena-arq/src/main/java/com/hp/hpl/jena/sparql/resultset/JSONOutputResultSet.java
+++ b/jena-arq/src/main/java/com/hp/hpl/jena/sparql/resultset/JSONOutputResultSet.java
@@ -35,6 +35,7 @@ import com.hp.hpl.jena.query.ResultSet ;
 import com.hp.hpl.jena.rdf.model.Literal ;
 import com.hp.hpl.jena.rdf.model.RDFNode ;
 import com.hp.hpl.jena.rdf.model.Resource ;
+import com.hp.hpl.jena.rdf.model.impl.Util ;
 
 /**
  * A JSON writer for SPARQL Result Sets.  Uses Jena Atlas JSON support. 
@@ -189,15 +190,7 @@ public class JSONOutputResultSet implements ResultSetProcessor
         String datatype = literal.getDatatypeURI() ;
         String lang = literal.getLanguage() ;
         
-        if ( datatype != null )
-        {
-            out.print(quoteName(kDatatype)+": "+quote(datatype)+" , ") ;
-            if ( multiLineValues ) out.println() ;
-            
-            out.print(quoteName(kType)+": "+quote(kTypedLiteral)+" , ") ;
-            if ( multiLineValues ) out.println() ;
-        }
-        else
+        if ( Util.isSimpleString(literal) || Util.isLangString(literal) )
         {
             out.print(quoteName(kType)+": "+quote(kLiteral)+" , ") ;
             if ( multiLineValues ) out.println() ;
@@ -207,6 +200,12 @@ public class JSONOutputResultSet implements ResultSetProcessor
                 out.print(quoteName(kXmlLang)+": "+quote(lang)+" , ") ;
                 if ( multiLineValues ) out.println() ;
             }
+        } else {
+            out.print(quoteName(kDatatype)+": "+quote(datatype)+" , ") ;
+            if ( multiLineValues ) out.println() ;
+            
+            out.print(quoteName(kType)+": "+quote(kTypedLiteral)+" , ") ;
+            if ( multiLineValues ) out.println() ;
         }
             
         out.print(quoteName(kValue)+": "+quote(literal.getLexicalForm())) ;


[2/3] jena git commit: JENA-816 : Argument compatibility for RDF 1.0 and RDF 1.1

Posted by an...@apache.org.
JENA-816 : Argument compatibility for RDF 1.0 and RDF 1.1

Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/cbdb84e5
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/cbdb84e5
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/cbdb84e5

Branch: refs/heads/master
Commit: cbdb84e516b116fd3ef86bcb3c4a41c53b1cd9f9
Parents: a32cc90
Author: Andy Seaborne <an...@apache.org>
Authored: Sun Nov 30 14:30:30 2014 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Sun Nov 30 14:30:30 2014 +0000

----------------------------------------------------------------------
 .../sparql/expr/nodevalue/NodeFunctions.java    | 70 +++++++++++++++-----
 1 file changed, 53 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/cbdb84e5/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/NodeFunctions.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/NodeFunctions.java b/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/NodeFunctions.java
index fd3e0b6..825fda0 100644
--- a/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/NodeFunctions.java
+++ b/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/NodeFunctions.java
@@ -61,18 +61,32 @@ public class NodeFunctions {
             return n ;
         
         // No language tag : either no datatype or a datatype of xsd:string 
-        // Special case : rdf:langString and no language ==> Illegal
+        // Includes the case of rdf:langString and no language ==> Illegal as a compatible string.
+
         RDFDatatype dt = n.getLiteralDatatype() ;
-        if ( dt != null && !dt.equals(XSDDatatype.XSDstring) )
-            throw new ExprEvalException(label + ": Not a string literal: " + nv) ;
-        return n ;
+        if ( dt == null )
+            return n ;
+        if ( XSDDatatype.XSDstring.equals(dt) )
+            return n ;
+        throw new ExprEvalException(label + ": Not a string literal: " + nv) ;
     }
 
     /**
      * Check for string operations with primary first arg and second second arg
-     * (e.g. CONTAINS)
+     * (e.g. CONTAINS).  The arguments are not used in the same way and the check
+     * operation is not symmetric. 
+     * <li> "abc"@en is compatible with "abc"
+     * <li> "abc" is NOT compatible with "abc"@en
      */
     public static void checkTwoArgumentStringLiterals(String label, NodeValue arg1, NodeValue arg2) {
+        
+        /* Quote the spec:
+         * Compatibility of two arguments is defined as:
+         *    The arguments are simple literals or literals typed as xsd:string
+         *    The arguments are plain literals with identical language tags
+         *    The first argument is a plain literal with language tag and the second argument is a simple literal or literal typed as xsd:string
+         */
+        
         Node n1 = checkAndGetStringLiteral(label, arg1) ;
         Node n2 = checkAndGetStringLiteral(label, arg2) ;
         String lang1 = n1.getLiteralLanguage() ;
@@ -82,22 +96,44 @@ public class NodeFunctions {
         if ( lang2 == null )
             lang2 = "" ;
 
-        if ( n1.getLiteralDatatype() != null ) {
-            // n1 is an xsd string by checkAndGetString
-            if ( XSDDatatype.XSDstring.equals(n2.getLiteralDatatypeURI()) )
-                return ;
-            if ( n2.getLiteralLanguage().equals("") )
+        // Case 1
+        if ( lang1.equals("") ) { 
+            if ( lang2.equals("") )
                 return ;
             throw new ExprEvalException(label + ": Incompatible: " + arg1 + " and " + arg2) ;
         }
 
-        // Incompatible?
-        // arg1 simple or xsd:string, arg2 has a lang.
-        if ( lang1.equals("") && !lang2.equals("") )
-            throw new ExprEvalException(label + ": Incompatible: " + arg1 + " and " + arg2) ;
-        // arg1 with lang, arg2 has a different lang.
-        if ( !lang1.equals("") && (!lang2.equals("") && !lang1.equals(lang2)) )
-            throw new ExprEvalException(label + ": Incompatible: " + arg1 + " and " + arg2) ;
+        // Case 2
+        if ( lang1.equalsIgnoreCase(lang2) )
+            return ;
+        
+        // Case 3
+        if ( lang2.equals("") )
+            return ;
+
+        throw new ExprEvalException(label + ": Incompatible: " + arg1 + " and " + arg2) ;
+        
+        // ----------
+                
+//                if ( lang1.equals("") && !lang2.equals("") )
+//            throw new ExprEvalException(label + ": Incompatible: " + arg1 + " and " + arg2) ;
+//        
+//        
+//        
+//        if ( n1.getLiteralDatatype() != null ) {
+//            // n1 is an xsd string by checkAndGetString
+//            if ( XSDDatatype.XSDstring.equals(n2.getLiteralDatatypeURI()) )
+//                return ;
+//            if ( n2.getLiteralLanguage().equals("") )
+//                return ;
+//            throw new ExprEvalException(label + ": Incompatible: " + arg1 + " and " + arg2) ;
+//        }
+//
+//        // Incompatible?
+//        // arg1 simple or xsd:string, arg2 has a lang.
+//        // arg1 with lang, arg2 has a different lang.
+//        if ( !lang1.equals("") && (!lang2.equals("") && !lang1.equals(lang2)) )
+//            throw new ExprEvalException(label + ": Incompatible: " + arg1 + " and " + arg2) ;
     }
 
     // -------- sameTerm


[3/3] jena git commit: Robust against RDF 1.0 and RDF 1.1

Posted by an...@apache.org.
Robust against RDF 1.0 and RDF 1.1

Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/e17f8b8f
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/e17f8b8f
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/e17f8b8f

Branch: refs/heads/master
Commit: e17f8b8f24cd8e3560c21b092f7aa544aa3d39d1
Parents: cbdb84e
Author: Andy Seaborne <an...@apache.org>
Authored: Sun Nov 30 14:31:10 2014 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Sun Nov 30 14:31:10 2014 +0000

----------------------------------------------------------------------
 .../src/main/java/com/hp/hpl/jena/sparql/expr/NodeValue.java   | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/e17f8b8f/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/NodeValue.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/NodeValue.java b/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/NodeValue.java
index b7180f6..8e2c71d 100644
--- a/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/NodeValue.java
+++ b/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/NodeValue.java
@@ -96,6 +96,7 @@ import com.hp.hpl.jena.sparql.graph.NodeConst ;
 import com.hp.hpl.jena.sparql.graph.NodeTransform ;
 import com.hp.hpl.jena.sparql.serializer.SerializationContext ;
 import com.hp.hpl.jena.sparql.util.* ;
+import com.hp.hpl.jena.vocabulary.RDF ;
 
 public abstract class NodeValue extends ExprNode
 {
@@ -980,7 +981,7 @@ public abstract class NodeValue extends ExprNode
             // Not a literal - no value to extract
             return new NodeValueNode(node) ;
 
-        boolean hasLangTag = ( node.getLiteralLanguage() != null && ! node.getLiteralLanguage().equals("")) ;
+        boolean hasLangTag = NodeUtils.isLangString(node) ;
         boolean isPlainLiteral = ( node.getLiteralDatatypeURI() == null && ! hasLangTag ) ; 
             
         if ( isPlainLiteral )
@@ -988,7 +989,8 @@ public abstract class NodeValue extends ExprNode
 
         if ( hasLangTag )
         {
-            if ( node.getLiteralDatatypeURI() != null )
+            // Works for RDF 1.0 and RDF 1.1
+            if ( node.getLiteralDatatype() != null && ! RDF.dtLangString.equals(node.getLiteralDatatype()) )
             {
                 if ( NodeValue.VerboseWarnings )
                     Log.warn(NodeValue.class, "Lang tag and datatype (datatype ignored)") ;