jena-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From a...@apache.org
Subject [06/11] jena git commit: JENA-923: Remove jena-arq files now in jena-base
Date Wed, 29 Apr 2015 12:04:39 GMT
http://git-wip-us.apache.org/repos/asf/jena/blob/9eedadcd/jena-arq/src/main/java/org/apache/jena/atlas/lib/FileOps.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/atlas/lib/FileOps.java b/jena-arq/src/main/java/org/apache/jena/atlas/lib/FileOps.java
deleted file mode 100644
index 6862f4a..0000000
--- a/jena-arq/src/main/java/org/apache/jena/atlas/lib/FileOps.java
+++ /dev/null
@@ -1,239 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.atlas.lib ;
-
-import java.io.File ;
-import java.io.FileInputStream ;
-import java.io.FileOutputStream ;
-import java.io.IOException ;
-import java.nio.channels.FileChannel ;
-
-import org.apache.jena.atlas.AtlasException ;
-import org.apache.jena.atlas.io.IO ;
-import org.apache.jena.atlas.logging.Log ;
-
-/** A library of utility operations on files and the filing system */
-public class FileOps {
-    // Update implementations as standard library functions appear that meet the contract.
-    private FileOps() {}
-
-    /**
-     * Delete a file
-     * 
-     * @param filename
-     */
-    public static void delete(String filename) {
-        delete(new File(filename), true) ;
-    }
-
-    /* Delete a file - don't check it worked */
-
-    public static void deleteSilent(String filename) {
-        delete(new File(filename), false) ;
-    }
-
-    public static void delete(File f, boolean reportExistsAfter) {
-        try {
-            /*
-             * Note: On windows, deleting a file which has been memory mapped
-             * does not delete the file.
-             */
-            f.delete() ;
-            if ( reportExistsAfter && f.exists() )
-                Log.warn(FileOps.class, "delete: *** File still exists: " + f) ;
-        }
-        catch (SecurityException ex) {
-            Log.warn(FileOps.class, "delete: " + f + ": Security exception; " + ex.getMessage()) ;
-        }
-
-    }
-
-    /** Delete all files in a directory */
-    public static void clearDirectory(String dir) {
-        File d = new File(dir) ;
-        for ( File f : d.listFiles() ) {
-            if ( f.isFile() )
-                delete(f, false) ;
-        }
-    }
-
-    /** Delete all files and directories (recursively) in a directory */
-    public static void clearAll(String d) {
-        clearAll(new File(d)) ;
-    }
-
-    /** Delete all files and directories (recursively) in a directory */
-    public static void clearAll(File d) {
-        if ( ! d.exists() )
-            return ;
-        
-        for ( File f : d.listFiles() ) {
-            if ( ".".equals(f.getName()) || "..".equals(f.getName()) )
-                continue ;
-            if ( f.isDirectory() )
-                clearAll(f) ;
-            f.delete() ;
-        }
-    }
-
-    /** See if there are any files in this directory */
-    public static boolean existsAnyFiles(String dir) {
-        File d = new File(dir) ;
-        File[] entries = d.listFiles() ;
-        if ( entries == null )
-            // Not a directory
-            return false ;
-        return entries.length > 0 ;
-    }
-
-    /** Test for existence */
-    public static boolean exists(String path) {
-        File f = new File(path) ;
-        return f.exists() ;
-    }
-
-    /** Test for an empty file */
-    public static boolean isEmpty(String filename) {
-        File f = new File(filename) ;
-        if ( f.exists() )
-            return true ;
-        if ( f.isFile() )
-            return f.length() == 0 ;
-        throw new AtlasException("Not a file") ;
-    }
-
-    /** Ensure a directory exists */ 
-    public static void ensureDir(String dirname) {
-        File dir = new File(dirname) ;
-        if ( !dir.exists() )
-            dir.mkdirs() ;
-    }
-
-    /**
-     * Split a file name into path, basename and extension. Nulls returned if
-     * don't make sense.
-     */
-    public static Tuple<String> splitDirBaseExt(String filename) {
-        String path = null ;
-        String basename = filename ;
-        String ext = null ;
-
-        int j = filename.lastIndexOf('/') ;
-        if ( j < 0 )
-            j = filename.lastIndexOf('\\') ;
-
-        if ( j >= 0 ) {
-            path = filename.substring(0, j) ;
-            basename = filename.substring(j + 1) ;
-        }
-
-        int i = basename.lastIndexOf('.') ;
-
-        if ( i > -1 ) {
-            ext = basename.substring(i + 1) ;
-            basename = basename.substring(0, i) ;
-        }
-
-        return Tuple.createTuple(path, basename, ext) ;
-    }
-
-    /**
-     * Split a file name into path and filename. Nulls returned if don't make
-     * sense.
-     */
-    public static Tuple<String> splitDirFile(String filename) {
-        String path = null ;
-        String fn = filename ;
-
-        int j = filename.lastIndexOf('/') ;
-        if ( j < 0 )
-            j = filename.lastIndexOf('\\') ;
-
-        if ( j >= 0 ) {
-            path = filename.substring(0, j) ;
-            fn = filename.substring(j + 1) ;
-        }
-        return Tuple.createTuple(path, fn) ;
-    }
-
-    /** Return the basename (no path, no extension) */
-    public static String basename(String filename) {
-        int j = filename.lastIndexOf('/') ;
-        if ( j < 0 )
-            j = filename.lastIndexOf('\\') ;
-
-        String fn = (j >= 0) ? filename.substring(j + 1) : filename ;
-        int i = fn.lastIndexOf('.') ;
-
-        if ( i > -1 )
-            return fn.substring(0, i) ;
-        return fn ;
-    }
-
-    /** Return the extension (or "") */
-    public static String extension(String filename) {
-        int iSlash = filename.lastIndexOf('/') ;
-        int iBack = filename.lastIndexOf('\\') ;
-        int iExt = filename.lastIndexOf('.') ;
-        if ( iBack > iSlash )
-            iSlash = iBack ;
-        return iExt > iSlash ? filename.substring(iExt + 1).toLowerCase() : "" ;
-    }
-
-    public static String fullPath(String filename) {
-        File f = new File(filename) ;
-        return f.getAbsolutePath() ;
-    }
-
-    public static String fullDirectoryPath(String filename) {
-        File f = new File(filename) ;
-        if ( f.isDirectory() ) {
-            return f.getAbsolutePath() ;
-        } else if ( f.getParentFile() != null ) {
-            return f.getParentFile().getAbsolutePath() ;
-        } else {
-            return f.getAbsolutePath() ;
-        }
-    }
-
-    /** Copy a file */
-    public static void copyFile(File source, File dest) {
-        try {
-            @SuppressWarnings("resource")
-            FileChannel sourceChannel = new FileInputStream(source).getChannel() ;
-            @SuppressWarnings("resource")
-            FileChannel destChannel = new FileOutputStream(dest).getChannel() ;
-            destChannel.transferFrom(sourceChannel, 0, sourceChannel.size()) ;
-            sourceChannel.close() ;
-            destChannel.close() ;
-        }
-        catch (IOException ex) {
-            IO.exception(ex) ;
-        }
-    }
-
-    // public static String getExt(String filename)
-    // {
-    // int i = filename.lastIndexOf('.') ;
-    // int j = filename.lastIndexOf('/') ;
-    // if ( i > j )
-    // return filename.substring(i+1) ;
-    // return null ;
-    // }
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/9eedadcd/jena-arq/src/main/java/org/apache/jena/atlas/lib/Hex.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/atlas/lib/Hex.java b/jena-arq/src/main/java/org/apache/jena/atlas/lib/Hex.java
deleted file mode 100644
index 27ebbb5..0000000
--- a/jena-arq/src/main/java/org/apache/jena/atlas/lib/Hex.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.atlas.lib;
-
-import org.apache.jena.atlas.AtlasException ;
-
-/** Working in hex ... */
-public class Hex
-{
-    // No checking, fixed width.
-    public static int formatUnsignedLongHex(final byte[] b, final int start, final long value, final int width)
-    {
-        // Insert from low value end to high value end.
-        int idx = start+width-1 ;
-        int w = width ;
-        long x = value ;
-        
-        while ( w > 0 )
-        {
-            int d = (int)(x & 0xF) ;
-            x = x>>>4 ; // Unsigned shift.
-            byte ch = Bytes.hexDigitsUC[d] ; 
-            b[idx] = ch ;
-            w-- ;
-            idx-- ;
-
-            if ( x == 0 )
-                break ;
-        }
-
-        if ( x != 0 )
-            throw new AtlasException("formatUnsignedLongHex: overflow") ;
-
-        while ( w > 0 )
-        {
-            b[idx] = '0' ;
-            idx-- ;
-            w-- ;
-        }
-        return width ;
-    }
-    
-    // No checking, fixed width.
-    public static long getLong(byte[] arr, int idx)
-    {
-        long x = 0 ;
-        for ( int i = 0 ; i < 16 ; i++ )
-        {
-            byte c = arr[idx] ;
-            int v = hexByteToInt(c) ;
-            x = x << 4 | v ;  
-            idx++ ; 
-        }
-        return x ;
-    }
-    
-    public static int hexByteToInt(int c)
-    {
-        if ( '0' <= c && c <= '9' )   
-            return c-'0' ;
-        else if ( 'A' <= c && c <= 'F' )
-            return c-'A'+10 ;
-        else if ( 'a' <= c && c <= 'f' )
-            return c-'a'+10 ;
-        else
-            throw new IllegalArgumentException("Bad index char : "+c) ;
-    }
-    
-    /** Return the value of the hex digit, or the marker value if not a hex digit.*/
-    public static int hexByteToInt(int c, int marker)
-    {
-        if ( '0' <= c && c <= '9' )   
-            return c-'0' ;
-        else if ( 'A' <= c && c <= 'F' )
-            return c-'A'+10 ;
-        else if ( 'a' <= c && c <= 'f' )
-            return c-'a'+10 ;
-        else
-            return marker ;
-    }
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/9eedadcd/jena-arq/src/main/java/org/apache/jena/atlas/lib/IRILib.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/atlas/lib/IRILib.java b/jena-arq/src/main/java/org/apache/jena/atlas/lib/IRILib.java
deleted file mode 100644
index 18ede63..0000000
--- a/jena-arq/src/main/java/org/apache/jena/atlas/lib/IRILib.java
+++ /dev/null
@@ -1,243 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.atlas.lib;
-
-import java.io.File ;
-import java.io.IOException ;
-
-import org.apache.jena.atlas.AtlasException ;
-import org.apache.jena.riot.SysRIOT ;
-
-/** Operations related to IRIs */
-public class IRILib
-{
-    // http://www.w3.org/TR/xpath-functions/#func-encode-for-uri
-    // Encodes delimiters.
-    
-    /* RFC 3986
-     * 
-     * unreserved  = ALPHA / DIGIT / "-" / "." / "_" / "~"
-     * gen-delims  = ":" / "/" / "?" / "#" / "[" / "]" / "@"
-     * sub-delims  = "!" / "$" / "&" / "'" / "(" / ")"
-                    / "*" / "+" / "," / ";" / "="
-     */
-    
-    private static char uri_reserved[] = 
-    { '!', '*', '"', '\'', '(', ')', ';', ':', '@', '&', 
-      '=', '+', '$', ',', '/', '?', '%', '#', '[', ']' } ;
-
-    // No allowed in URIs
-    private static char uri_non_chars[] = { '<', '>', '{', '}', '|', '\\', '`', '^', ' ',  '\n', '\r', '\t', '£' } ;
-    
-    // RFC 2396
-    //private static char uri_unwise[]    = { '{' , '}', '|', '\\', '^', '[', ']', '`' } ;
-
-
-    private static char[] charsComponent =
-    // reserved, + non-chars + nasties.
-    { '!', '*', '"', '\'', '(', ')', ';', ':', '@', '&', 
-      '=', '+', '$', ',', '/', '?', '%', '#', '[', ']',
-      '{', '}', '|', '\\', '`', '^',
-      ' ', '<', '>', '\n', '\r', '\t', '£' } ;
-    
-    private static char[] charsFilename =
-        // reserved, + non-chars + nasties.
-        // Leave : (Windows drive charcater) and / (separator) alone
-        // include SPC.
-        // Should this include "~"?
-        { '!', '*', '"', '\'', '(', ')', ';', /*':',*/ '@', '&', 
-          '=', '+', '$', ',', /*'/',*/ '?', '%', '#', '[', ']',
-          '{', '}', '|', '\\', '`', '^',
-          ' ', '<', '>', '\n', '\r', '\t'} ;
-
-    private static char[] charsPath =  
-    {   // Reserved except leave the separators alone. 
-        '!', '*', '"', '\'', '(', ')', ';', /*':',*/ '@', '&',
-        '=', '+', '$', ',', /*'/',*/ '?', '%', '#', '[', ']',
-        '{', '}', '|', '\\', '`', '^',
-        // Other junk 
-        ' ', '<', '>', '\n', '\r', '\t' } ;
-
-    // The initializers must have run.
-    static final String cwd ; 
-    static final String cwdURL ;
-    
-    // Current directory, with trailing "/"
-    // This matters for resolution.
-    static { 
-        String x = new File(".").getAbsolutePath() ;
-        x = x.substring(0, x.length()-1) ;
-        cwd = x ;
-        cwdURL = plainFilenameToURL(cwd) ;
-    }
-    
-    // See also IRIResolver
-    /** Return a string that is an IRI for the filename.*/
-    public static String fileToIRI(File f) {
-        return filenameToIRI(f.getAbsolutePath()) ;
-    }
-    
-    /** Create a string that is a IRI for the filename.
-     *  <li>The file name may already have {@code file:}.
-     *  <li>The file name may be relative. 
-     *  <li>Encode using the rules for a path (e.g. ':' and'/' do not get encoded)
-     *  <li>Non-IRI characters get %-encoded. 
-     */
-    public static String filenameToIRI(String fn) {
-        if ( fn == null ) return cwdURL ;
-        
-        if ( fn.length() == 0 ) return cwdURL ;
-        
-        if ( fn.startsWith("file:") )
-            return normalizeFilenameURI(fn) ;
-        return plainFilenameToURL(fn) ;
-    }
-    
-    /** Convert a file: IRI to a filename */
-    public static String IRIToFilename(String iri) {
-        if ( ! iri.startsWith("file:") )
-            throw new AtlasException("Not a file: URI: "+iri) ; 
-        
-        String fn ;
-        if ( iri.startsWith("file:///") )
-            fn = iri.substring("file://".length()) ;
-        else
-            fn = iri.substring("file:".length()) ;
-        return decode(fn) ;
-    }
-    
-    /** Convert a plain file name (no file:) to a file: URL */
-    private static String plainFilenameToURL(String fn) {
-        // No "file:"
-        // Make Absolute filename.
-        boolean trailingSlash = fn.endsWith("/") ;
-        File file = new File(fn) ;
-        
-        try { fn = file.getCanonicalPath() ; }
-        catch (IOException e) { fn = file.getAbsolutePath() ; }
-        
-        if ( trailingSlash && ! fn.endsWith("/") )
-            fn = fn + "/" ;
-        
-        if ( SysRIOT.isWindows )
-        {
-            // C:\ => file:///C:/... 
-            if ( fn.length() >= 2 && fn.charAt(1) == ':' )
-                // Windows drive letter - already absolute path.
-                // Make "URI" absolute path
-                fn = "/"+fn ;
-            // Convert \ to /
-            // Maybe should do this on all platforms? i.e consistency.
-            fn = fn.replace('\\', '/' ) ;
-        }
-        
-        fn = encodeFileURL(fn) ;
-        return "file://"+fn ;
-    }
-    
-    
-    /** Sanitize a "file:" URL. Must start "file:" */
-    private static String normalizeFilenameURI(String fn) {
-        if ( ! fn.startsWith("file:/") )
-        {
-            // Relative path.
-            String fn2 = fn.substring("file:".length()) ;
-            return plainFilenameToURL(fn2) ;
-        }
-        
-        // Starts file:///
-        if ( fn.startsWith("file:///") )
-            // Assume it's good and return as-is.
-            return fn ;
-
-        if ( fn.startsWith("file://") )
-        {
-            String fn2 = fn.substring("file:/".length()) ;  // Leave one "/"
-            return plainFilenameToURL(fn2) ;
-        }
-
-        // Must be file:/
-        String fn2 = fn.substring("file:".length()) ;
-        return plainFilenameToURL(fn2) ;
-    }
-
-    /** Encode using the rules for a component (e.g. ':' and '/' get encoded) 
-     * Does not encode non-ASCII characters 
-     */
-    public static String encodeUriComponent(String string) {
-        String encStr = StrUtils.encodeHex(string,'%', charsComponent) ;
-        return encStr ;
-    }
-
-    /** Encode using the rules for a file: URL.  
-     *  Does not encode non-ASCII characters
-     */
-    public static String encodeFileURL(String string) {
-        String encStr = StrUtils.encodeHex(string,'%', charsFilename) ;
-        return encStr ;
-    }
-
-    /** Encode using the rules for a path (e.g. ':' and '/' do not get encoded) */
-    public static String encodeUriPath(String uri) {
-        // Not perfect.
-        // Encode path.
-        // %-encode chars.
-        uri = StrUtils.encodeHex(uri, '%', charsPath) ;
-        return uri ;
-    }
-
-    public static String decode(String string) {
-        return StrUtils.decodeHex(string, '%') ;
-    }
-
-    public static String encodeNonASCII(String string) {
-        if ( ! containsNonASCII(string) )
-            return string ;
-        
-        byte[] bytes = StrUtils.asUTF8bytes(string) ;
-        StringBuilder sw = new StringBuilder() ;
-        for ( byte b : bytes )
-        {
-            // Signed bytes ...
-            if ( b > 0 )
-            {
-                sw.append( (char) b );
-                continue;
-            }
-
-            int hi = ( b & 0xF0 ) >> 4;
-            int lo = b & 0xF;
-            sw.append( '%' );
-            sw.append( Chars.hexDigitsUC[hi] );
-            sw.append( Chars.hexDigitsUC[lo] );
-        }
-        return sw.toString() ;
-    }
-
-    public static boolean containsNonASCII(String string){
-        boolean clean = true ;
-        for ( int i = 0 ; i < string.length() ; i++ )
-        {
-            char ch = string.charAt(i) ;
-            if ( ch >= 127 )
-                return true;
-        }
-        return false ;
-    } 
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/9eedadcd/jena-arq/src/main/java/org/apache/jena/atlas/lib/InternalErrorException.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/atlas/lib/InternalErrorException.java b/jena-arq/src/main/java/org/apache/jena/atlas/lib/InternalErrorException.java
deleted file mode 100644
index b20b2d6..0000000
--- a/jena-arq/src/main/java/org/apache/jena/atlas/lib/InternalErrorException.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.atlas.lib;
-
-public class InternalErrorException extends RuntimeException
-{
-    public InternalErrorException()                         { super() ; }
-    public InternalErrorException(String msg)               { super(msg) ; }
-    public InternalErrorException(Throwable th)             { super(th) ; }
-    public InternalErrorException(String msg, Throwable th) { super(msg, th) ; }
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/9eedadcd/jena-arq/src/main/java/org/apache/jena/atlas/lib/Lib.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/atlas/lib/Lib.java b/jena-arq/src/main/java/org/apache/jena/atlas/lib/Lib.java
deleted file mode 100644
index 6c9c442..0000000
--- a/jena-arq/src/main/java/org/apache/jena/atlas/lib/Lib.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.atlas.lib;
-
-import java.util.List ;
-import java.util.zip.Adler32 ;
-import java.util.zip.CRC32 ;
-import java.util.zip.Checksum ;
-
-import org.apache.jena.atlas.logging.Log ;
-
-public class Lib
-{
-    private Lib() {}
-    
-    public static final void sync(Object object)
-    {
-        if ( object instanceof Sync )
-            ((Sync)object).sync() ;
-    }
-    
-    /** Return true if obj1 and obj are both null or are .equals, else return false */
-    public static final <T> boolean equal(T obj1, T obj2)
-    {
-        if ( obj1 == null )
-            return obj2 == null ;
-        // obj1 != null
-        if ( obj2 == null )
-            return false ;
-        return obj1.equals(obj2) ;
-    }
-    
-    /** Return true if obj1 and obj are both null or are .equals, else return false */
-    public static final boolean equalsIgnoreCase(String str1, String str2)
-    {
-        if ( str1 == null )
-            return str2 == null ;
-        return str1.equalsIgnoreCase(str2) ;
-    }
-    
-
-    /** Return true if obj1 and obj are ! equal */
-    public static final <T> boolean notEqual(T obj1, T obj2)
-    {
-        return ! equal(obj1, obj2) ;
-    }
-
-    /** Safely return the class short name for an object -- obj.getClass().getSimpleName() */
-    static public final String className(Object obj) {
-        if ( obj == null )
-            return "null" ;
-        return classShortName(obj.getClass()) ;
-    }
-
-    /** Safely return the class short name for a class */
-    static public final String classShortName(Class<? > cls) {
-        if ( cls == null )
-            return "null" ;
-        return cls.getSimpleName() ;
-    }
-
-    /** Do two lists have the same elements? */
-    public static <T> boolean equalsListAsSet(List<T> list1, List<T> list2) {
-        if ( list1 == null && list2 == null )
-            return true ;
-        if ( list1 == null ) return false ;
-        if ( list2 == null ) return false ;
-        return list1.containsAll(list2) && list2.containsAll(list1) ;
-    }
-
-    /** HashCode - allow nulls */
-    public static final int hashCodeObject(Object obj) { return hashCodeObject(obj, -4) ; }
-    
-    /** HashCode - allow nulls */
-    public static final int hashCodeObject(Object obj, int nullHashCode)
-    {
-        if ( obj == null )
-            return nullHashCode ; 
-        return obj.hashCode() ;
-    }
-    
-    public static final void sleep(int milliSeconds)
-    {
-        try  { Thread.sleep(milliSeconds) ; }
-        catch (InterruptedException ex) { Log.warn(Lib.class, "interrupted", ex) ; }
-    }
-    
-    /** 
-     * @see CRC32
-     */
-    public static long crc32(byte[] bytes)
-    {
-        return crc(new CRC32(), bytes) ;
-    }
-    
-    /** Faster than CRC32, nearly as good.
-     * @see Adler32
-     */
-    public static long adler32(byte[] bytes)
-    {
-        return crc(new Adler32(), bytes) ;
-    }
-
-    private static long crc(Checksum alg, byte[] bytes)
-    {
-        alg.reset() ;
-        alg.update(bytes, 0, bytes.length) ;
-        return alg.getValue() ;
-    }
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/9eedadcd/jena-arq/src/main/java/org/apache/jena/atlas/lib/ListUtils.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/atlas/lib/ListUtils.java b/jena-arq/src/main/java/org/apache/jena/atlas/lib/ListUtils.java
deleted file mode 100644
index 78d591a..0000000
--- a/jena-arq/src/main/java/org/apache/jena/atlas/lib/ListUtils.java
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.atlas.lib;
-
-import java.util.ArrayList ;
-import java.util.List ;
-
-
-import org.apache.jena.atlas.io.IndentedWriter ;
-import org.apache.jena.atlas.iterator.Action ;
-import org.apache.jena.atlas.iterator.FilterUnique ;
-import org.apache.jena.atlas.iterator.Iter ;
-import org.apache.jena.atlas.logging.Log ;
-
-/** Various things for lists */
-public class ListUtils
-{
-    private ListUtils() {}
-
-    public static <T>
-    List<T> unique(List<T> list)
-    {
-        Iter<T> iter = Iter.iter(list.iterator()) ;
-        return iter.filter(new FilterUnique<T>()).toList() ;
-    }
-    
-    public static
-    List<Integer> asList(int... values)
-    {
-        List<Integer> x = new ArrayList<>() ;
-        for ( int v : values )
-            x.add(v) ;
-        return x ;
-    }
-    
-    public static <T> String str(T[] array)
-    {
-        StringBuilder buff = new StringBuilder() ;
-        String sep = "[" ;
-
-        for ( T anArray : array )
-        {
-            buff.append( sep );
-            sep = ", ";
-            buff.append( anArray );
-        }
-        buff.append("]") ;
-        return buff.toString() ;
-    }
-    
-    public static String str(int[] array)
-    {
-        StringBuilder buff = new StringBuilder() ;
-        String sep = "[" ;
-
-        for ( int anArray : array )
-        {
-            buff.append( sep );
-            sep = ", ";
-            buff.append( anArray );
-        }
-        buff.append("]") ;
-        return buff.toString() ;
-    }
-    
-    public static String str(long[] array)
-    {
-        StringBuilder buff = new StringBuilder() ;
-        String sep = "[" ;
-
-        for ( long anArray : array )
-        {
-            buff.append( sep );
-            sep = ", ";
-            buff.append( anArray );
-        }
-        buff.append("]") ;
-        return buff.toString() ;
-    }
-
-    public static <T> void print(IndentedWriter out, List<T> list)
-    { 
-        print(out, list, " ") ;
-    }
-    
-    public static <T> void print(final IndentedWriter out, List<T> list, final String sep)
-    {
-        Action<T> output = new Action<T>() {
-            boolean first = true ;
-            @Override
-            public void apply(T item)
-            {
-                if ( ! first ) out.print(sep) ;
-                out.print(item.toString()) ;
-                first = false ;
-            }
-        } ;
-        Iter.apply(list.iterator(), output) ;
-    }
-    
-    /** Return a list of lists of all the elements of collection in every order
-     *  Easy to run out of heap memory.
-     */  
-    static public <T> List<List<T>> permute(List<T> c)
-    {
-        if ( c.size() > 5 )
-        {
-            Log.warn(ListUtils.class, "Attempt to permute more than 5 items - think again") ;
-            return null ;
-        }
-        
-        List<List<T>> x = new ArrayList<>() ;
-        if ( c.size() == 1 )
-        {
-            x.add(c) ;
-            return x ;
-        }
-
-        for ( T obj : c )
-        {
-            List<T> c2 = new ArrayList<>(c) ;
-            c2.remove(obj) ;
-            List<List<T>> x2 = permute(c2) ;
-            // For each list returned
-            for ( List<T> x3 : x2 )
-            {
-                // Gives a more expected ordering
-                x3.add(0,obj) ;
-                x.add(x3) ;
-            }
-        }
-        return x ;
-    }
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/9eedadcd/jena-arq/src/main/java/org/apache/jena/atlas/lib/Map2.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/atlas/lib/Map2.java b/jena-arq/src/main/java/org/apache/jena/atlas/lib/Map2.java
deleted file mode 100644
index 75697e0..0000000
--- a/jena-arq/src/main/java/org/apache/jena/atlas/lib/Map2.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.atlas.lib;
-
-
-import java.util.Iterator ;
-import java.util.Map ;
-
-import org.apache.jena.atlas.iterator.Iter ;
-
-
-/**
- * A map with parent sharing. New entries go into a map but lookup is passed to
- * the parent map if nothing is found at this level.
- */
-public class Map2<K, V> implements Iterable<K>
-{
-    private final Map<K, V> map1 ; 
-    private final Map2<K, V> map2 ;
-
-    public Map2(Map<K,V> map1, Map2<K,V> map2)
-    {
-        this.map1 = map1 ;
-        this.map2 = map2 ;
-    }
-    
-    public boolean containsKey(K key)
-    {
-        if ( map1.containsKey(key) )
-             return true ;
-        if ( map2 != null )
-            return map2.containsKey(key) ;
-        return false;
-    }
-
-//    public boolean containsValue(V value)
-//    {
-//        if ( map1.containsValue(value) )
-//            return true ;
-//        if ( map2 != null )
-//            return map2.containsValue(value) ;
-//        return false;
-//    }
-
-    public V get(K key)
-    {
-        V v = map1.get(key) ;
-        if ( v != null ) return v ;
-        if ( map2 != null )
-            return map2.get(key) ;
-        return null ;
-    }
-
-    public void put(K key, V value)
-    {
-        if ( map2 != null && map2.containsKey(key) )
-            throw new IllegalArgumentException("Parent map already contains "+key) ;
-        map1.put(key, value) ;
-    }
-
-    // The keys.
-    @Override
-    public Iterator<K> iterator()
-    {
-        Iter<K> iter1 = Iter.iter(map1.keySet().iterator()) ;
-        if ( map2 == null )
-            return iter1 ; 
-        return iter1.append(map2.iterator()) ;
-    }
-    
-    public boolean isEmpty()
-    {
-        boolean x = map1.isEmpty() ;
-        if ( ! x ) return false ;
-        if ( map2 != null )
-            return map2.isEmpty() ;
-        return true ;
-    }
-    
-    public int size()
-    {
-        int x = map1.size() ;
-        if ( map2 != null )
-            x += map2.size();
-        return x ;
-    }
-    
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/9eedadcd/jena-arq/src/main/java/org/apache/jena/atlas/lib/MapUtils.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/atlas/lib/MapUtils.java b/jena-arq/src/main/java/org/apache/jena/atlas/lib/MapUtils.java
deleted file mode 100644
index 7999a25..0000000
--- a/jena-arq/src/main/java/org/apache/jena/atlas/lib/MapUtils.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.atlas.lib;
-
-import java.util.Map ;
-
-/** Map specific functions */
-public class MapUtils
-{
-    private MapUtils() {}
-    
-    public static <K, V> void apply(Map<K, V> map, ActionKeyValue<K, V> action)
-    {
-        for ( Map.Entry<K,V> entry : map.entrySet() )
-            action.apply(entry.getKey(), entry.getValue()) ;
-    }
-    
-    public static <T> void increment(Map<T, Integer> countMap, T key)
-    { increment(countMap, key, 1) ; }
-    
-    public static <T> void increment(Map<T, Integer> countMap, T key, int incr)
-    {
-        Integer integer = countMap.get(key) ;
-        if ( integer == null ) 
-            countMap.put(key, incr) ;
-        else
-            countMap.put(key, integer+incr) ;
-    }
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/9eedadcd/jena-arq/src/main/java/org/apache/jena/atlas/lib/MultiMap.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/atlas/lib/MultiMap.java b/jena-arq/src/main/java/org/apache/jena/atlas/lib/MultiMap.java
deleted file mode 100644
index 2782ea6..0000000
--- a/jena-arq/src/main/java/org/apache/jena/atlas/lib/MultiMap.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.atlas.lib;
-
-import java.util.* ;
-
-import org.apache.jena.atlas.iterator.IteratorConcat ;
-
-/* Map from K to collection of V */
-
-public abstract class MultiMap<K, V>
-{
-    private Map<K, Collection<V>> map = new HashMap<>() ;
-
-    protected abstract Collection<V> createCollection() ;
-    
-    public static <K, V> MultiMapToList<K, V> createMapList() { return new MultiMapToList<>() ; }
-    public static <K, V> MultiMapToSet<K, V> createMapSet() { return new MultiMapToSet<>() ; }
-    
-    protected MultiMap() { }
-    
-    protected Collection<V> getByKey(K key) { 
-        return map.get(key) ; 
-    } 
-
-    public abstract Collection<V> get(K key) ; 
-    
-    public V getOne(K key) { 
-        Collection<V> c = map.get(key) ;
-        if ( c == null || c.size() == 0 ) 
-            return null ;
-        return c.iterator().next() ;
-    }
-    
-    public void putAll(K key, @SuppressWarnings("unchecked") V ... values)
-    {
-        for ( V v : values)
-            put(key, v) ;
-    }
-    
-    public void put(K key, V value)
-    { 
-        Collection<V> x = map.get(key) ;
-        if ( x == null )
-        {
-            x = createCollection() ;
-            map.put(key, x) ;
-        }
-        x.add(value) ;
-    }
-    
-    public void remove(K key, V value)  {
-        if ( map.containsKey(key))
-            map.get(key).remove(value) ;
-    }
-    public void removeKey(K key)        { map.remove(key) ; }
-    
-    protected Collection<V> valuesForKey(K key) { return map.get(key); }
-    public abstract Collection<V> values(K key) ;
-    public abstract Collection<V> values() ;
-
-    public boolean containsKey(K key) { return map.containsKey(key) ; }
-    
-    public Set<K> keys()        { return map.keySet() ; }
-    
-    public void clear()         { map.clear() ; }
-    
-    public boolean isEmpty()    { return map.isEmpty() ; }
-
-    /** Does not materialise the contents */
-    public Iterator<V> flatten()
-    {
-        IteratorConcat<V> all = new IteratorConcat<>() ;
-        for ( K k : map.keySet() )        
-        {
-            Collection<V> x =  map.get(k) ;
-            all.add(x.iterator()) ;
-        }
-        return all ;
-    }
-    
-    @Override
-    public boolean equals(Object obj) {
-        if ( this == obj )
-            return true ;
-        if ( obj == null )
-            return false ;
-        if ( getClass() != obj.getClass() )
-            return false ;
-        MultiMap<?,?> other = (MultiMap<?,?>)obj ;
-        if ( map == null ) {
-            if ( other.map != null )
-                return false ;
-        } else if ( !map.equals(other.map) )
-            return false ;
-        return true ;
-    }
-    
-    @Override
-    public int hashCode()       { return map.hashCode()^ 0x01010101 ; }
-    
-    @Override
-    public String toString()
-    {
-        StringBuilder sb = new StringBuilder() ;
-        sb.append("{ ") ;
-        boolean firstKey = true ;
-        for ( K key : keys() )
-        {
-            if ( ! firstKey )
-                sb.append(", ") ;
-            firstKey = false ;
-            sb.append(key) ;
-            sb.append(" => [") ;
-            boolean firstValue = true ; 
-            for ( V value : values(key) )
-            {
-                if ( firstValue )
-                    sb.append(" ") ;
-                else
-                    sb.append(", ") ;
-                sb.append(value) ;
-                firstValue = false ;
-            }
-            sb.append(" ] ") ;
-        }
-        sb.append("}") ;
-        return sb.toString() ;
-    }
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/9eedadcd/jena-arq/src/main/java/org/apache/jena/atlas/lib/MultiMapToList.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/atlas/lib/MultiMapToList.java b/jena-arq/src/main/java/org/apache/jena/atlas/lib/MultiMapToList.java
deleted file mode 100644
index ac1ba70..0000000
--- a/jena-arq/src/main/java/org/apache/jena/atlas/lib/MultiMapToList.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.atlas.lib;
-
-import java.util.ArrayList ;
-import java.util.Collection ;
-import java.util.List ;
-
-import org.apache.jena.atlas.iterator.Iter ;
-
-public class MultiMapToList<K,V> extends MultiMap<K,V> {
-    public static <K, V> MultiMapToList<K, V> create() { return new MultiMapToList<>() ; }
-    
-    @Override
-    protected Collection<V> createCollection() {
-        return new ArrayList<>() ;
-    }
-    
-    @Override
-    public List<V> get(K key) { return (List<V>)getByKey(key); }
-    
-    @Override
-    public List<V> values(K key) { return (List<V>)valuesForKey(key); }
-    
-    @Override
-    public List<V> values() { return Iter.toList(flatten()) ; }
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/9eedadcd/jena-arq/src/main/java/org/apache/jena/atlas/lib/MultiMapToSet.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/atlas/lib/MultiMapToSet.java b/jena-arq/src/main/java/org/apache/jena/atlas/lib/MultiMapToSet.java
deleted file mode 100644
index b89e05b..0000000
--- a/jena-arq/src/main/java/org/apache/jena/atlas/lib/MultiMapToSet.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.atlas.lib;
-
-import java.util.Collection ;
-import java.util.HashSet ;
-import java.util.Set ;
-
-import org.apache.jena.atlas.iterator.Iter ;
-
-public class MultiMapToSet<K,V> extends MultiMap<K,V> {
-    public static <K, V> MultiMapToSet<K, V> create() { return new MultiMapToSet<>() ; }
-    
-    @Override
-    protected Collection<V> createCollection()
-    {
-        return new HashSet<>() ;
-    }
-    
-    @Override
-    public Set<V> get(K key) { return (Set<V>)getByKey(key) ; }
-    
-    @Override
-    public Set<V> values(K key) { return (Set<V>)valuesForKey(key); }
-
-    @Override
-    public Set<V> values() { return Iter.toSet(flatten()) ; }
-
-
-}
-

http://git-wip-us.apache.org/repos/asf/jena/blob/9eedadcd/jena-arq/src/main/java/org/apache/jena/atlas/lib/MultiSet.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/atlas/lib/MultiSet.java b/jena-arq/src/main/java/org/apache/jena/atlas/lib/MultiSet.java
deleted file mode 100644
index 3701042..0000000
--- a/jena-arq/src/main/java/org/apache/jena/atlas/lib/MultiSet.java
+++ /dev/null
@@ -1,218 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.atlas.lib;
-
-import java.util.ArrayList ;
-import java.util.HashMap ;
-import java.util.Iterator ;
-import java.util.List ;
-import java.util.Map ;
-import java.util.NoSuchElementException ;
-
-/** A MultiSet - also known as a Bag
- */
-
-public class MultiSet<T> implements Iterable<T>
-{
-    private Map<T,RefLong> map   = new HashMap<>() ;
-    private int multiSetSize = 0 ;
-    
-    private RefLong _get(T obj)
-    {
-        RefLong z = map.get(obj) ;
-        if ( z == null )
-        {
-            z = new RefLong(0) ;
-            map.put(obj, z) ;
-        }
-        return z ;
-    }
- 
-    /** Does it contain any elements at all? */
-    public boolean isEmpty()        { return map.isEmpty() ; }
-
-    /** Does it contain the object? */
-    public boolean contains(T obj)  { return map.containsKey(obj) ; }
-    
-    /** Yield one object per element (i.e without counts) */
-    public Iterator<T> elements()   { return map.keySet().iterator() ; }
-
-    /** Add an object */
-    public void add(T obj)          { _get(obj).inc(); multiSetSize++ ; } 
-
-    /** Add an object, with cardinality n */
-    public void add(T obj, long n)
-    { 
-        if ( n <= 0 ) return ;
-        _get(obj).add(n) ;
-        multiSetSize += n ;
-    }
-    
-    /** Remove one occurrence of the object from the multiset */
-    public void remove(T obj)
-    {
-        RefLong x = map.get(obj) ;
-        if ( x == null ) return ;
-        x.dec() ;
-        multiSetSize-- ;
-        if ( x.value() == 0 )
-            map.remove(obj) ;
-    }
-    
-    /** Remove N occurrences of the object from the multiset */
-    public void remove(T obj, long n)
-    {
-        RefLong x = map.get(obj) ;
-        if ( x == null ) return ;
-        long z = x.value() ;
-        if ( z < n )
-            n = z ;
-        x.subtract(n) ;
-        multiSetSize -= n ;
-        if ( x.value() <= 0 )
-            map.remove(obj) ;
-    }    
-    
-
-    /** Remove all occurrences of the object in themultiset */
-    public void removeAll(T obj)
-    {
-        RefLong x = map.get(obj) ;
-        if ( x == null )
-            return ;
-        multiSetSize -= x.value() ;
-        map.remove(obj) ;
-    }
-
-    /* Remove everything */
-    public void clear() { map.clear() ; multiSetSize = 0 ; }
-    
-    
-    /** Get the count of the number of times the object appears in the multiset - i.e. it's cardinality.
-     * Returns zero when not present.
-     */
-    public long count(T obj)
-    {
-        if ( ! map.containsKey(obj) ) return 0 ;
-        return map.get(obj).value() ;
-    }
-    
-    public int size()
-    {
-//        int count = 0 ;
-//        for ( Map.Entry<T, RefLong> e : map.entrySet() )
-//            count += e.getValue().value() ;
-//        //return count ;
-//        if ( count != multiSetSize )
-//        {
-//            Log.warn(this, "Mismatch") ;
-//            return count ; 
-//        }
-
-        return multiSetSize ;
-    }
-    
-    private Iterator<T> iterator1()
-    {
-        // CRUDE
-        List<T> expanded = new ArrayList<>() ;
-        for ( Map.Entry<T, RefLong> e : map.entrySet() )
-        {
-            for ( int i = 0 ; i < e.getValue().value() ; i++ )
-                expanded.add(e.getKey()) ;
-        }
-        
-        return expanded.iterator() ;
-    }
-    
-    @Override
-    public Iterator<T> iterator()
-    {
-        return new Iterator<T>() {
-            
-            Iterator<T> keys = map.keySet().iterator() ;
-            T key = null ;
-            long keyCount = 0 ;
-            T slot = null ;
-            
-            @Override
-            public boolean hasNext()
-            {
-                if ( slot != null )
-                    return true ;
-                
-                if ( keys == null ) 
-                    return false ;
-                
-                if ( key != null )
-                {
-                    if ( keyCount < count(key) )
-                    {
-                        keyCount++ ;
-                        slot = key ;
-                        return true ;
-                    }
-                    // End of this key.
-                    key = null ;
-                }
-                    
-                if ( keys.hasNext() )
-                {
-                    key = keys.next() ;
-                    keyCount = 1 ;
-                    slot = key ;
-                    return true ;
-                }
-                keys = null ;
-                return false ;
-            }
-
-            @Override
-            public T next()
-            {
-                if ( ! hasNext() ) throw new NoSuchElementException() ;
-                T x = slot ;
-                slot = null ;
-                return x ;
-            }
-
-            @Override
-            public void remove()
-            { throw new UnsupportedOperationException() ; }
-        } ; 
-    }
-    
-    @Override 
-    public String toString()
-    {
-        StringBuilder sb = new StringBuilder() ;
-        sb.append("{") ;
-        String sep = "" ;
-        for ( Map.Entry<T, RefLong> e : map.entrySet() )
-        {
-            sb.append(sep) ;
-            sep = ", " ;
-            sb.append(e.getKey().toString()) ;
-            sb.append("=") ;
-            sb.append(Long.toString(e.getValue().value())) ;
-        }
-        sb.append("}") ;
-        return sb.toString() ;
-    }
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/9eedadcd/jena-arq/src/main/java/org/apache/jena/atlas/lib/NotImplemented.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/atlas/lib/NotImplemented.java b/jena-arq/src/main/java/org/apache/jena/atlas/lib/NotImplemented.java
deleted file mode 100644
index b7e91f1..0000000
--- a/jena-arq/src/main/java/org/apache/jena/atlas/lib/NotImplemented.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.atlas.lib;
-
-public class NotImplemented extends InternalErrorException
-{
-    public NotImplemented()                         { super() ; }
-    public NotImplemented(String msg)               { super(msg) ; }
-    public NotImplemented(Throwable th)             { super(th) ; }
-    public NotImplemented(String msg, Throwable th) { super(msg, th) ; }
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/9eedadcd/jena-arq/src/main/java/org/apache/jena/atlas/lib/NumberUtils.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/atlas/lib/NumberUtils.java b/jena-arq/src/main/java/org/apache/jena/atlas/lib/NumberUtils.java
deleted file mode 100644
index 4f51beb..0000000
--- a/jena-arq/src/main/java/org/apache/jena/atlas/lib/NumberUtils.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.atlas.lib;
-
-import org.apache.jena.atlas.AtlasException ;
-
-public class NumberUtils
-{
-    // Maximum length of a length 1,2,3,4...
-    private final static int [] maxTable = { 
-        9, 99, 999, 9999, 99999, 999999, 9999999,
-        99999999, 999999999, Integer.MAX_VALUE };
-
-    /** Fast, but basic, integer to StringBuilder */
-    public static void formatInt(StringBuilder sb, int value) 
-    { 
-        // SeeAlso Integer.toString.
-        int len = length(value) ;
-        formatInt(sb, value, len, false) ;
-    }
-    
-    /** Fast, but basic, integer to StringBuilder : always signed */
-    public static void formatSignedInt(StringBuilder sb, int value) 
-    { 
-        int len = length(value) ;
-        if ( value >= 0 )
-            len++ ;
-        formatInt(sb, value, len, true) ;
-    }
-
-    static int length(int x)
-    {
-        if ( x < 0 )
-            return length(-x)+1 ;
-        
-        for (int i=0; ; i++)
-            if (x <= maxTable[i])
-                return i+1;
-    }
-
-    /** Place a fixed width representation of a non-negative int into the string buffer */ 
-    public static void formatInt(StringBuilder sb, int value, int width)
-    { 
-        formatInt(sb, value, width, false) ;
-    }
-    
-    /** Place a fixed width representation into the string buffer : always signed. */ 
-    public static void formatSignedInt(StringBuilder sb, int value, int width) 
-    { 
-        formatInt(sb, value, width, true) ;
-    }
-
-    /** Format an integer, which may be signed */
-    public static void formatInt(StringBuilder sb, int value, int width, boolean signAlways)
-    {
-        boolean negative = (value < 0 ) ;
-        
-        if ( negative )
-        {
-            value = -value ;
-            width -- ;
-            sb.append('-') ;
-        }
-        else if ( signAlways )
-        {
-            width -- ;
-            sb.append('+') ;
-        }
-
-        formatUnsignedInt(sb, value, width) ;
-    }
-
-    /** Place a fixed width representation into the string buffer : never signed. */ 
-    public static void formatUnsignedInt(StringBuilder sb, int value, int width) 
-    { 
-        char chars[] = new char[width] ;
-        formatUnsignedInt$(chars, value, width) ;
-        
-        // Append - the buffer was filled backwards. 
-        for ( int i = 0 ; i < width ; i++ )
-            // Un-backwards.
-            sb.append(chars[width-1-i]) ;
-        
-    }
-
-    // No checking.  char[] filled backwards
-    private static int formatUnsignedInt$(char[] b, int x, int width)
-    {
-        // x >= 0 
-        // Inserts chars backwards
-        int idx = 0 ;
-        while ( width > 0 )
-        {
-            int i = x%10 ;
-            char ch = Chars.digits10[i] ;
-            b[idx] = ch ;
-            width-- ;
-            idx++ ;
-
-            x = x / 10 ;
-            if ( x == 0 )
-                break ;
-        }
-        
-        if ( x != 0 )
-            throw new AtlasException("formatInt: overflow[x="+x+", width="+width+"]") ;
-        
-        while ( width > 0 )
-        {
-            b[idx] = '0' ;
-            idx++ ;
-            width-- ;
-        }
-        return width ;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/9eedadcd/jena-arq/src/main/java/org/apache/jena/atlas/lib/Pair.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/atlas/lib/Pair.java b/jena-arq/src/main/java/org/apache/jena/atlas/lib/Pair.java
deleted file mode 100644
index 4f3b055..0000000
--- a/jena-arq/src/main/java/org/apache/jena/atlas/lib/Pair.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.atlas.lib;
-
-import static org.apache.jena.atlas.lib.Lib.hashCodeObject ;
-import static org.apache.jena.atlas.lib.StrUtils.str ;
-
-public class Pair<A, B>
-{
-    public static <L, R> Pair<L,R> create(L x, R y) { return new Pair<>(x,y) ; }
-    
-    final A a ;
-    final B b ;
-    public Pair(A a, B b) { this.a = a; this.b = b ; }
-    
-    public A getLeft()  { return a ; }
-    public B getRight() { return b ; }
-    
-    public A car() { return a ; }
-    public B cdr() { return b ; }
-    
-    @Override
-    public int hashCode()
-    {
-        return hashCodeObject(car()) ^ hashCodeObject(cdr())<<1 ; 
-    }
-
-    @Override
-    public boolean equals(Object other)
-    {
-        if ( this == other ) return true ;
-
-        // If it's a pair of a different <A,B> then .equals
-        // Pair<A,B>(null,null) is equal to Pair<C,D>(null ,null)
-        // Type erasure makes this hard to check otherwise.
-        // Use class X extends Pair<A,B> and implement .equals to do
-        // instanceof then call super.equals.
-        
-        if( ! ( other instanceof Pair<?,?> ) ) return false ;
-        Pair<?,?> p2 = (Pair<?,?>)other ;
-        return  Lib.equal(car(), p2.car()) && Lib.equal(cdr(), p2.cdr()) ;
-    }
-    
-    @Override 
-    public String toString() { return "("+str(a)+", "+str(b)+")" ; }  
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/9eedadcd/jena-arq/src/main/java/org/apache/jena/atlas/lib/Pool.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/atlas/lib/Pool.java b/jena-arq/src/main/java/org/apache/jena/atlas/lib/Pool.java
deleted file mode 100644
index f28939e..0000000
--- a/jena-arq/src/main/java/org/apache/jena/atlas/lib/Pool.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.atlas.lib ;
-
-public interface Pool<T>
-{
-    public abstract void put(T item) ;
-
-    /** Get an item from the pool - return null if the pool is empty */
-    public abstract T get() ;
-
-    public abstract boolean isEmpty() ;
-
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/9eedadcd/jena-arq/src/main/java/org/apache/jena/atlas/lib/PoolBase.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/atlas/lib/PoolBase.java b/jena-arq/src/main/java/org/apache/jena/atlas/lib/PoolBase.java
deleted file mode 100644
index c6cb505..0000000
--- a/jena-arq/src/main/java/org/apache/jena/atlas/lib/PoolBase.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.atlas.lib;
-
-import java.util.ArrayDeque ;
-
-/** A Pool of objects. Base implements a non-blocking pool (returns null on no entry)
- * with infinite upper bound.  Set effective size by creating the right number of
- * entries when created.
- */ 
-public class PoolBase<T> implements Pool<T>
-{
-    // For convenience we operate a LIFO policy.
-    // This not part of the extenal contract of a "pool"
-    
-    ArrayDeque<T> pool = new ArrayDeque<>();
-    int maxSize = -1 ;  // Unbounded
-    
-    public PoolBase() {} 
-    //public Pool(int maxSize) { this.maxSize = maxSize ; }
-    
-    @Override
-    public void put(T item)
-    {
-        // Currently, unbounded
-        if ( maxSize >= 0 && pool.size() == 0 )
-        {}
-        pool.push(item) ;
-    }
-    
-    /** Get an item from the pool - return null if the pool is empty */
-    @Override
-    public T get()              
-    { 
-        if ( pool.size() == 0 ) return null ;
-        return pool.pop();
-    }
-    
-    @Override
-    public boolean isEmpty()    { return pool.size() == 0 ; } 
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/9eedadcd/jena-arq/src/main/java/org/apache/jena/atlas/lib/PoolSync.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/atlas/lib/PoolSync.java b/jena-arq/src/main/java/org/apache/jena/atlas/lib/PoolSync.java
deleted file mode 100644
index 10e0a6a..0000000
--- a/jena-arq/src/main/java/org/apache/jena/atlas/lib/PoolSync.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.atlas.lib;
-
-
-/** Synchronization wrapper for a pool */ 
-public class PoolSync<T> implements Pool<T>
-{
-    private Pool<T> pool ;
-
-    public static <T> Pool<T> create(Pool<T> pool)
-    { 
-        if ( pool instanceof PoolSync<?>)
-        {
-            PoolSync<T> p = (PoolSync<T>)pool ;
-            return p ;
-        }
-        return new PoolSync<>(pool) ;
-    }
-    
-    public PoolSync(Pool<T> pool) { this.pool = pool ; } 
-    
-    @Override
-    public final synchronized void put(T item)
-    {
-        pool.put(item) ;
-    }
-    
-    @Override
-    public final synchronized T get()              
-    { 
-        return pool.get();
-    }
-    
-    @Override
-    public final synchronized boolean isEmpty()    { return pool.isEmpty() ; } 
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/9eedadcd/jena-arq/src/main/java/org/apache/jena/atlas/lib/PropertiesSorted.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/atlas/lib/PropertiesSorted.java b/jena-arq/src/main/java/org/apache/jena/atlas/lib/PropertiesSorted.java
deleted file mode 100644
index 75060ee..0000000
--- a/jena-arq/src/main/java/org/apache/jena/atlas/lib/PropertiesSorted.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.atlas.lib;
-
-import java.util.ArrayList ;
-import java.util.Collections ;
-import java.util.Comparator ;
-import java.util.Enumeration ;
-import java.util.Iterator ;
-import java.util.List ;
-import java.util.Properties ;
-
-/** Sorted output */
-public class PropertiesSorted extends Properties
-{
-    private Comparator<String> comparator = null ;
-    
-    //public SortedProperties() { super() ; }
-    
-    public PropertiesSorted(Comparator<String> comparator)
-    { 
-        super() ;
-        this.comparator = comparator ;
-    }
-    
-    
-    @SuppressWarnings({"unchecked", "rawtypes"})
-    @Override
-    public synchronized Enumeration<Object> keys()
-    {
-        // Old world - enumeration, untyped. But we know they are strings (Propetries hides non-strings in get) 
-        Enumeration<Object> keys = super.keys() ;
-        List<String> keys2 = new ArrayList<>(super.size()) ;
-        
-        for( ; keys.hasMoreElements() ; )
-        {
-            Object obj = keys.nextElement() ;
-            if ( obj instanceof String )
-                keys2.add((String)obj);
-        }
-        // Keys are comparable because they are strings.
-        if ( comparator == null )
-            Collections.sort(keys2);
-        else
-            Collections.sort(keys2, comparator) ;
-        
-        return new IteratorToEnumeration(keys2.listIterator()) ;
-    }
-    
-    static class IteratorToEnumeration<T>  implements Enumeration<T>
-    {
-        private Iterator<T> iterator ;
-
-        public IteratorToEnumeration(Iterator<T> iterator)
-        {
-            this.iterator = iterator ;
-        }
-        
-        @Override
-        public boolean hasMoreElements()
-        {
-            return iterator.hasNext() ;
-        }
-
-        @Override
-        public T nextElement()
-        {
-            return iterator.next();
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/9eedadcd/jena-arq/src/main/java/org/apache/jena/atlas/lib/PropertyUtils.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/atlas/lib/PropertyUtils.java b/jena-arq/src/main/java/org/apache/jena/atlas/lib/PropertyUtils.java
deleted file mode 100644
index d4ac5b7..0000000
--- a/jena-arq/src/main/java/org/apache/jena/atlas/lib/PropertyUtils.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with this
- * work for additional information regarding copyright ownership. The ASF
- * licenses this file to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-
-package org.apache.jena.atlas.lib ;
-
-import java.io.* ;
-import java.util.Objects ;
-import java.util.Properties ;
-
-import org.apache.jena.atlas.AtlasException ;
-import org.apache.jena.atlas.io.IO ;
-
-public class PropertyUtils {
-    /** Load properties from a file if the file exists */
-    static public Properties loadFromFile(String filename) throws IOException {
-        Properties properties = new Properties() ;
-        loadFromFile(properties, filename) ;
-        return properties ;
-    }
-
-    /** Load properties from a file if the file exists */
-    static public void loadFromFile(Properties properties, String filename) throws IOException {
-        Objects.requireNonNull(filename, "File name must not be null") ;
-        if ( "-".equals(filename) )
-            throw new IllegalArgumentException("Filename is \"-\" (stdin not supported)") ;
-
-        try (InputStream in = new FileInputStream(filename); Reader r = IO.asBufferedUTF8(in);) {
-            properties.load(r) ;
-        }
-    }
-
-    static public void storeToFile(Properties properties, String comment, String filename) throws IOException {
-        String str = comment ;
-        if ( str == null )
-            str = filename ;
-        try (FileOutputStream fos = new FileOutputStream(filename)) {
-            Writer w = IO.asBufferedUTF8(fos) ;
-            properties.store(w, "Metadata: " + str) ;
-            w.flush() ;
-        }
-    }
-
-    public static int getPropertyAsInteger(Properties properties, String key) {
-        String x = properties.getProperty(key) ;
-        if ( x == null )
-            throw new AtlasException("No such property key: " + key) ;
-        return Integer.parseInt(x) ;
-    }
-
-    public static int getPropertyAsInteger(Properties properties, String key, int defaultValue) {
-        String x = properties.getProperty(key) ;
-        if ( x == null )
-            return defaultValue ;
-        return Integer.parseInt(x) ;
-    }
-
-    public static boolean getPropertyAsBoolean(Properties properties, String key, boolean dftValue) {
-        String x = properties.getProperty(key) ;
-        if ( x == null )
-            return dftValue ;
-        if ( x.equalsIgnoreCase("true") )
-            return true ;
-        if ( x.equalsIgnoreCase("false") )
-            return true ;
-        throw new AtlasException("Value '" + x + "'not recognized for " + key) ;
-    }
-
-    public static Boolean getPropertyAsBoolean(Properties properties, String key) {
-        String x = properties.getProperty(key) ;
-        if ( x == null )
-            throw new AtlasException("No such property key: " + key) ;
-        if ( x.equalsIgnoreCase("true") )
-            return true ;
-        if ( x.equalsIgnoreCase("false") )
-            return true ;
-        throw new AtlasException("Value '" + x + "'not recognized for " + key) ;
-    }
-
-    /** Test whether a property has a value. Null tests equal to not present. */
-    public boolean propertyEquals(Properties properties, String key, String value) {
-        return Lib.equal(properties.getProperty(key), value) ;
-    }
-
-    /** Set property if not already set. */
-    public void ensurePropertySet(Properties properties, String key, String expected) {
-        getOrSetDefault(properties, key, expected) ;
-    }
-
-    /**
-     * Get property or the default value - also set the default value if not
-     * present
-     */
-    public String getOrSetDefault(Properties properties, String key, String expected) {
-        String x = properties.getProperty(key) ;
-        if ( x == null ) {
-            properties.setProperty(key, expected) ;
-            x = expected ;
-        }
-        return x ;
-    }
-
-    /** Check property is an expected value or set if missing */
-    public void checkOrSetProperty(Properties properties, String key, String expected) {
-        String x = properties.getProperty(key) ;
-        if ( x == null ) {
-            properties.setProperty(key, expected) ;
-            return ;
-        }
-        if ( x.equals(expected) )
-            return ;
-
-        inconsistent(properties, key, x, expected) ;
-    }
-
-    /** Check property has the vakue given - throw exception if not. */
-    public void checkMetadata(Properties properties, String key, String expected) {
-        String value = properties.getProperty(key) ;
-
-        if ( !Lib.equal(value, value) )
-            inconsistent(properties, key, value, expected) ;
-    }
-
-    private void inconsistent(Properties properties, String key, String actual, String expected) {
-        String msg = String.format("Inconsistent: key=%s value=%s expected=%s", key, (actual == null ? "<null>" : actual),
-                                   (expected == null ? "<null>" : expected)) ;
-        throw new AtlasException(msg) ;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/9eedadcd/jena-arq/src/main/java/org/apache/jena/atlas/lib/RandomLib.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/atlas/lib/RandomLib.java b/jena-arq/src/main/java/org/apache/jena/atlas/lib/RandomLib.java
deleted file mode 100644
index d2b3516..0000000
--- a/jena-arq/src/main/java/org/apache/jena/atlas/lib/RandomLib.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.atlas.lib;
-
-import java.security.SecureRandom ;
-import java.util.Random ;
-
-public class RandomLib
-{
-    private RandomLib() {}
-    
-    /** Single instance, pure random generator */
-    public static final Random random = new SecureRandom() ;
-    
-    /** Random numbers, good seed, cheaper allocation */
-    public static final Random qrandom = randInit() ;
-
-    private static Random randInit()
-    {
-        // Cheap random numbers, well seeded.
-        int seed = random.nextInt() ;
-        return new Random(seed) ;   
-    }
-    
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/9eedadcd/jena-arq/src/main/java/org/apache/jena/atlas/lib/Ref.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/atlas/lib/Ref.java b/jena-arq/src/main/java/org/apache/jena/atlas/lib/Ref.java
deleted file mode 100644
index e25b145..0000000
--- a/jena-arq/src/main/java/org/apache/jena/atlas/lib/Ref.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.atlas.lib;
-
-
-/** A mutable container */
-public class Ref<T>
-{
-    private T value ;
-
-    public T getValue() { return value; }
-
-    public Ref(T initial)
-    { setValue(initial); }
-
-    public void setValue(T value)
-    { this.value = value; }
-
-    
-    // hashCode and equality are defined on object pointers. 
-//    @Override
-//    public int hashCode() { return value.hashCode()^0x1 ; }
-//    
-//    @Override
-//    public boolean equals(Object other)
-//    {
-//        if ( !(  other instanceof Ref ) )
-//            return false ;
-//        Ref<?> r = (Ref<?>)other ;
-//        return Lib.equals(value, r.value) ;
-//    }
-    
-    @Override
-    public String toString()
-    {
-        return "ref:"+value.toString() ; 
-    }
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/9eedadcd/jena-arq/src/main/java/org/apache/jena/atlas/lib/RefLong.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/atlas/lib/RefLong.java b/jena-arq/src/main/java/org/apache/jena/atlas/lib/RefLong.java
deleted file mode 100644
index 30dc663..0000000
--- a/jena-arq/src/main/java/org/apache/jena/atlas/lib/RefLong.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.atlas.lib;
-
-public final class RefLong
-{
-    private long value ;
-    public RefLong()                { this(0) ; }
-    public RefLong(long v)          { value = v ; }
-    public long value()             { return value ; }
-    public void inc()               { value++ ; } 
-    public void dec()               { --value ; }
-    public long getAndInc()         { return value++ ; }
-    public long incAndGet()         { return ++value ; }
-    public long getAndDec()         { return value-- ; }
-    public long decAndGet()         { return --value ; }
-    public void add(long v)         { value += v ; }
-    public void subtract(long v)    { value -= v ; }
-    public void set(long v)         { value = v ; }
-    @Override public String toString() { return "Ref:"+Long.toString(value) ; } 
-    // hashCode and equals are Object equality - this is a mutable object
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/9eedadcd/jena-arq/src/main/java/org/apache/jena/atlas/lib/Registry.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/atlas/lib/Registry.java b/jena-arq/src/main/java/org/apache/jena/atlas/lib/Registry.java
deleted file mode 100644
index b1e0d74..0000000
--- a/jena-arq/src/main/java/org/apache/jena/atlas/lib/Registry.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.atlas.lib;
-
-import java.util.Collection ;
-import java.util.Map ;
-import java.util.concurrent.ConcurrentHashMap ;
-
-public class Registry<K,T>
-{
-    protected Map<K, T> registry = new ConcurrentHashMap<>() ;
-    
-    public Registry() {}
-    
-    public void put(K key, T value)     { registry.put(key, value) ; }
-    public T get(K key)                 { return registry.get(key) ; }
-    public boolean isRegistered(K key)  { return registry.containsKey(key) ; }
-    public void remove(K key)           { registry.remove(key) ; } 
-    public Collection<K> keys()         { return registry.keySet() ; }
-    //public Iterator<String> keys()      { return registry.keySet().iterator() ; }
-    public int size()                   { return registry.size() ; }
-    public boolean isEmpty()            { return registry.isEmpty() ; }
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/9eedadcd/jena-arq/src/main/java/org/apache/jena/atlas/lib/ReverseComparator.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/atlas/lib/ReverseComparator.java b/jena-arq/src/main/java/org/apache/jena/atlas/lib/ReverseComparator.java
deleted file mode 100644
index 7019b68..0000000
--- a/jena-arq/src/main/java/org/apache/jena/atlas/lib/ReverseComparator.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.atlas.lib;
-
-import java.util.Comparator ;
-
-/** Comparator that compares the other way round to it's sub-comparator */  
-public class ReverseComparator<T> implements Comparator<T>
-{
-    private final Comparator<T> comparator ;
-    
-    public ReverseComparator(Comparator<T> comparator)
-    {
-        this.comparator = comparator ;
-    }
-    
-    @Override
-    public int compare(T o1, T o2)
-    {
-        return comparator.compare(o2, o1) ;
-    }
-}


Mime
View raw message