The RDDL Java Object Model 0.5

The RDDL Java Object Model is based upon the interfaces Namespace and Resource. A Namespace is defined as a collection of resources. Each resource within a namespace is identified by an XPointer, typically either an ID or ChildSeq. A Container is derived from a Namespace and allows containment of arbitrary URIs. Alternatively a Namespace can be considered a restriction of a generic Container whose elements are limited to the particular namespace.

The javadoc is available here.

Namespace

A namespace is defined as a collection of resources. The namespace interface provides various methods to subdivide this collection of resources given various conditions. The SortedMap is typically implemented as a Red-Black Tree Map.

public interface Namespace {	
	/**
	 * A resource is qualified by its Nature.
	 */
	public abstract SortedMap getResourcesFromNature(String role);
	/**
	 * A resource is qualified by its Purpose.
	 * @param purpose - the purpose of the link
	 * @returns SortedMap
	 */
	public abstract SortedMap getResourcesFromPurpose(String purpose);
	/**
	 * Given a particular URI href, obtain the set of matching resources
	 */
	public abstract SortedMap getResourcesFromHref(String href);
	/**
	 * The value of xlink:title can also be used as a key
	 */
	public abstract SortedMap getResourcesFromTitle(String title);
	/**
	 * The value of xml:lang can be used as a key
	 */
	public abstract SortedMap getResourcesFromLang(String lang);
	/**
	 * It may be helpful to select a set of resources given a range of ids.
	 * The id is a either a bare name or child sequence per XPointer
	 */
	public abstract SortedMap getResourcesFromIdRange(String id0,String id1);
	/**
	 * Get a specific resource given an id.
	 */
	public abstract Resource getResourceFromId(String id);
	/*
	 * get an iterator for all the resources in the namespace
	 */
	public abstract Iterator getResources();
	/**
	 * every namespace has a URI
	 */
	public abstract String getURI();
}

Resource

A Resource has various properties and represents an identifier within a namespace or more generally a URI reference.

public interface Resource {	
	/**
	 * The purpose of a resource is represented by the xlink:arcrole. 
	 * Purposes for well known types are defined in this RDDL document.
	 * @returns String purpose - the purpose of the resource
	 */
 	public abstract String getPurpose();
	/**
	 * The nature of a resource is represented by the xlink:role.
	 * This method gets the xlink:role which corresponds to the nature of the related resource. 
	 * The role must be an absolute URI reference. A fragment identifier may be present. The base URI is the URI of
	 * the RDDL document containing the resource.
	 */
 	public abstract String getNature();
	/**
	 * the value xml:base if present
	 */
	public abstract String getBaseURI();
	/**
	 * Get the resource xlink:href.
	 *
	 * This method gets the resource's URI which corresponds to the xlink:href. 
	 * The href may be either an absolute or relative URI. The base URI is the URI of
	 * the RDDL document containing the resource.
	 *
	 */
 	public abstract String getHref();
	/**
	 * the id if defined directly on the rddl:resource element
	 */
	public abstract String getId();
	/**
	 * this is either the id of the resource or a child seq per xpointer
	 */
	public abstract String getFragmentId();
	/**
	 * every resource has a URI
	 */
	public abstract String getURI();
	/**
	 * xml:lang
	 */
	public abstract String getLang();
	/**
	 * xlink:title
	 */
 	public abstract String getTitle();
	/**
	 * This is null unless the resource is a container
	 */
	public abstract Container getContainer();
}

Container

A container extends a namespace providing the ability to contain arbitrary URIs in addition to URIs from within the namespace. The mechanism by which rddl:resources can be labelled with a URI outside the namespace is through the xml:base attribute.

public interface Container extends Namespace {	
	public abstract Resource getResourceFromURI(String uri);
	public abstract SortedMap getResourcesFromURIRange(String uri0,String uri1);
	public abstract void addResource(Resource r);
}