You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@juneau.apache.org by ja...@apache.org on 2017/09/02 14:12:04 UTC

[48/51] [partial] incubator-juneau git commit: Add project hierarchies, part 2.

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ab15d45b/juneau-core-rdf/src/main/java/org/apache/juneau/jena/package.html
----------------------------------------------------------------------
diff --git a/juneau-core-rdf/src/main/java/org/apache/juneau/jena/package.html b/juneau-core-rdf/src/main/java/org/apache/juneau/jena/package.html
deleted file mode 100644
index 34ef9e7..0000000
--- a/juneau-core-rdf/src/main/java/org/apache/juneau/jena/package.html
+++ /dev/null
@@ -1,1055 +0,0 @@
-<!DOCTYPE HTML>
-<!--
-/***************************************************************************************************************************
- * 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.
- *
- ***************************************************************************************************************************/
- -->
-<html>
-<head>
-	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-	<style type="text/css">
-		/* For viewing in Page Designer */
-		@IMPORT url("../../../../../../javadoc.css");
-
-		/* For viewing in REST interface */
-		@IMPORT url("../htdocs/javadoc.css");
-		body { 
-			margin: 20px; 
-		}	
-	</style>
-	<script>
-		/* Replace all @code and @link tags. */	
-		window.onload = function() {
-			document.body.innerHTML = document.body.innerHTML.replace(/\{\@code ([^\}]+)\}/g, '<code>$1</code>');
-			document.body.innerHTML = document.body.innerHTML.replace(/\{\@link (([^\}]+)\.)?([^\.\}]+)\}/g, '<code>$3</code>');
-		}
-	</script>
-</head>
-<body>
-<p>Jena-based RDF serialization and parsing support</p>
-<script>
-	function toggle(x) {
-		var div = x.nextSibling;
-		while (div != null && div.nodeType != 1)
-			div = div.nextSibling;
-		if (div != null) {
-			var d = div.style.display;
-			if (d == 'block' || d == '') {
-				div.style.display = 'none';
-				x.className += " closed";
-			} else {
-				div.style.display = 'block';
-				x.className = x.className.replace(/(?:^|\s)closed(?!\S)/g , '' );
-			}
-		}
-	}
-</script>
-
-<a id='TOC'></a><h5 class='toc'>Table of Contents</h5>
-<ol class='toc'>
-	<li><p><a class='doclink' href='#RdfOverview'>RDF support overview</a></p> 
-	<ol>
-		<li><p><a class='doclink' href='#RdfOverviewExample'>Example</a></p>
-	</ol>
-	<li><p><a class='doclink' href='#RdfSerializer'>RdfSerializer class</a></p> 
-	<ol>
-		<li><p><a class='doclink' href='#Namespaces'>Namespaces</a></p>
-		<li><p><a class='doclink' href='#UriProperties'>URI properties</a></p>
-		<li><p><a class='doclink' href='#BeanAnnotations'>@Bean and @BeanProperty annotations</a></p>
-		<li><p><a class='doclink' href='#Collections'>Collections</a></p>
-		<li><p><a class='doclink' href='#RootProperty'>Root property</a></p>
-		<li><p><a class='doclink' href='#TypedLiterals'>Typed literals</a></p>
-		<li><p><a class='doclink' href='#Recursion'>Non-tree models and recursion detection</a></p>
-		<li><p><a class='doclink' href='#SerializerConfigurableProperties'>Configurable properties</a></p>
-		<li><p><a class='doclink' href='#SerializerOtherNotes'>Other notes</a></p>
-	</ol>	
-	<li><p><a class='doclink' href='#RdfParser'>RdfParser class</a></p> 
-	<ol>
-		<li><p><a class='doclink' href='#GenericParsing'>Parsing into generic POJO models</a></p>
-		<li><p><a class='doclink' href='#ParserConfigurableProperties'>Configurable properties</a></p>
-		<li><p><a class='doclink' href='#ParserOtherNotes'>Other notes</a></p>
-	</ol>	
-</ol>
-
-
-<!-- ======================================================================================================== -->
-<a id="RdfOverview"></a>
-<h2 class='topic' onclick='toggle(this)'>1 - RDF support overview</h2>
-<div class='topic'>
-	<p>
-		Juneau supports serializing and parsing arbitrary POJOs to and from the following RDF formats:
-	</p>
-	<ul>
-		<li>RDF/XML
-		<li>Abbreviated RDF/XML
-		<li>N-Triple
-		<li>Turtle
-		<li>N3
-	</ul>
-	<p>
-		Juneau can serialize and parse instances of any of the following POJO types:
-	</p>
-	<ul class='spaced-list'>
-		<li>
-			Java primitive objects (e.g. <code>String</code>, <code>Integer</code>, <code>Boolean</code>, 
-			<code>Float</code>).
-		<li>
-			Java collections framework objects (e.g. <code>HashSet</code>, <code>TreeMap</code>) containing anything on 
-				this list.
-		<li>
-			Multi-dimensional arrays of any type on this list.
-		<li>
-			Java Beans with properties of any type on this list.
-		<li>
-			Classes with standard transformations to and from <code>Strings</code> (e.g. classes containing 
-			<code>toString()</code>, <code>fromString()</code>, <code>valueOf()</code>, <code>constructor(String)</code>).
-	</ul>
-	<p>
-		In addition to the types shown above, Juneau includes the ability to define 'swaps' to transform non-standard 
-		object and property types to serializable forms (e.g. to transform <code>Calendars</code> to and from 
-		<code>ISO8601</code> strings, or <code>byte[]</code> arrays to and from base-64 encoded strings).
-		<br>These  can be associated with serializers/parsers, or can be associated with classes or bean properties through 
-		type and method annotations.
-	</p>
-	<p>
-		Refer to <a href='../../../../overview-summary.html#Core.PojoCategories' class='doclink'>POJO Categories</a> 
-		for a complete definition of supported POJOs.
-	</p>
-	
-	<h6 class='topic'>Prerequisites</h6>
-	<p>
-		Juneau uses the Jena library for these formats.  
-		<br>The predefined serializers and parsers convert POJOs to and from RDF models and then uses Jena to convert 
-		them to and from the various RDF languages.	
-	</p>
-	<p>
-		Jena libraries must be provided on the classpath separately if you plan on making use of the RDF support.
-	</p>
-	<p>
-		The minimum list of required jars are:
-	</p>
-	<ul>
-		<li><code>jena-core-2.7.1.jar</code> 	
-		<li><code>jena-iri-0.9.2.jar</code> 	
-		<li><code>log4j-1.2.16.jar</code> 	
-		<li><code>slf4j-api-1.6.4.jar</code> 	
-		<li><code>slf4j-log4j12-1.6.4.jar</code> 	
-	</ul>
-
-	<!-- ======================================================================================================== -->
-	<a id="RdfOverviewExample"></a>
-	<h3 class='topic' onclick='toggle(this)'>1.1 - RDF support overview - example</h3>
-	<div class='topic'>
-		<p>
-			The example shown here is from the Address Book resource located in the 
-			<code>org.apache.juneau.sample.war</code> application.
-		</p>
-		<p>
-			The POJO model consists of a <code>List</code> of <code>Person</code> beans, with each <code>Person</code> 
-			containing zero or more <code>Address</code> beans.
-		</p>
-		<p>
-			When you point a browser at <code>/sample/addressBook</code>, the POJO is rendered as HTML:
-		</p>
-		<img class='bordered' src="doc-files/Example_HTML.png">
-		<p>
-			By appending <code>?Accept=<i>mediaType</i>&amp;plainText=true</code> to the URL, you can view the data 
-			in the various RDF supported formats.
-		</p>
-		
-		<h6 class='figure'>RDF/XML</h6>
-		<img class='bordered' src="doc-files/Example_RDFXML.png">
-		
-		<h6 class='figure'>Abbreviated RDF/XML</h6>
-		<img class='bordered' src="doc-files/Example_RDFXMLABBREV.png">
-
-		<h6 class='figure'>N-Triple</h6>
-		<img class='bordered' src="doc-files/Example_NTriple.png">
-
-		<h6 class='figure'>Turtle</h6>
-		<img class='bordered' src="doc-files/Example_Turtle.png">
-		
-		<h6 class='figure'>N3</h6>
-		<img class='bordered' src="doc-files/Example_N3.png">
-	</div>
-</div>
-
-<!-- ======================================================================================================== -->
-<a id="RdfSerializer"></a>
-<h2 class='topic' onclick='toggle(this)'>2 - RdfSerializer class</h2>
-<div class='topic'>
-	<p>
-		The {@link org.apache.juneau.jena.RdfSerializer} class is the top-level class for all Jena-based serializers.
-		<br>Language-specific serializers are defined as inner subclasses of the <code>RdfSerializer</code> class:
-	</p>	
-	<ul>
-		<li>{@link org.apache.juneau.jena.RdfSerializer.Xml}
-		<li>{@link org.apache.juneau.jena.RdfSerializer.XmlAbbrev}
-		<li>{@link org.apache.juneau.jena.RdfSerializer.NTriple}
-		<li>{@link org.apache.juneau.jena.RdfSerializer.Turtle}
-		<li>{@link org.apache.juneau.jena.RdfSerializer.N3}
-	</ul>
-	<p>
-		Static reusable instances of serializers are also provided with default settings:
-	</p>
-	<ul>
-		<li>{@link org.apache.juneau.jena.RdfSerializer#DEFAULT_XML}
-		<li>{@link org.apache.juneau.jena.RdfSerializer#DEFAULT_XMLABBREV}
-		<li>{@link org.apache.juneau.jena.RdfSerializer#DEFAULT_TURTLE}
-		<li>{@link org.apache.juneau.jena.RdfSerializer#DEFAULT_NTRIPLE}
-		<li>{@link org.apache.juneau.jena.RdfSerializer#DEFAULT_N3}
-	</ul>
-	<p>
-		Abbreviated RDF/XML is currently the most widely accepted and readable RDF syntax, so the examples shown here 
-		will use that format.
-	</p>
-	<p>
-		For brevity, the examples will use public fields instead of getters/setters to reduce the size of the examples.
-		<br>In the real world, you'll typically want to use standard bean getters and setters.
-	</p>
-	<p>
-		To start off simple, we'll begin with the following simplified bean and build it up.
-	</p>
-	<p class='bcode'>
-	<jk>public class</jk> Person {
-		<jc>// Bean properties</jc>
-		<jk>public int</jk> <jf>id</jf>;
-		<jk>public</jk> String <jf>name</jf>;
-
-		<jc>// Bean constructor (needed by parser)</jc>
-		<jk>public</jk> Person() {}
-
-		<jc>// Normal constructor</jc>
-		<jk>public</jk> Person(<jk>int</jk> id, String name) {
-			<jk>this</jk>.<jf>id</jf> = id;
-			<jk>this</jk>.<jf>name</jf> = name;
-		}
-	}
-	</p>
-	<p>
-		The following code shows how to convert this to abbreviated RDF/XML:
-	</p>
-	<p class='bcode'>
-	<jc>// Create a new serializer with readable output.</jc>
-	RdfSerializer s = <jk>new</jk> RdfSerializerBuilder().xmlabbrev()
-		.property(RdfProperties.<jsf>RDF_rdfxml_tab</jsf>, 3).build();
-
-	<jc>// Create our bean.</jc>
-	Person p = <jk>new</jk> Person(1, <js>"John Smith"</js>);
-
-	<jc>// Serialize the bean to RDF/XML.</jc>
-	String rdfXml = s.serialize(p);
-	</p>
-	<p>
-		It should be noted that serializers can also be created by cloning existing serializers:
-	</p>
-	<p class='bcode'>
-	<jc>// Create a new serializer with readable output by cloning an existing serializer.</jc>
-	RdfSerializer s = RdfSerializer.<jsf>DEFAULT_XMLABBREV</jsf>.builder()
-		.property(RdfProperties.<jsf>RDF_rdfxml_tab</jsf>, 3).build();
-	</p>
-	<p>
-		This code produces the following output:
-	</p>
-	<p class='bcode'>
-	<xt>&lt;rdf:RDF</xt>
-	    <xa>xmlns:rdf</xa>=<xs>"http://www.w3.org/1999/02/22-rdf-syntax-ns#"</xs>
-	    <xa>xmlns:j</xa>=<xs>"http://www.apache.org/juneau/"</xs>
-	    <xa>xmlns:jp</xa>=<xs>"http://www.apache.org/juneaubp/"</xs><xt>&gt;</xt>
-	   <xt>&lt;rdf:Description&gt;</xt>
-	      <xt>&lt;jp:id&gt;</xt>1<xt>&lt;/jp:id&gt;</xt>
-	      <xt>&lt;jp:name&gt;</xt>John Smith<xt>&lt;/jp:name&gt;</xt>
-	   <xt>&lt;/rdf:Description&gt;</xt>
-	<xt>&lt;/rdf:RDF&gt;</xt>
-	</p>
-	<p>
-		Notice that we've taken an arbitrary POJO and converted it to RDF.
-		<br>The Juneau serializers and parsers are designed to work with arbitrary POJOs without requiring any annotations.
-		<br>That being said, several annotations are provided to customize how POJOs are handled to produce usable RDF.
-	</p>
-	
-	<!-- ======================================================================================================== -->
-	<a id="Namespaces"></a>
-	<h3 class='topic' onclick='toggle(this)'>2.1 - Namespaces</h3>
-	<div class='topic'>
-		<p>
-			You'll notice in the previous example that Juneau namespaces are used to represent bean property names.
-			<br>These are used by default when namespaces are not explicitly specified.
-		</p>
-		<p>
-			The <code>juneau</code> namespace is used for generic names for objects that don't have namespaces 
-			associated with them.
-		</p>
-		<p>
-			The <code>juneaubp</code> namespace is used on bean properties that don't have namespaces associated with 
-			them.
-		</p>
-		<p>
-			The easiest way to specify namespaces is through annotations.
-			<br>In this example, we're going to associate the prefix <code>'per'</code> to our bean class and all properties 
-			of this class.
-			<br>We do this by adding the following annotation to our class:
-		</p>
-		<p class='bcode'>
-	<ja>@Rdf</ja>(prefix=<js>"per"</js>)
-	<jk>public class</jk> Person {
-	</p>
-	<p>
-		In general, the best approach is to define the namespace URIs at the package level using a 
-		<code>package-info.java</code> class, like so:
-	</p>
-	<p class='bcode'>
-	<jc>// RDF namespaces used in this package</jc>
-	<ja>@RdfSchema</ja>(
-		prefix=<js>"ab"</js>,
-		rdfNs={
-			<ja>@RdfNs</ja>(prefix=<js>"ab"</js>, namespaceURI=<js>"http://www.apache.org/addressBook/"</js>),
-			<ja>@RdfNs</ja>(prefix=<js>"per"</js>, namespaceURI=<js>"http://www.apache.org/person/"</js>),
-			<ja>@RdfNs</ja>(prefix=<js>"addr"</js>, namespaceURI=<js>"http://www.apache.org/address/"</js>),
-			<ja>@RdfNs</ja>(prefix=<js>"mail"</js>, namespaceURI=<js>"http://www.apache.org/mail/"</js>)
-		}
-	)
-	<jk>package</jk> org.apache.juneau.sample.addressbook;
-	<jk>import</jk> org.apache.juneau.xml.annotation.*;
-		</p>
-		<p>
-			This assigns a default prefix of <js>"ab"</js> for all classes and properties within the project, and 
-			specifies various other prefixes used within this project.
-		</p>
-		<p>
-			Now when we rerun the sample code, we'll get the following:
-		</p>
-		<p class='bcode'>
-	<xt>&lt;rdf:RDF</xt>
-	    <xa>xmlns:rdf</xa>=<xs>"http://www.w3.org/1999/02/22-rdf-syntax-ns#"</xs>
-	    <xa>xmlns:j</xa>=<xs>"http://www.apache.org/juneau/"</xs>
-	    <xa>xmlns:jp</xa>=<xs>"http://www.apache.org/juneaubp/"</xs>
-	    <xa>xmlns:per</xa>=<xs>"http://www.apache.org/person/"</xs><xt>&gt;</xt>
-	   <xt>&lt;rdf:Description&gt;</xt>
-	      <xt>&lt;per:id&gt;</xt>1<xt>&lt;/per:id&gt;</xt>
-	      <xt>&lt;per:name&gt;</xt>John Smith<xt>&lt;/per:name&gt;</xt>
-	   <xt>&lt;/rdf:Description&gt;</xt>
-	<xt>&lt;/rdf:RDF&gt;</xt>
-		</p>
-		<p>
-			Namespace auto-detection ({@link org.apache.juneau.xml.XmlSerializerContext#XML_autoDetectNamespaces}) is 
-			enabled on serializers by default.
-			<br>This causes the serializer to make a first-pass over the data structure to look for namespaces.
-			<br>In high-performance environments, you may want to consider disabling auto-detection and providing an 
-			explicit list of namespaces to the serializer to avoid this scanning step.
-		</p>
-		<p class='bcode'>
-	<jc>// Create a new serializer, but manually specify the namespaces.</jc>
-	RdfSerializer s = <jk>new</jk> RdfSerializerBuilder()
-		.xmlabbrev()
-		.property(RdfProperties.<jsf>RDF_rdfxml_tab</jsf>, 3)
-		.autoDetectNamespaces(<jk>false</jk>)
-		.namespaces(<js>"{per:'http://www.apache.org/person/'}"</js>)
-		.build();
-	</p>
-		<p>
-			This code change will produce the same output as before, but will perform slightly better since it doesn't 
-			have to crawl the POJO tree before serializing the result.
-		</p>
-	</div>
-
-	<!-- ======================================================================================================== -->
-	<a id="UriProperties"></a>
-	<h3 class='topic' onclick='toggle(this)'>2.2 - URI properties</h3>
-	<div class='topic'>
-		<p>
-			Bean properties of type <code>java.net.URI</code> or <code>java.net.URL</code> have special meaning to the 
-			RDF serializer.
-			<br>They are interpreted as resource identifiers.
-		</p>
-		<p>
-			In the following code, we're adding 2 new properties.
-			<br>The first property is annotated with <ja>@BeanProperty</ja> to identify that this property is the resource 
-			identifier for this bean.
-			<br>The second un-annotated property is interpreted as a reference to another resource.
-		</p>
-		<p class='bcode'>	
-	<jk>public class</jk> Person {
-		
-		<jc>// Bean properties</jc>
-		<ja>@Rdf</ja>(beanUri=<jk>true</jk>) 
-		<jk>public</jk> URI <jf>uri</jf>;
-		
-		<jk>public</jk> URI <jf>addressBookUri</jf>;
-	
-		...
-		
-		<jc>// Normal constructor</jc>
-		<jk>public</jk> Person(<jk>int</jk> id, String name, String uri, String addressBookUri) <jk>throws</jk> URISyntaxException {
-			<jk>this</jk>.<jf>id</jf> = id;
-			<jk>this</jk>.<jf>name</jf> = name;
-			<jk>this</jk>.<jf>uri</jf> = <jk>new</jk> URI(uri);
-			<jk>this</jk>.<jf>addressBookUri</jf> = <jk>new</jk> URI(addressBookUri);
-		}
-	}
-		</p>
-		<p>
-			We alter our code to pass in values for these new properties.
-		</p>
-		<p class='bcode'>
-	<jc>// Create our bean.</jc>
-	Person p = <jk>new</jk> Person(1, <js>"John Smith"</js>, <js>"http://sample/addressBook/person/1"</js>, 
-		<js>"http://sample/addressBook"</js>);
-		</p>
-		<p>
-			Now when we run the sample code, we get the following:
-		</p>
-		<p class='bcode'>
-	<xt>&lt;rdf:RDF</xt>
-	    <xa>xmlns:rdf</xa>=<xs>"http://www.w3.org/1999/02/22-rdf-syntax-ns#"</xs>
-	    <xa>xmlns:j</xa>=<xs>"http://www.apache.org/juneau/"</xs>
-	    <xa>xmlns:jp</xa>=<xs>"http://www.apache.org/juneaubp/"</xs>
-	    <xa>xmlns:per</xa>=<xs>"http://www.apache.org/person/"</xs><xt>&gt;</xt>
-	   <xt>&lt;rdf:Description <b><xa>rdf:about</xa>=<xs>"http://sample/addressBook/person/1"</xs></b>&gt;</xt>
-	      <xt>&lt;per:addressBookUri</xt> <xa>rdf:resource</xa>=<xs>"http://sample/addressBook"</xs><xt>/&gt;</xt>
-	      <xt>&lt;per:id&gt;</xt>1<xt>&lt;/per:id&gt;</xt>
-	      <xt>&lt;per:name&gt;</xt>John Smith<xt>&lt;/per:name&gt;</xt>
-	   <xt>&lt;/rdf:Description&gt;</xt>
-	<xt>&lt;/rdf:RDF&gt;</xt>
-		</p>
-		<p>
-			The {@link org.apache.juneau.annotation.URI} annotation can also be used on classes and properties 
-			to identify them as URLs when they're not instances of <code>java.net.URI</code> or <code>java.net.URL</code> 
-			(not needed if <code><ja>@Rdf</ja>(beanUri=<jk>true</jk>)</code> is already specified).
-		</p>
-		<p>
-			The following properties would have produced the same output as before.  
-			Note that the <ja>@URI</ja> annotation is only needed on the second property.
-		</p>
-		<p class='bcode'>
-	<jk>public class</jk> Person {
-		
-		<jc>// Bean properties</jc>
-		<ja>@Rdf</ja>(beanUri=<jk>true</jk>) <jk>public</jk> String <jf>uri</jf>;
-		
-		<ja>@URI</ja> <jk>public</jk> String <jf>addressBookUri</jf>;
-		</p>
-		<p>
-			Also take note of the {@link org.apache.juneau.serializer.SerializerContext#SERIALIZER_uriResolution},
-			{@link org.apache.juneau.serializer.SerializerContext#SERIALIZER_uriRelativity}, and 
-			and {@link org.apache.juneau.serializer.SerializerContext#SERIALIZER_uriContext}
-			settings that can be specified on the serializer to resolve relative and context-root-relative URIs to 
-			fully-qualified URIs.
-		</p>
-		<p>
-			This can be useful if you want to keep the URI authority and context root information out of the bean logic 
-			layer.
-		</p>
-		<p>
-			The following code produces the same output as before, but the URIs on the beans are relative.
-		</p>
-		<p class='bcode'>
-	<jc>// Create a new serializer with readable output.</jc>
-	RdfSerializer s = <jk>new</jk> RdfSerializerBuilder()
-		.xmlabbrev()
-		.property(RdfProperties.<jsf>RDF_rdfxml_tab</jsf>, 3);
-		.relativeUriBase(<js>"http://myhost/sample"</js>);
-		.absolutePathUriBase(<js>"http://myhost"</js>)
-		.build();
-		
-	<jc>// Create our bean.</jc>
-	Person p = <jk>new</jk> Person(1, <js>"John Smith"</js>, <js>"person/1"</js>, <js>"/"</js>);
-
-	<jc>// Serialize the bean to RDF/XML.</jc>
-	String rdfXml = s.serialize(p);
-		</p>		
-	</div>
-	
-	<!-- ======================================================================================================== -->
-	<a id="BeanAnnotations"></a>
-	<h3 class='topic' onclick='toggle(this)'>2.3 - @Bean and @BeanProperty annotations</h3>
-	<div class='topic'>
-		<p>
-			The {@link org.apache.juneau.annotation.Bean} and {@link org.apache.juneau.annotation.BeanProperty} 
-			annotations are used to customize the behavior of beans across the entire framework.
-			<br>In addition to using them to identify the resource URI for the bean shown above, they have various other 
-			uses:
-		</p>
-		<ul class='spaced-list'>
-			<li>
-				Hiding bean properties.
-			<li>
-				Specifying the ordering of bean properties.
-			<li>
-				Overriding the names of bean properties.
-			<li>
-				Associating transforms at both the class and property level (to convert non-serializable POJOs to 
-				serializable forms).
-		</ul>
-		<p>
-			For example, we now add a <code>birthDate</code> property, and associate a swap with it to transform
-			it to an ISO8601 date-time string in GMT time.
-			<br>By default, <code>Calendars</code> are treated as beans by the framework, which is usually not how you want 
-			them serialized.
-			<br>Using swaps, we can convert them to standardized string forms.
-		</p>
-		<p class='bcode'>	
-	<jk>public class</jk> Person {
-		
-		<jc>// Bean properties</jc>
-		<ja>@BeanProperty</ja>(swap=CalendarSwap.ISO8601DTZ.<jk>class</jk>) <jk>public</jk> Calendar birthDate;
-		...
-		
-		<jc>// Normal constructor</jc>
-		<jk>public</jk> Person(<jk>int</jk> id, String name, String uri, String addressBookUri, String birthDate) 
-				<jk>throws</jk> Exception {
-			...
-			<jk>this</jk>.<jf>birthDate</jf> = <jk>new</jk> GregorianCalendar();
-			<jk>this</jk>.<jf>birthDate</jf>.setTime(
-				DateFormat.<jsm>getDateInstance</jsm>(DateFormat.<jsf>MEDIUM</jsf>).parse(birthDate));
-		}
-	}
-		</p>
-		<p>
-			And we alter our code to pass in the birthdate.
-		</p>
-		<p class='bcode'>
-	<jc>// Create our bean.</jc>
-	Person p = <jk>new</jk> Person(1, <js>"John Smith"</js>, <js>"http://sample/addressBook/person/1"</js>, 
-		<js>"http://sample/addressBook"</js>, <js>"Aug 12, 1946"</js>);
-		</p>
-		<p>
-			Now when we rerun the sample code, we'll get the following:
-		</p>
-		<p class='bcode'>
-	<xt>&lt;rdf:RDF</xt>
-	    <xa>xmlns:rdf</xa>=<xs>"http://www.w3.org/1999/02/22-rdf-syntax-ns#"</xs>
-	    <xa>xmlns:j</xa>=<xs>"http://www.apache.org/juneau/"</xs>
-	    <xa>xmlns:jp</xa>=<xs>"http://www.apache.org/juneaubp/"</xs>
-	    <xa>xmlns:per</xa>=<xs>"http://www.apache.org/person/"</xs><xt>&gt;</xt>
-	   <xt>&lt;rdf:Description <xa>rdf:about</xa>=<xs>"http://sample/addressBook/person/1"</xs>&gt;</xt>
-	      <xt>&lt;per:addressBookUri</xt> <xa>rdf:resource</xa>=<xs>"http://sample/addressBook"</xs><xt>/&gt;</xt>
-	      <xt>&lt;per:id&gt;</xt>1<xt>&lt;/per:id&gt;</xt>
-	      <xt>&lt;per:name&gt;</xt>John Smith<xt>&lt;/per:name&gt;</xt>
-	      <xt>&lt;per:birthDate&gt;</xt>1946-08-12T00:00:00Z<xt>&lt;/per:birthDate&gt;</xt>
-	   <xt>&lt;/rdf:Description&gt;</xt>
-	<xt>&lt;/rdf:RDF&gt;</xt>
-		</p>
-	</div>
-	
-		
-	<!-- ======================================================================================================== -->
-	<a id="Collections"></a>
-	<h3 class='topic' onclick='toggle(this)'>2.4 - Collections</h3>
-	<div class='topic'>
-		<p>
-			Collections and arrays are converted to RDF sequences.
-			<br>In our example, let's add a list-of-beans property to our sample class:
-		</p>
-		<p class='bcode'>
-	<jk>public class</jk> Person {
-		
-		<jc>// Bean properties</jc>
-		<jk>public</jk> LinkedList&lt;Address&gt; <jf>addresses</jf> = <jk>new</jk> LinkedList&lt;Address&gt;();
-		...
-	}
-		</p>
-		<p>
-			The <code>Address</code> class has the following properties defined:
-		</p>
-		<p class='bcode'>
-	<ja>@Rdf</ja>(prefix=<js>"addr"</js>)
-	<jk>public class</jk> Address {
-
-		<jc>// Bean properties</jc>
-		<ja>@Rdf</ja>(beanUri=<jk>true</jk>) <jk>public</jk> URI <jf>uri</jf>;
-		<jk>public</jk> URI <jf>personUri</jf>;
-		
-		<jk>public int</jk> <jf>id</jf>;
-		
-		<ja>@Rdf</ja>(prefix=<js>"mail"</js>) 
-		<jk>public</jk> String <jf>street</jf>, <jf>city</jf>, <jf>state</jf>;
-		
-		<ja>@Rdf</ja>(prefix=<js>"mail"</js>) 
-		<jk>public int</jk> <jf>zip</jf>;
-		
-		<jk>public boolean</jk> <jf>isCurrent</jf>;
-	}
-		</p>
-		<p>
-			Next, add some quick-and-dirty code to add an address to our person bean:
-		</p>
-		<p class='bcode'>
-	<jc>// Create a new serializer (revert back to namespace autodetection).</jc>
-	RdfSerializer s = <jk>new</jk> RdfSerializerBuilder().xmlabbrev().property(RdfProperties.<jsf>RDF_rdfxml_tab</jsf>, 3).build();
-
-	<jc>// Create our bean.</jc>
-	Person p = <jk>new</jk> Person(1, <js>"John Smith"</js>, <js>"http://sample/addressBook/person/1"</js>, 
-		<js>"http://sample/addressBook"</js>, <js>"Aug 12, 1946"</js>);
-	Address a = <jk>new</jk> Address();
-	a.<jf>uri</jf> = <jk>new</jk> URI(<js>"http://sample/addressBook/address/1"</js>);
-	a.<jf>personUri</jf> = <jk>new</jk> URI(<js>"http://sample/addressBook/person/1"</js>);
-	a.<jf>id</jf> = 1;
-	a.<jf>street</jf> = <js>"100 Main Street"</js>;
-	a.<jf>city</jf> = <js>"Anywhereville"</js>;
-	a.<jf>state</jf> = <js>"NY"</js>;
-	a.<jf>zip</jf> = 12345;
-	a.<jf>isCurrent</jf> = <jk>true</jk>;
-	p.<jf>addresses</jf>.add(a);	
-		</p>
-		<p>
-			Now when we run the sample code, we get the following:
-		</p>
-		<p class='bcode'>
-	<xt>&lt;rdf:RDF</xt>
-	    <xa>xmlns:rdf</xa>=<xs>"http://www.w3.org/1999/02/22-rdf-syntax-ns#"</xs>
-	    <xa>xmlns:j</xa>=<xs>"http://www.apache.org/juneau/"</xs>
-	    <xa>xmlns:jp</xa>=<xs>"http://www.apache.org/juneaubp/"</xs>
-	    <xa>xmlns:per</xa>=<xs>"http://www.apache.org/person/"</xs>
-	    <b><xa>xmlns:mail</xa>=<xs>"http://www.apache.org/mail/"</xs></b>
-	    <b><xa>xmlns:addr</xa>=<xs>"http://www.apache.org/address/"</xs></b><xt>&gt;</xt>
-	   <xt>&lt;rdf:Description <xa>rdf:about</xa>=<xs>"http://sample/addressBook/person/1"</xs>&gt;</xt>
-	      <xt>&lt;per:addressBookUri</xt> <xa>rdf:resource</xa>=<xs>"http://sample/addressBook"</xs><xt>/&gt;</xt>
-	      <xt>&lt;per:id&gt;</xt>1<xt>&lt;/per:id&gt;</xt>
-	      <xt>&lt;per:name&gt;</xt>John Smith<xt>&lt;/per:name&gt;</xt>
-	      <b><xt>&lt;per:addresses&gt;</xt>
-	         <xt>&lt;rdf:Seq&gt;</xt>
-	            <xt>&lt;rdf:li&gt;</xt>
-	               <xt>&lt;rdf:Description <xa>rdf:about</xa>=<xs>"http://sample/addressBook/address/1"</xs>&gt;</xt>
-	                  <xt>&lt;addr:personUri <xa>rdf:resource</xa>=<xs>"http://sample/addressBook/person/1"</xs>/&gt;</xt>
-	                  <xt>&lt;addr:id&gt;</xt>1<xt>&lt;/addr:id&gt;</xt>
-	                  <xt>&lt;mail:street&gt;</xt>100 Main Street<xt>&lt;/mail:street&gt;</xt>
-	                  <xt>&lt;mail:city&gt;</xt>Anywhereville<xt>&lt;/mail:city&gt;</xt>
-	                  <xt>&lt;mail:state&gt;</xt>NY<xt>&lt;/mail:state&gt;</xt>
-	                  <xt>&lt;mail:zip&gt;</xt>12345<xt>&lt;/mail:zip&gt;</xt>
-	                  <xt>&lt;addr:isCurrent&gt;</xt>true<xt>&lt;/addr:isCurrent&gt;</xt>
-	               <xt>&lt;/rdf:Description&gt;</xt>
-	            <xt>&lt;/rdf:li&gt;</xt>
-	         <xt>&lt;/rdf:Seq&gt;</xt>
-	      <xt>&lt;/per:addresses&gt;</xt></b>
-	   <xt>&lt;/rdf:Description&gt;</xt>
-	<xt>&lt;/rdf:RDF&gt;</xt>
-		</p>
-	</div>
-	
-
-	<!-- ======================================================================================================== -->
-	<a id="RootProperty"></a>
-	<h3 class='topic' onclick='toggle(this)'>2.5 - Root property</h3>
-	<div class='topic'>
-		<p>
-			For all RDF languages, the POJO objects get broken down into simple triplets.
-			<br>Unfortunately, for tree-structured data like the POJOs shown above, this causes the root node of the tree 
-			to become lost.
-			<br>There is no easy way to identify that <code>person/1</code> is the root node in our tree once in triplet 
-			form, and in some cases it's impossible.
-		</p>
-		<p>
-			By default, the {@link org.apache.juneau.jena.RdfParser} class handles this by scanning all the nodes and 
-			identifying the nodes without incoming references.
-			<br>However, this is inefficient, especially for large models.
-			<br>And in cases where the root node is referenced by another node in the model by URL, it's not possible to 
-			locate the root at all.
-		</p>
-		<p>
-			To resolve this issue, the property {@link org.apache.juneau.jena.RdfSerializerContext#RDF_addRootProperty} 
-			was introduced.
-			<br>When enabled, this adds a special <code>root</code> attribute to the root node to make it easy to locate 
-			by the parser.
-		</p>
-		<p>
-			To enable, set the <jsf>RDF_addRootProperty</jsf> property to <jk>true</jk> on the serializer:
-		</p>
-		<p class='bcode'>
-	<jc>// Create a new serializer.</jc>
-	RdfSerializer s = <jk>new</jk> RdfSerializerBuilder()
-		.xmlabbrev()
-		.property(RdfProperties.<jsf>RDF_rdfxml_tab</jsf>, 3),
-		.addRootProperty(<jk>true</jk>)
-		.build();
-		</p>	
-		<p>
-			Now when we rerun the sample code, we'll see the added <code>root</code> attribute on the root resource.
-		</p>
-		<p class='bcode'>
-	<xt>&lt;rdf:RDF</xt>
-	    <xa>xmlns:rdf</xa>=<xs>"http://www.w3.org/1999/02/22-rdf-syntax-ns#"</xs>
-	    <xa>xmlns:j</xa>=<xs>"http://www.apache.org/juneau/"</xs>
-	    <xa>xmlns:jp</xa>=<xs>"http://www.apache.org/juneaubp/"</xs>
-	    <xa>xmlns:per</xa>=<xs>"http://www.apache.org/person/"</xs>
-	    <xa>xmlns:mail</xa>=<xs>"http://www.apache.org/mail/"</xs>
-	    <xa>xmlns:addr</xa>=<xs>"http://www.apache.org/address/"</xs><xt>&gt;</xt>
-	   <xt>&lt;rdf:Description <xa>rdf:about</xa>=<xs>"http://sample/addressBook/person/1"</xs>&gt;</xt>
-  	      <b><xt>&lt;j:root&gt;</xt>true<xt>&lt;/j:root&gt;</xt></b>
-  	      <xt>&lt;per:addressBookUri</xt> <xa>rdf:resource</xa>=<xs>"http://sample/addressBook"</xs><xt>/&gt;</xt>
-	      <xt>&lt;per:id&gt;</xt>1<xt>&lt;/per:id&gt;</xt>
-	      <xt>&lt;per:name&gt;</xt>John Smith<xt>&lt;/per:name&gt;</xt>
-	      <xt>&lt;per:addresses&gt;</xt>
-	         <xt>&lt;rdf:Seq&gt;</xt>
-	            <xt>&lt;rdf:li&gt;</xt>
-	               <xt>&lt;rdf:Description <xa>rdf:about</xa>=<xs>"http://sample/addressBook/address/1"</xs>&gt;</xt>
-	                  <xt>&lt;addr:personUri <xa>rdf:resource</xa>=<xs>"http://sample/addressBook/person/1"</xs>/&gt;</xt>
-	                  <xt>&lt;addr:id&gt;</xt>1<xt>&lt;/addr:id&gt;</xt>
-	                  <xt>&lt;mail:street&gt;</xt>100 Main Street<xt>&lt;/mail:street&gt;</xt>
-	                  <xt>&lt;mail:city&gt;</xt>Anywhereville<xt>&lt;/mail:city&gt;</xt>
-	                  <xt>&lt;mail:state&gt;</xt>NY<xt>&lt;/mail:state&gt;</xt>
-	                  <xt>&lt;mail:zip&gt;</xt>12345<xt>&lt;/mail:zip&gt;</xt>
-	                  <xt>&lt;addr:isCurrent&gt;</xt>true<xt>&lt;/addr:isCurrent&gt;</xt>
-	               <xt>&lt;/rdf:Description&gt;</xt>
-	            <xt>&lt;/rdf:li&gt;</xt>
-	         <xt>&lt;/rdf:Seq&gt;</xt>
-	      <xt>&lt;/per:addresses&gt;</xt>
-	   <xt>&lt;/rdf:Description&gt;</xt>
-	<xt>&lt;/rdf:RDF&gt;</xt>
-		</p>
-	</div>
-	
-
-	<!-- ======================================================================================================== -->
-	<a id="TypedLiterals"></a>
-	<h3 class='topic' onclick='toggle(this)'>2.6 - Typed literals</h3>
-	<div class='topic'>
-		<p>
-			XML-Schema data-types can be added to non-<code>String</code> literals through the 
-			{@link org.apache.juneau.jena.RdfSerializerContext#RDF_addLiteralTypes} setting.
-		</p>
-		<p>
-			To enable, set the <jsf>RDF_addLiteralTypes</jsf> property to <jk>true</jk> on the serializer:
-		</p>
-		<p class='bcode'>
-	<jc>// Create a new serializer (revert back to namespace autodetection).</jc>
-	RdfSerializer s = <jk>new</jk> RdfSerializerBuilder()
-		.xmlabbrev()
-		.property(RdfProperties.<jsf>RDF_rdfxml_tab</jsf>, 3),
-		.addLiteralTypes(<jk>true</jk>)
-		.build();
-		</p>	
-		<p>
-			Now when we rerun the sample code, we'll see the added <code>root</code> attribute on the root resource.
-		</p>
-		<p class='bcode'>
-	<xt>&lt;rdf:RDF</xt>
-	    <xa>xmlns:rdf</xa>=<xs>"http://www.w3.org/1999/02/22-rdf-syntax-ns#"</xs>
-	    <xa>xmlns:j</xa>=<xs>"http://www.apache.org/juneau/"</xs>
-	    <xa>xmlns:jp</xa>=<xs>"http://www.apache.org/juneaubp/"</xs>
-	    <xa>xmlns:per</xa>=<xs>"http://www.apache.org/person/"</xs>
-	    <xa>xmlns:mail</xa>=<xs>"http://www.apache.org/mail/"</xs>
-	    <xa>xmlns:addr</xa>=<xs>"http://www.apache.org/address/"</xs><xt>&gt;</xt>
-	   <xt>&lt;rdf:Description <xa>rdf:about</xa>=<xs>"http://sample/addressBook/person/1"</xs>&gt;</xt>
-  	      <xt>&lt;per:addressBookUri</xt> <xa>rdf:resource</xa>=<xs>"http://sample/addressBook"</xs><xt>/&gt;</xt>
-	      <xt>&lt;per:id</xt> <b><xa>rdf:datatype</xa>=<xs>"http://www.w3.org/2001/XMLSchema#int"</xs></b><xt>&gt;</xt>1<xt>&lt;/per:id&gt;</xt>
-	      <xt>&lt;per:name&gt;</xt>John Smith<xt>&lt;/per:name&gt;</xt>
-	      <xt>&lt;per:addresses&gt;</xt>
-	         <xt>&lt;rdf:Seq&gt;</xt>
-	            <xt>&lt;rdf:li&gt;</xt>
-	               <xt>&lt;rdf:Description <xa>rdf:about</xa>=<xs>"http://sample/addressBook/address/1"</xs>&gt;</xt>
-	                  <xt>&lt;addr:personUri <xa>rdf:resource</xa>=<xs>"http://sample/addressBook/person/1"</xs>/&gt;</xt>
-	                  <xt>&lt;addr:id</xt> <b><xa>rdf:datatype</xa>=<xs>"http://www.w3.org/2001/XMLSchema#int"</xs></b>&gt;</xt>1<xt>&lt;/addr:id&gt;</xt>
-	                  <xt>&lt;mail:street&gt;</xt>100 Main Street<xt>&lt;/mail:street&gt;</xt>
-	                  <xt>&lt;mail:city&gt;</xt>Anywhereville<xt>&lt;/mail:city&gt;</xt>
-	                  <xt>&lt;mail:state&gt;</xt>NY<xt>&lt;/mail:state&gt;</xt>
-	                  <xt>&lt;mail:zip</xt> <b><xa>rdf:datatype</xa>=<xs>"http://www.w3.org/2001/XMLSchema#int"</xs></b>&gt;</xt>12345<xt>&lt;/mail:zip&gt;</xt>
-	                  <xt>&lt;addr:isCurrent</xt> <b><xa>rdf:datatype</xa>=<xs>"http://www.w3.org/2001/XMLSchema#boolean"</xs></b>&gt;</xt>true<xt>&lt;/addr:isCurrent&gt;</xt>
-	               <xt>&lt;/rdf:Description&gt;</xt>
-	            <xt>&lt;/rdf:li&gt;</xt>
-	         <xt>&lt;/rdf:Seq&gt;</xt>
-	      <xt>&lt;/per:addresses&gt;</xt>
-	   <xt>&lt;/rdf:Description&gt;</xt>
-	<xt>&lt;/rdf:RDF&gt;</xt>
-		</p>
-	</div>
-
-
-	<!-- ======================================================================================================== -->
-	<a id="Recursion"></a>
-	<h3 class='topic' onclick='toggle(this)'>2.7 - Non-tree models and recursion detection</h3>
-	<div class='topic'>
-		<p>
-			The RDF serializer is designed to be used against tree structures.
-			<br>It expects that there not be loops in the POJO model (e.g. children with references to parents, etc...).
-			<br>If you try to serialize models with loops, you will usually cause a <code>StackOverflowError</code> to 
-			be thrown (if {@link org.apache.juneau.serializer.SerializerContext#SERIALIZER_maxDepth} is not reached 
-			first).
-		</p>
-		<p>
-			If you still want to use the XML serializer on such models, Juneau provides the 
-			{@link org.apache.juneau.serializer.SerializerContext#SERIALIZER_detectRecursions} setting.
-			<br>It tells the serializer to look for instances of an object in the current branch of the tree and skip 
-			serialization when a duplicate is encountered.
-		</p>
-		<p>
-			Recursion detection introduces a performance penalty of around 20%.
-			<br>For this reason the setting is disabled by default.
-		</p>
-	</div>
-
-
-	<!-- ======================================================================================================== -->
-	<a id="SerializerConfigurableProperties"></a>
-	<h3 class='topic' onclick='toggle(this)'>2.8 - Configurable properties</h3>
-	<div class='topic'>
-		<p>
-			See the following classes for all configurable properties that can be used on this serializer:
-		</p>
-		<ul class='spaced-list'>
-			<li>
-				{@link org.apache.juneau.BeanContext} - Bean context properties.
-			<li>
-				{@link org.apache.juneau.jena.RdfSerializerContext} - Serializer context properties.
-		</ul>
-	</div>		
-
-
-	<!-- ======================================================================================================== -->
-	<a id="SerializerOtherNotes"></a>
-	<h3 class='topic' onclick='toggle(this)'>2.9 - Other notes</h3>
-	<div class='topic'>
-		<ul class='spaced-list'>
-			<li>
-				Like all other Juneau serializers, the RDF serializer is thread safe and maintains an internal cache of 
-				bean classes encountered.
-				For performance reasons, it's recommended that serializers be reused whenever possible instead of always 
-				creating new instances.
-		</ul>
-	</div>
-</div>
-
-
-<!-- ======================================================================================================== -->
-<a id="RdfParser"></a>
-<h2 class='topic' onclick='toggle(this)'>3 - RdfParser class</h2>
-<div class='topic'>
-	<p>
-		The {@link org.apache.juneau.jena.RdfParser} class is the top-level class for all Jena-based parsers.
-		<br>Language-specific parsers are defined as inner subclasses of the <code>RdfParser</code> class:
-	</p>	
-	<ul>
-		<li>{@link org.apache.juneau.jena.RdfParser.Xml}
-		<li>{@link org.apache.juneau.jena.RdfParser.NTriple}
-		<li>{@link org.apache.juneau.jena.RdfParser.Turtle}
-		<li>{@link org.apache.juneau.jena.RdfParser.N3}
-	</ul>
-	<p>
-		The <code>RdfParser.Xml</code> parser handles both regular and abbreviated RDF/XML.
-	</p>
-	<p>
-		Static reusable instances of parsers are also provided with default settings:
-	</p>
-	<ul>
-		<li>{@link org.apache.juneau.jena.RdfParser#DEFAULT_XML}
-		<li>{@link org.apache.juneau.jena.RdfParser#DEFAULT_TURTLE}
-		<li>{@link org.apache.juneau.jena.RdfParser#DEFAULT_NTRIPLE}
-		<li>{@link org.apache.juneau.jena.RdfParser#DEFAULT_N3}
-	</ul>
-	<p>
-		For an example, we will build upon the previous example and parse the generated RDF/XML back into the original 
-		bean.
-	</p>
-		<p class='bcode'>
-	<jc>// Create a new serializer with readable output.</jc>
-	RdfSerializer s = <jk>new</jk> RdfSerializerBuilder()
-		.xmlabbrev()
-		.property(RdfProperties.<jsf>RDF_rdfxml_tab</jsf>, 3)
-		.addRootProperty(<jk>true</jk>)
-		.build();
-
-	<jc>// Create our bean.</jc>
-	Person p = <jk>new</jk> Person(1, <js>"John Smith"</js>, <js>"http://sample/addressBook/person/1"</js>, 
-		<js>"http://sample/addressBook"</js>, <js>"Aug 12, 1946"</js>);
-	Address a = <jk>new</jk> Address();
-	a.<jf>uri</jf> = <jk>new</jk> URI(<js>"http://sample/addressBook/address/1"</js>);
-	a.<jf>personUri</jf> = <jk>new</jk> URI(<js>"http://sample/addressBook/person/1"</js>);
-	a.<jf>id</jf> = 1;
-	a.<jf>street</jf> = <js>"100 Main Street"</js>;
-	a.<jf>city</jf> = <js>"Anywhereville"</js>;
-	a.<jf>state</jf> = <js>"NY"</js>;
-	a.<jf>zip</jf> = 12345;
-	a.<jf>isCurrent</jf> = <jk>true</jk>;
-	p.<jf>addresses</jf>.add(a);	
-
-	<jc>// Serialize the bean to RDF/XML.</jc>
-	String rdfXml = s.serialize(p);
-	
-	<jc>// Parse it back into a bean using the reusable XML parser.</jc>
-	p = RdfParser.<jsf>DEFAULT_XML</jsf>.parse(rdfXml, Person.<jk>class</jk>);
-
-	<jc>// Render it as JSON.</jc>
-	String json = JsonSerializer.<jsf>DEFAULT_LAX_READABLE</jsf>.serialize(p);
-	System.<jsm>err</jsm>.println(json);
-	</p>
-	<p>
-		We print it out to JSON to show that all the data has been preserved:
-	</p>
-	<p class='bcode'>
-	{
-		uri: <js>'http://sample/addressBook/person/1'</js>, 
-		addressBookUri: <js>'http://sample/addressBook'</js>, 
-		id: 1, 
-		name: <js>'John Smith'</js>, 
-		birthDate: <js>'1946-08-12T00:00:00Z'</js>, 
-		addresses: [
-			{
-				uri: <js>'http://sample/addressBook/address/1'</js>, 
-				personUri: <js>'http://sample/addressBook/person/1'</js>, 
-				id: 1, 
-				street: <js>'100 Main Street'</js>, 
-				city: <js>'Anywhereville'</js>, 
-				state: <js>'NY'</js>, 
-				zip: 12345, 
-				isCurrent: <jk>true</jk>
-			}
-		]
-	}	
-	</p>
-	
-
-	<!-- ======================================================================================================== -->
-	<a id="GenericParsing"></a>
-	<h3 class='topic' onclick='toggle(this)'>3.1 - Parsing into generic POJO models</h3>
-	<div class='topic'>
-		<p>
-			The RDF parser is not limited to parsing back into the original bean classes.
-			<br>If the bean classes are not available on the parsing side, the parser can also be used to parse into a 
-			generic model consisting of <code>Maps</code>, <code>Collections</code>, and primitive objects.
-		</p>
-		<p>
-			You can parse into any <code>Map</code> type (e.g. <code>HashMap</code>, <code>TreeMap</code>), but
-			using {@link org.apache.juneau.ObjectMap} is recommended since it has many convenience methods
-			for converting values to various types. 
-			<br>The same is true when parsing collections.  You can use any Collection (e.g. <code>HashSet</code>, 
-			<code>LinkedList</code>) or array (e.g. <code>Object[]</code>, <code>String[]</code>, 
-			<code>String[][]</code>), but using {@link org.apache.juneau.ObjectList} is recommended.
-		</p>
-		<p>
-			When the map or list type is not specified, or is the abstract <code>Map</code>, <code>Collection</code>, 
-			or <code>List</code> types, the parser will use <code>ObjectMap</code> and <code>ObjectList</code> by 
-			default.
-		</p>
-		<p>
-			In the following example, we parse into an <code>ObjectMap</code> and use the convenience methods for 
-			performing data conversion on values in the map.
-		</p>
-		<p class='bcode'>	
-	<jc>// Parse RDF into a generic POJO model.</jc>
-	ObjectMap m = RdfParser.<jsf>DEFAULT_XML</jsf>.parse(rdfXml, ObjectMap.<jk>class</jk>);
-
-	<jc>// Get some simple values.</jc>
-	String name = m.getString(<js>"name"</js>);
-	<jk>int</jk> id = m.getInt(<js>"id"</js>);
-
-	<jc>// Get a value convertable from a String.</jc>
-	URI uri = m.get(URI.<jk>class</jk>, <js>"uri"</js>);
-
-	<jc>// Get a value using a swap.</jc>
-	CalendarSwap swap = <jk>new</jk> CalendarSwap.ISO8601DTZ();
-	Calendar birthDate = m.get(swap, <js>"birthDate"</js>);
-
-	<jc>// Get the addresses.</jc>
-	ObjectList addresses = m.getObjectList(<js>"addresses"</js>);
-
-	<jc>// Get the first address and convert it to a bean.</jc>
-	Address address = addresses.get(Address.<jk>class</jk>, 0);
-		</p>
-		
-		<p>
-			However, there are caveats when parsing into generic models due to the nature of RDF.
-			<br>Watch out for the following:
-		</p>
-		<ul class='spaced-list'>
-			<li>
-				The ordering of entries are going to be inconsistent.
-			<li>
-				Bean URIs are always going to be denoted with the key <js>"uri"</js>.
-				<br>Therefore, you cannot have a bean with a URI property and a separate property named <js>"uri"</js>.
-				<br>The latter will overwrite the former.
-				<br>This isn't a problem when parsing into beans instead of generic POJO models.
-			<li>
-				All values are strings.
-				<br>This normally isn't a problem when using <code>ObjectMap</code> and <code>ObjectList</code> since 
-				various methods are provided for converting to the correct type anyway.
-			<li>
-				The results may not be what is expected if there are lots of URL reference loops in the RDF model.
-				<br>As nodes are processed from the root node down through the child nodes, the parser keeps
-				track of previously processed parent URIs and handles them accordingly.
-				<br>If it finds that the URI has previously been processed, it handles it as a normal URI string and doesn't 
-				process further.
-				<br>However, depending on how complex the reference loops are, the parsed data may end up having the
-				same data in it, but structured differently from the original POJO.
-		</ul>
-		<p>
-			We can see some of these when we render the <code>ObjectMap</code> back to JSON.
-		</p>
-		<p class='bcode'>
-	System.<jsm>err</jsm>.println(JsonSerializer.<jsf>DEFAULT_LAX_READABLE</jsf>.serialize(m));
-		</p>
-		<p>
-			This is what's produced:
-		</p>
-		<p class='bcode'>
-	{
-		uri: <js>'http://sample/addressBook/person/1'</js>, 
-		addresses: [
-			{
-				uri: <js>'http://sample/addressBook/address/1'</js>, 
-				isCurrent: <js>'true'</js>, 
-				zip: <js>'12345'</js>, 
-				state: <js>'NY'</js>, 
-				city: <js>'Anywhereville'</js>, 
-				street: <js>'100 Main Street'</js>, 
-				id: <js>'1'</js>, 
-				personUri: <js>'http://sample/addressBook/person/1'</js>
-			}
-		], 
-		birthDate: <js>'1946-08-12T00:00:00Z'</js>, 
-		addressBookUri: <js>'http://sample/addressBook'</js>, 
-		name: <js>'John Smith'</js>, 
-		id: <js>'1'</js>, 
-		root: <js>'true'</js>
-	}		
-		</p>
-		<p>
-			As a general rule, parsing into beans is often more efficient than parsing into generic models.
-			<br>And working with beans is often less error prone than working with generic models.
-		</p>
-	</div>
-
-	<!-- ======================================================================================================== -->
-	<a id="ParserConfigurableProperties"></a>
-	<h3 class='topic' onclick='toggle(this)'>3.2 - Configurable properties</h3>
-	<!-- TODO -->
-	<div class='topic'>
-		<p>
-			See the following classes for all configurable properties that can be used on this parser:
-		</p>
-		<ul class='spaced-list'>
-			<li>
-				{@link org.apache.juneau.BeanContext} - Bean context properties.
-			<li>
-				{@link org.apache.juneau.jena.RdfParserContext} - Parser context properties.
-		</ul>
-	</div>		
-
-	<!-- ======================================================================================================== -->
-	<a id="ParserOtherNotes"></a>
-	<h3 class='topic' onclick='toggle(this)'>3.3 - Other notes</h3>
-	<div class='topic'>
-		<ul class='spaced-list'>
-			<li>
-				Like all other Juneau parsers, the RDF parser is thread safe and maintains an internal cache of bean 
-				classes encountered.
-				For performance reasons, it's recommended that parser be reused whenever possible instead of always 
-				creating new instances.
-		</ul>
-	</div>
-	
-</div>
-
-<p align="center"><i><b>*** fín ***</b></i></p>
-
-</body>
-</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ab15d45b/juneau-core-rdf/src/main/resources/.gitignore
----------------------------------------------------------------------
diff --git a/juneau-core-rdf/src/main/resources/.gitignore b/juneau-core-rdf/src/main/resources/.gitignore
deleted file mode 100644
index 8a0051a..0000000
--- a/juneau-core-rdf/src/main/resources/.gitignore
+++ /dev/null
@@ -1,12 +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.                                              *
- ***************************************************************************************************************************

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ab15d45b/juneau-core-test/.classpath
----------------------------------------------------------------------
diff --git a/juneau-core-test/.classpath b/juneau-core-test/.classpath
deleted file mode 100644
index aabbbfb..0000000
--- a/juneau-core-test/.classpath
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" output="target/test-classes" path="src/test/java">
-		<attributes>
-			<attribute name="optional" value="true"/>
-			<attribute name="maven.pomderived" value="true"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry kind="src" output="target/classes" path="src/main/java">
-		<attributes>
-			<attribute name="optional" value="true"/>
-			<attribute name="maven.pomderived" value="true"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry kind="src" path="/juneau-core"/>
-	<classpathentry kind="src" path="/juneau-core-rdf"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6">
-		<attributes>
-			<attribute name="maven.pomderived" value="true"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
-		<attributes>
-			<attribute name="maven.pomderived" value="true"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry kind="output" path="target/classes"/>
-</classpath>

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ab15d45b/juneau-core-test/.gitignore
----------------------------------------------------------------------
diff --git a/juneau-core-test/.gitignore b/juneau-core-test/.gitignore
deleted file mode 100644
index d274d47..0000000
--- a/juneau-core-test/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-/target/
-/.settings/
-/.DS_Store

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ab15d45b/juneau-core-test/.project
----------------------------------------------------------------------
diff --git a/juneau-core-test/.project b/juneau-core-test/.project
deleted file mode 100644
index 40fbbd3..0000000
--- a/juneau-core-test/.project
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- ***************************************************************************************************************************
- * 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.                                              *
- ***************************************************************************************************************************
--->
-<projectDescription>
-	<name>juneau-core-test</name>
-	<comment>Base toolkit for serializers, parsers, and bean contexts. NO_M2ECLIPSE_SUPPORT: Project files created with the maven-eclipse-plugin are not supported in M2Eclipse.</comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.m2e.core.maven2Builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.m2e.core.maven2Nature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ab15d45b/juneau-core-test/pom.xml
----------------------------------------------------------------------
diff --git a/juneau-core-test/pom.xml b/juneau-core-test/pom.xml
deleted file mode 100644
index 3c1beae..0000000
--- a/juneau-core-test/pom.xml
+++ /dev/null
@@ -1,109 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- ***************************************************************************************************************************
- * 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.                                              *
- ***************************************************************************************************************************
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-
-	<modelVersion>4.0.0</modelVersion>
-	<artifactId>juneau-core-test</artifactId>
-	<name>Apache Juneau Core Tests</name>
-	<description>Core API tests.</description>
-	<packaging>bundle</packaging>
-
-	<parent>
-		<groupId>org.apache.juneau</groupId>
-		<artifactId>juneau</artifactId>
-		<version>6.3.2-incubating-SNAPSHOT</version>
-	</parent>
-	
-	<dependencies>
-		<dependency>
-			<groupId>org.apache.juneau</groupId>
-			<artifactId>juneau-core</artifactId>
-			<version>${project.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.juneau</groupId>
-			<artifactId>juneau-core-rdf</artifactId>
-			<version>${project.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.jena</groupId>
-			<artifactId>jena-core</artifactId>
-			<optional>false</optional>
-		</dependency>
-		<dependency>
-			<groupId>junit</groupId>
-			<artifactId>junit</artifactId>
-		</dependency>
-   	</dependencies>
-
-	<properties>
-		<!-- Skip javadoc generation since we generate them in the aggregate pom -->
-		<maven.javadoc.skip>true</maven.javadoc.skip>
-	</properties>
-
-	<build>
-		<plugins>
-			<plugin>
-				<groupId>org.apache.felix</groupId>
-				<artifactId>maven-bundle-plugin</artifactId>
-				<version>3.2.0</version>
-				<extensions>true</extensions>
-			</plugin>
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-surefire-plugin</artifactId>
-				<configuration>
-					<includes>
-						<include>**/*Test.class</include>
-					</includes>
-				</configuration>
-			</plugin>
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-source-plugin</artifactId>
-				<executions>
-					<execution>
-						<id>attach-sources</id>
-						<phase>verify</phase>
-						<goals>
-							<goal>jar-no-fork</goal>
-						</goals>
-					</execution>
-				</executions>
-			</plugin>
-			<plugin>
-				<groupId>org.jacoco</groupId>
-				<artifactId>jacoco-maven-plugin</artifactId>
-				<version>0.7.2.201409121644</version>
-				<executions>
-					<execution>
-						<id>default-prepare-agent</id>
-						<goals>
-							<goal>prepare-agent</goal>
-						</goals>
-					</execution>
-					<execution>
-						<id>default-report</id>
-						<phase>prepare-package</phase>
-						<goals>
-							<goal>report</goal>
-						</goals>
-					</execution>
-				</executions>
-			</plugin>
-		</plugins>
-	</build>
-</project>

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ab15d45b/juneau-core-test/src/main/java/.gitkeep
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/main/java/.gitkeep b/juneau-core-test/src/main/java/.gitkeep
deleted file mode 100644
index 2bbbc92..0000000
--- a/juneau-core-test/src/main/java/.gitkeep
+++ /dev/null
@@ -1,14 +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.                                              *
- ***************************************************************************************************************************
--->
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ab15d45b/juneau-core-test/src/test/java/org/apache/juneau/AnnotationsTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/AnnotationsTest.java b/juneau-core-test/src/test/java/org/apache/juneau/AnnotationsTest.java
deleted file mode 100755
index 378f088..0000000
--- a/juneau-core-test/src/test/java/org/apache/juneau/AnnotationsTest.java
+++ /dev/null
@@ -1,82 +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.juneau;
-
-import static org.apache.juneau.TestUtils.*;
-import static org.junit.Assert.*;
-
-import org.apache.juneau.annotation.*;
-import org.junit.*;
-
-
-@SuppressWarnings({"rawtypes","javadoc"})
-public class AnnotationsTest {
-
-	//====================================================================================================
-	// Bean with explicitly specified properties.
-	//====================================================================================================
-	@Test
-	public void testBeanWithExplicitProperties() throws Exception {
-		BeanSession session = BeanContext.DEFAULT.createSession();
-		BeanMap bm = null;
-
-		// Basic test
-		bm = session.newBeanMap(Person1.class).load("{age:21,name:'foobar'}");
-		assertNotNull(bm);
-		assertNotNull(bm.getBean());
-		assertEquals(bm.get("age"), 21);
-		assertEquals(bm.get("name"), "foobar");
-
-		bm.put("age", 65);
-		bm.put("name", "futbol");
-		assertEquals(bm.get("age"), 65);
-		assertEquals(bm.get("name"), "futbol");
-	}
-
-	/** Class with explicitly specified properties */
-	@Bean(properties="age,name")
-	public static class Person1 {
-		public int age;
-		private String name;
-		public String getName() {
-			return name;
-		}
-		public void setName(String name) {
-			this.name = name;
-		}
-	}
-
-	//====================================================================================================
-	// Private/protected/default fields should be ignored.
-	//====================================================================================================
-	@Test
-	public void testForOnlyPublicFields() throws Exception {
-		BeanSession session = BeanContext.DEFAULT.createSession();
-		BeanMap bm = null;
-
-		// Make sure only public fields are detected
-		bm = session.newBeanMap(A.class).load("{publicField:123}");
-		assertNotNull("F1", bm);
-		assertNotNull("F2", bm.getBean());
-		assertObjectEquals("{publicField:123}", bm.getBean());
-
-	}
-
-	public static class A {
-		public int publicField;
-		protected int protectedField;
-		@SuppressWarnings("unused")
-		private int privateField;
-		int defaultField;
-	}
-}
\ No newline at end of file