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 2013/01/20 12:19:43 UTC

svn commit: r1435817 - /jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/PrefixMap.java

Author: andy
Date: Sun Jan 20 11:19:43 2013
New Revision: 1435817

URL: http://svn.apache.org/viewvc?rev=1435817&view=rev
Log:
Abbreviating: 
Generate Turtle legal prefixed name by default.
Scan to later choices if not legal Turtle.

Modified:
    jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/PrefixMap.java

Modified: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/PrefixMap.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/PrefixMap.java?rev=1435817&r1=1435816&r2=1435817&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/PrefixMap.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/PrefixMap.java Sun Jan 20 11:19:43 2013
@@ -40,8 +40,7 @@ public class PrefixMap
     public static PrefixMap fromPrefixMapping(PrefixMapping pmap)
     {
         PrefixMap pm = new PrefixMap() ;
-        for ( Map.Entry<String, String> e : pmap.getNsPrefixMap().entrySet() )
-            pm.add(e.getKey(), e.getValue()) ;
+        pm.putAll(pmap) ;
         return pm ;
     }
     
@@ -96,6 +95,13 @@ public class PrefixMap
         prefixes.putAll(pmap.prefixes) ; 
     }
     
+    /** Add a prefix, overwrites any existing association */
+    public void putAll(PrefixMapping pmap)
+    {
+        for ( Map.Entry<String, String> e : pmap.getNsPrefixMap().entrySet() )
+            add(e.getKey(), e.getValue()) ;
+    }
+    
     /** Delete a prefix */
     public void delete(String prefix)
     { 
@@ -117,32 +123,37 @@ public class PrefixMap
     /** Abbreviate an IRI or return null */
     public String abbreviate(String uriStr)
     {
-        for ( Entry<String, IRI> e : prefixes.entrySet())
-        {
-            String prefix = e.getValue().toString() ;
-            
-            if ( uriStr.startsWith(prefix) )
-            {
-                String ln = uriStr.substring(prefix.length()) ;
-                if ( strSafeFor(ln, '/') && strSafeFor(ln, '#') && strSafeFor(ln, ':') )
-                    return e.getKey()+":"+ln ;
-            }
-        }
-        return null ;
+        Pair<String, String> p = abbrev(uriStr, true) ;
+        if ( p == null )
+            return null ;
+        return p.getLeft()+":"+p.getRight() ;
     }
     
     private static boolean strSafeFor(String str, char ch) { return str.indexOf(ch) == -1 ; } 
     
     
-    /** Abbreviate an IRI or return null */
-    public Pair<String, String> abbrev(String uriStr)
+    /** Abbreviate an IRI or return a pair of prefix and local parts.
+     * @param uriStr        URI string to abbreviate
+     * @see #abbreviate
+     */
+    public Pair<String, String> abbrev(String uriStr) { return abbrev(uriStr, true) ; }
+    
+    /** Abbreviate an IRI or return a pair of prefix and local parts.
+     * @param uriStr        URI string to abbreviate
+     * @param turtleSafe    Only return legal Turtle local names.
+     */
+    private Pair<String, String> abbrev(String uriStr, boolean turtleSafe)
     {
         for ( Entry<String, IRI> e : prefixes.entrySet())
         {
             String uriForPrefix = e.getValue().toString() ;
             
             if ( uriStr.startsWith(uriForPrefix) )
-                return Pair.create(e.getKey(), uriStr.substring(uriForPrefix.length())) ;
+            {
+                String ln = uriStr.substring(uriForPrefix.length()) ;
+                if ( !turtleSafe || ( strSafeFor(ln, '/') && strSafeFor(ln, '#') && strSafeFor(ln, ':') ) )
+                    return Pair.create(e.getKey(), ln) ;
+            }
         }
         return null ;
     }