blob: e5e5937c23fc176697ad0f66e234d928dc4321a7 [file] [log] [blame]
/*
* Copyright 2008 Michael Hunger.
*
* Licensed 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.qi4j.index.rdf.query.internal;
import java.util.HashMap;
import java.util.Map;
import static java.lang.String.format;
public class Namespaces
{
private int namespaceCounter = 0;
/**
* Mapping between namespace and prefix.
*/
private final Map<String, String> namespaces = new HashMap<String, String>();
public Namespaces()
{
addDefaultNamespaces();
}
private void addDefaultNamespaces()
{
addNamespace( "rdf", "http://www.w3.org/1999/02/22-rdf-syntax-ns#" );
addNamespace( "rdfs", "http://www.w3.org/2000/01/rdf-schema#" );
}
public Iterable<? extends String> namespaces()
{
return namespaces.keySet();
}
public String addNamespace( final String namespace )
{
String prefix = namespacePrefix( namespace );
if( prefix != null )
{
return prefix;
}
prefix = "ns" + namespaceCounter++;
return addNamespace( prefix, namespace );
}
public String namespacePrefix( String namespace )
{
return namespaces.get( namespace );
}
public String addNamespace( final String prefix,
final String namespace
)
{
namespaces.put( namespace, prefix );
return prefix;
}
@Override
public String toString()
{
StringBuilder sb = new StringBuilder();
for( String namespace : namespaces() )
{
sb.append( format( "%s:%s%n", namespacePrefix( namespace ), namespace ) );
}
return sb.toString();
}
}