You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commonsrdf.apache.org by st...@apache.org on 2016/11/16 10:57:30 UTC

svn commit: r1001192 [12/30] - in /websites/production/commonsrdf/content: ./ apidocs/ apidocs/org/apache/commons/rdf/api/ apidocs/org/apache/commons/rdf/experimental/ apidocs/org/apache/commons/rdf/simple/ apidocs/org/apache/commons/rdf/simple/class-u...

Added: websites/production/commonsrdf/content/jacoco/org.apache.commons.rdf.simple.experimental/AbstractRDFParser.html
==============================================================================
--- websites/production/commonsrdf/content/jacoco/org.apache.commons.rdf.simple.experimental/AbstractRDFParser.html (added)
+++ websites/production/commonsrdf/content/jacoco/org.apache.commons.rdf.simple.experimental/AbstractRDFParser.html Wed Nov 16 10:57:28 2016
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../.resources/report.css" type="text/css"/><link rel="shortcut icon" href="../.resources/report.gif" type="image/gif"/><title>AbstractRDFParser</title><script type="text/javascript" src="../.resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../.sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">Commons RDF impl: Simple</a> &gt; <a href="index.html" class="el_package">org.apache.commons.rdf.simple.experimental</a> &gt; <span class="el_class">AbstractRDFParser</span></div><h1>AbstractRDFParser</h1><table class="coverage" cellspacing="0" id="coverageta
 ble"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">133 of 529</td><td class="ctr2">75%</td><td class="bar">14 of 50</td><td class="ctr2">72%</td><td class="ctr1">21</td><td class="ct
 r2">70</td><td class="ctr1">29</td><td class="ctr2">127</td><td class="ctr1">8</td><td class="ctr2">45</td></tr></tfoot><tbody><tr><td id="a40"><a href="AbstractRDFParser.java.html#L295" class="el_method">source(String)</a></td><td class="bar" id="b0"><img src="../.resources/redbar.gif" width="39" height="10" title="26" alt="26"/></td><td class="ctr2" id="c37">0%</td><td class="bar" id="d7"/><td class="ctr2" id="e7">n/a</td><td class="ctr1" id="f5">1</td><td class="ctr2" id="g7">1</td><td class="ctr1" id="h0">5</td><td class="ctr2" id="i4">5</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a11"><a href="AbstractRDFParser.java.html#L249" class="el_method">contentType(String)</a></td><td class="bar" id="b1"><img src="../.resources/redbar.gif" width="24" height="10" title="16" alt="16"/></td><td class="ctr2" id="c38">0%</td><td class="bar" id="d8"/><td class="ctr2" id="e8">n/a</td><td class="ctr1" id="f6">1</td><td class="ctr2" id="g8">1</td><td class=
 "ctr1" id="h1">4</td><td class="ctr2" id="i7">4</td><td class="ctr1" id="j1">1</td><td class="ctr2" id="k1">1</td></tr><tr><td id="a7"><a href="AbstractRDFParser.java.html#L330" class="el_method">checkSource()</a></td><td class="bar" id="b2"><img src="../.resources/redbar.gif" width="22" height="10" title="15" alt="15"/><img src="../.resources/greenbar.gif" width="97" height="10" title="65" alt="65"/></td><td class="ctr2" id="c32">81%</td><td class="bar" id="d0"><img src="../.resources/redbar.gif" width="16" height="10" title="3" alt="3"/><img src="../.resources/greenbar.gif" width="103" height="10" title="19" alt="19"/></td><td class="ctr2" id="e1">86%</td><td class="ctr1" id="f0">3</td><td class="ctr2" id="g0">12</td><td class="ctr1" id="h3">3</td><td class="ctr2" id="i0">11</td><td class="ctr1" id="j8">0</td><td class="ctr2" id="k2">1</td></tr><tr><td id="a43"><a href="AbstractRDFParser.java.html#L553" class="el_method">target(Dataset)</a></td><td class="bar" id="b3"><img src="..
 /.resources/redbar.gif" width="21" height="10" title="14" alt="14"/></td><td class="ctr2" id="c39">0%</td><td class="bar" id="d9"/><td class="ctr2" id="e9">n/a</td><td class="ctr1" id="f7">1</td><td class="ctr2" id="g9">1</td><td class="ctr1" id="h2">4</td><td class="ctr2" id="i8">4</td><td class="ctr1" id="j2">1</td><td class="ctr2" id="k3">1</td></tr><tr><td id="a6"><a href="AbstractRDFParser.java.html#L313" class="el_method">checkIsAbsolute(IRI)</a></td><td class="bar" id="b4"><img src="../.resources/redbar.gif" width="18" height="10" title="12" alt="12"/><img src="../.resources/greenbar.gif" width="9" height="10" title="6" alt="6"/></td><td class="ctr2" id="c36">33%</td><td class="bar" id="d5"><img src="../.resources/redbar.gif" width="5" height="10" title="1" alt="1"/><img src="../.resources/greenbar.gif" width="5" height="10" title="1" alt="1"/></td><td class="ctr2" id="e3">50%</td><td class="ctr1" id="f8">1</td><td class="ctr2" id="g6">2</td><td class="ctr1" id="h8">1</td><td
  class="ctr2" id="i17">3</td><td class="ctr1" id="j9">0</td><td class="ctr2" id="k4">1</td></tr><tr><td id="a8"><a href="AbstractRDFParser.java.html#L454" class="el_method">checkTarget()</a></td><td class="bar" id="b5"><img src="../.resources/redbar.gif" width="15" height="10" title="10" alt="10"/><img src="../.resources/greenbar.gif" width="18" height="10" title="12" alt="12"/></td><td class="ctr2" id="c34">55%</td><td class="bar" id="d1"><img src="../.resources/redbar.gif" width="16" height="10" title="3" alt="3"/><img src="../.resources/greenbar.gif" width="16" height="10" title="3" alt="3"/></td><td class="ctr2" id="e4">50%</td><td class="ctr1" id="f1">3</td><td class="ctr2" id="g1">4</td><td class="ctr1" id="h5">2</td><td class="ctr2" id="i5">5</td><td class="ctr1" id="j10">0</td><td class="ctr2" id="k5">1</td></tr><tr><td id="a34"><a href="AbstractRDFParser.java.html#L234" class="el_method">rdfTermFactory(RDF)</a></td><td class="bar" id="b6"><img src="../.resources/redbar.gif"
  width="15" height="10" title="10" alt="10"/></td><td class="ctr2" id="c40">0%</td><td class="bar" id="d10"/><td class="ctr2" id="e10">n/a</td><td class="ctr1" id="f9">1</td><td class="ctr2" id="g10">1</td><td class="ctr1" id="h4">3</td><td class="ctr2" id="i18">3</td><td class="ctr1" id="j3">1</td><td class="ctr2" id="k6">1</td></tr><tr><td id="a9"><a href="AbstractRDFParser.java.html#L221" class="el_method">clone()</a></td><td class="bar" id="b7"><img src="../.resources/redbar.gif" width="9" height="10" title="6" alt="6"/><img src="../.resources/greenbar.gif" width="6" height="10" title="4" alt="4"/></td><td class="ctr2" id="c35">40%</td><td class="bar" id="d11"/><td class="ctr2" id="e11">n/a</td><td class="ctr1" id="f14">0</td><td class="ctr2" id="g11">1</td><td class="ctr1" id="h6">2</td><td class="ctr2" id="i19">3</td><td class="ctr1" id="j11">0</td><td class="ctr2" id="k7">1</td></tr><tr><td id="a3"><a href="AbstractRDFParser.java.html#L265" class="el_method">base(String)</a><
 /td><td class="bar" id="b8"><img src="../.resources/redbar.gif" width="9" height="10" title="6" alt="6"/></td><td class="ctr2" id="c41">0%</td><td class="bar" id="d12"/><td class="ctr2" id="e12">n/a</td><td class="ctr1" id="f10">1</td><td class="ctr2" id="g12">1</td><td class="ctr1" id="h9">1</td><td class="ctr2" id="i24">1</td><td class="ctr1" id="j4">1</td><td class="ctr2" id="k8">1</td></tr><tr><td id="a13"><a href="AbstractRDFParser.java.html#L505" class="el_method">fileExtension(Path)</a></td><td class="bar" id="b9"><img src="../.resources/redbar.gif" width="6" height="10" title="4" alt="4"/><img src="../.resources/greenbar.gif" width="30" height="10" title="20" alt="20"/></td><td class="ctr2" id="c31">83%</td><td class="bar" id="d4"><img src="../.resources/redbar.gif" width="10" height="10" title="2" alt="2"/><img src="../.resources/greenbar.gif" width="10" height="10" title="2" alt="2"/></td><td class="ctr2" id="e5">50%</td><td class="ctr1" id="f2">2</td><td class="ctr2" id="
 g4">3</td><td class="ctr1" id="h7">2</td><td class="ctr2" id="i2">8</td><td class="ctr1" id="j12">0</td><td class="ctr2" id="k9">1</td></tr><tr><td id="a26"><a href="AbstractRDFParser.java.html#L355" class="el_method">lambda$checkBaseRequired$5(RDFSyntax)</a></td><td class="bar" id="b10"><img src="../.resources/redbar.gif" width="6" height="10" title="4" alt="4"/><img src="../.resources/greenbar.gif" width="9" height="10" title="6" alt="6"/></td><td class="ctr2" id="c33">60%</td><td class="bar" id="d2"><img src="../.resources/redbar.gif" width="16" height="10" title="3" alt="3"/><img src="../.resources/greenbar.gif" width="5" height="10" title="1" alt="1"/></td><td class="ctr2" id="e6">25%</td><td class="ctr1" id="f3">2</td><td class="ctr2" id="g5">3</td><td class="ctr1" id="h13">0</td><td class="ctr2" id="i25">1</td><td class="ctr1" id="j13">0</td><td class="ctr2" id="k10">1</td></tr><tr><td id="a30"><a href="AbstractRDFParser.java.html#L298" class="el_method">lambda$source$4(IRI)<
 /a></td><td class="bar" id="b11"><img src="../.resources/redbar.gif" width="6" height="10" title="4" alt="4"/></td><td class="ctr2" id="c42">0%</td><td class="bar" id="d13"/><td class="ctr2" id="e13">n/a</td><td class="ctr1" id="f11">1</td><td class="ctr2" id="g13">1</td><td class="ctr1" id="h10">1</td><td class="ctr2" id="i26">1</td><td class="ctr1" id="j5">1</td><td class="ctr2" id="k11">1</td></tr><tr><td id="a22"><a href="AbstractRDFParser.java.html#L134" class="el_method">getTargetDataset()</a></td><td class="bar" id="b12"><img src="../.resources/redbar.gif" width="4" height="10" title="3" alt="3"/></td><td class="ctr2" id="c43">0%</td><td class="bar" id="d14"/><td class="ctr2" id="e14">n/a</td><td class="ctr1" id="f12">1</td><td class="ctr2" id="g14">1</td><td class="ctr1" id="h11">1</td><td class="ctr2" id="i27">1</td><td class="ctr1" id="j6">1</td><td class="ctr2" id="k12">1</td></tr><tr><td id="a23"><a href="AbstractRDFParser.java.html#L152" class="el_method">getTargetGraph
 ()</a></td><td class="bar" id="b13"><img src="../.resources/redbar.gif" width="4" height="10" title="3" alt="3"/></td><td class="ctr2" id="c44">0%</td><td class="bar" id="d15"/><td class="ctr2" id="e15">n/a</td><td class="ctr1" id="f13">1</td><td class="ctr2" id="g15">1</td><td class="ctr1" id="h12">1</td><td class="ctr2" id="i28">1</td><td class="ctr1" id="j7">1</td><td class="ctr2" id="k13">1</td></tr><tr><td id="a33"><a href="AbstractRDFParser.java.html#L424" class="el_method">prepareForParsing()</a></td><td class="bar" id="b14"><img src="../.resources/greenbar.gif" width="70" height="10" title="47" alt="47"/></td><td class="ctr2" id="c0">100%</td><td class="bar" id="d3"><img src="../.resources/redbar.gif" width="10" height="10" title="2" alt="2"/><img src="../.resources/greenbar.gif" width="21" height="10" title="4" alt="4"/></td><td class="ctr2" id="e2">67%</td><td class="ctr1" id="f4">2</td><td class="ctr2" id="g2">4</td><td class="ctr1" id="h14">0</td><td class="ctr2" id="i1"
 >11</td><td class="ctr1" id="j14">0</td><td class="ctr2" id="k14">1</td></tr><tr><td id="a0"><a href="AbstractRDFParser.java.html#L59" class="el_method">AbstractRDFParser()</a></td><td class="bar" id="b15"><img src="../.resources/greenbar.gif" width="36" height="10" title="24" alt="24"/></td><td class="ctr2" id="c1">100%</td><td class="bar" id="d16"/><td class="ctr2" id="e16">n/a</td><td class="ctr1" id="f15">0</td><td class="ctr2" id="g16">1</td><td class="ctr1" id="h15">0</td><td class="ctr2" id="i3">8</td><td class="ctr1" id="j15">0</td><td class="ctr2" id="k15">1</td></tr><tr><td id="a4"><a href="AbstractRDFParser.java.html#L354" class="el_method">checkBaseRequired()</a></td><td class="bar" id="b16"><img src="../.resources/greenbar.gif" width="30" height="10" title="20" alt="20"/></td><td class="ctr2" id="c2">100%</td><td class="bar" id="d6"><img src="../.resources/greenbar.gif" width="32" height="10" title="6" alt="6"/></td><td class="ctr2" id="e0">100%</td><td class="ctr1" id=
 "f16">0</td><td class="ctr2" id="g3">4</td><td class="ctr1" id="h16">0</td><td class="ctr2" id="i9">4</td><td class="ctr1" id="j16">0</td><td class="ctr2" id="k16">1</td></tr><tr><td id="a38"><a href="AbstractRDFParser.java.html#L286" class="el_method">source(IRI)</a></td><td class="bar" id="b17"><img src="../.resources/greenbar.gif" width="25" height="10" title="17" alt="17"/></td><td class="ctr2" id="c3">100%</td><td class="bar" id="d17"/><td class="ctr2" id="e17">n/a</td><td class="ctr1" id="f17">0</td><td class="ctr2" id="g17">1</td><td class="ctr1" id="h17">0</td><td class="ctr2" id="i6">5</td><td class="ctr1" id="j17">0</td><td class="ctr2" id="k17">1</td></tr><tr><td id="a10"><a href="AbstractRDFParser.java.html#L241" class="el_method">contentType(RDFSyntax)</a></td><td class="bar" id="b18"><img src="../.resources/greenbar.gif" width="24" height="10" title="16" alt="16"/></td><td class="ctr2" id="c4">100%</td><td class="bar" id="d18"/><td class="ctr2" id="e18">n/a</td><td cla
 ss="ctr1" id="f18">0</td><td class="ctr2" id="g18">1</td><td class="ctr1" id="h18">0</td><td class="ctr2" id="i10">4</td><td class="ctr1" id="j18">0</td><td class="ctr2" id="k18">1</td></tr><tr><td id="a2"><a href="AbstractRDFParser.java.html#L257" class="el_method">base(IRI)</a></td><td class="bar" id="b19"><img src="../.resources/greenbar.gif" width="22" height="10" title="15" alt="15"/></td><td class="ctr2" id="c5">100%</td><td class="bar" id="d19"/><td class="ctr2" id="e19">n/a</td><td class="ctr1" id="f19">0</td><td class="ctr2" id="g19">1</td><td class="ctr1" id="h19">0</td><td class="ctr2" id="i11">4</td><td class="ctr1" id="j19">0</td><td class="ctr2" id="k19">1</td></tr><tr><td id="a44"><a href="AbstractRDFParser.java.html#L563" class="el_method">target(Graph)</a></td><td class="bar" id="b20"><img src="../.resources/greenbar.gif" width="21" height="10" title="14" alt="14"/></td><td class="ctr2" id="c6">100%</td><td class="bar" id="d20"/><td class="ctr2" id="e20">n/a</td><td
  class="ctr1" id="f20">0</td><td class="ctr2" id="g20">1</td><td class="ctr1" id="h20">0</td><td class="ctr2" id="i12">4</td><td class="ctr1" id="j20">0</td><td class="ctr2" id="k20">1</td></tr><tr><td id="a41"><a href="AbstractRDFParser.java.html#L61" class="el_method">static {...}</a></td><td class="bar" id="b21"><img src="../.resources/greenbar.gif" width="19" height="10" title="13" alt="13"/></td><td class="ctr2" id="c7">100%</td><td class="bar" id="d21"/><td class="ctr2" id="e21">n/a</td><td class="ctr1" id="f21">0</td><td class="ctr2" id="g21">1</td><td class="ctr1" id="h21">0</td><td class="ctr2" id="i20">3</td><td class="ctr1" id="j21">0</td><td class="ctr2" id="k21">1</td></tr><tr><td id="a37"><a href="AbstractRDFParser.java.html#L270" class="el_method">source(InputStream)</a></td><td class="bar" id="b22"><img src="../.resources/greenbar.gif" width="18" height="10" title="12" alt="12"/></td><td class="ctr2" id="c8">100%</td><td class="bar" id="d22"/><td class="ctr2" id="e22
 ">n/a</td><td class="ctr1" id="f22">0</td><td class="ctr2" id="g22">1</td><td class="ctr1" id="h22">0</td><td class="ctr2" id="i13">4</td><td class="ctr1" id="j22">0</td><td class="ctr2" id="k22">1</td></tr><tr><td id="a39"><a href="AbstractRDFParser.java.html#L278" class="el_method">source(Path)</a></td><td class="bar" id="b23"><img src="../.resources/greenbar.gif" width="18" height="10" title="12" alt="12"/></td><td class="ctr2" id="c9">100%</td><td class="bar" id="d23"/><td class="ctr2" id="e23">n/a</td><td class="ctr1" id="f23">0</td><td class="ctr2" id="g23">1</td><td class="ctr1" id="h23">0</td><td class="ctr2" id="i14">4</td><td class="ctr1" id="j23">0</td><td class="ctr2" id="k23">1</td></tr><tr><td id="a42"><a href="AbstractRDFParser.java.html#L544" class="el_method">target(Consumer)</a></td><td class="bar" id="b24"><img src="../.resources/greenbar.gif" width="16" height="10" title="11" alt="11"/></td><td class="ctr2" id="c10">100%</td><td class="bar" id="d24"/><td class="c
 tr2" id="e24">n/a</td><td class="ctr1" id="f24">0</td><td class="ctr2" id="g24">1</td><td class="ctr1" id="h24">0</td><td class="ctr2" id="i15">4</td><td class="ctr1" id="j24">0</td><td class="ctr2" id="k24">1</td></tr><tr><td id="a35"><a href="AbstractRDFParser.java.html#L368" class="el_method">resetSource()</a></td><td class="bar" id="b25"><img src="../.resources/greenbar.gif" width="15" height="10" title="10" alt="10"/></td><td class="ctr2" id="c11">100%</td><td class="bar" id="d25"/><td class="ctr2" id="e25">n/a</td><td class="ctr1" id="f25">0</td><td class="ctr2" id="g25">1</td><td class="ctr1" id="h25">0</td><td class="ctr2" id="i16">4</td><td class="ctr1" id="j25">0</td><td class="ctr2" id="k25">1</td></tr><tr><td id="a32"><a href="AbstractRDFParser.java.html#L535" class="el_method">parse()</a></td><td class="bar" id="b26"><img src="../.resources/greenbar.gif" width="12" height="10" title="8" alt="8"/></td><td class="ctr2" id="c12">100%</td><td class="bar" id="d26"/><td class
 ="ctr2" id="e26">n/a</td><td class="ctr1" id="f26">0</td><td class="ctr2" id="g26">1</td><td class="ctr1" id="h26">0</td><td class="ctr2" id="i22">2</td><td class="ctr1" id="j26">0</td><td class="ctr2" id="k26">1</td></tr><tr><td id="a36"><a href="AbstractRDFParser.java.html#L384" class="el_method">resetTarget()</a></td><td class="bar" id="b27"><img src="../.resources/greenbar.gif" width="10" height="10" title="7" alt="7"/></td><td class="ctr2" id="c13">100%</td><td class="bar" id="d27"/><td class="ctr2" id="e27">n/a</td><td class="ctr1" id="f27">0</td><td class="ctr2" id="g27">1</td><td class="ctr1" id="h27">0</td><td class="ctr2" id="i21">3</td><td class="ctr1" id="j27">0</td><td class="ctr2" id="k27">1</td></tr><tr><td id="a31"><a href="AbstractRDFParser.java.html#L62" class="el_method">lambda$static$0(Runnable)</a></td><td class="bar" id="b28"><img src="../.resources/greenbar.gif" width="9" height="10" title="6" alt="6"/></td><td class="ctr2" id="c14">100%</td><td class="bar" id
 ="d28"/><td class="ctr2" id="e28">n/a</td><td class="ctr1" id="f28">0</td><td class="ctr2" id="g28">1</td><td class="ctr1" id="h28">0</td><td class="ctr2" id="i29">1</td><td class="ctr1" id="j28">0</td><td class="ctr2" id="k28">1</td></tr><tr><td id="a24"><a href="AbstractRDFParser.java.html#L488" class="el_method">guessRDFSyntax(Path)</a></td><td class="bar" id="b29"><img src="../.resources/greenbar.gif" width="7" height="10" title="5" alt="5"/></td><td class="ctr2" id="c15">100%</td><td class="bar" id="d29"/><td class="ctr2" id="e29">n/a</td><td class="ctr1" id="f29">0</td><td class="ctr2" id="g29">1</td><td class="ctr1" id="h29">0</td><td class="ctr2" id="i30">1</td><td class="ctr1" id="j29">0</td><td class="ctr2" id="k29">1</td></tr><tr><td id="a12"><a href="AbstractRDFParser.java.html#L530" class="el_method">createRDFTermFactory()</a></td><td class="bar" id="b30"><img src="../.resources/greenbar.gif" width="6" height="10" title="4" alt="4"/></td><td class="ctr2" id="c16">100%</
 td><td class="bar" id="d30"/><td class="ctr2" id="e30">n/a</td><td class="ctr1" id="f30">0</td><td class="ctr2" id="g30">1</td><td class="ctr1" id="h30">0</td><td class="ctr2" id="i31">1</td><td class="ctr1" id="j30">0</td><td class="ctr2" id="k30">1</td></tr><tr><td id="a28"><a href="AbstractRDFParser.java.html#L537" class="el_method">lambda$parse$6(AbstractRDFParser)</a></td><td class="bar" id="b31"><img src="../.resources/greenbar.gif" width="6" height="10" title="4" alt="4"/></td><td class="ctr2" id="c17">100%</td><td class="bar" id="d31"/><td class="ctr2" id="e31">n/a</td><td class="ctr1" id="f31">0</td><td class="ctr2" id="g31">1</td><td class="ctr1" id="h31">0</td><td class="ctr2" id="i23">2</td><td class="ctr1" id="j31">0</td><td class="ctr2" id="k31">1</td></tr><tr><td id="a29"><a href="AbstractRDFParser.java.html#L289" class="el_method">lambda$source$3(IRI)</a></td><td class="bar" id="b32"><img src="../.resources/greenbar.gif" width="6" height="10" title="4" alt="4"/></td>
 <td class="ctr2" id="c18">100%</td><td class="bar" id="d32"/><td class="ctr2" id="e32">n/a</td><td class="ctr1" id="f32">0</td><td class="ctr2" id="g32">1</td><td class="ctr1" id="h32">0</td><td class="ctr2" id="i32">1</td><td class="ctr1" id="j32">0</td><td class="ctr2" id="k32">1</td></tr><tr><td id="a25"><a href="AbstractRDFParser.java.html#L259" class="el_method">lambda$base$2(IRI)</a></td><td class="bar" id="b33"><img src="../.resources/greenbar.gif" width="6" height="10" title="4" alt="4"/></td><td class="ctr2" id="c19">100%</td><td class="bar" id="d33"/><td class="ctr2" id="e33">n/a</td><td class="ctr1" id="f33">0</td><td class="ctr2" id="g33">1</td><td class="ctr1" id="h33">0</td><td class="ctr2" id="i33">1</td><td class="ctr1" id="j33">0</td><td class="ctr2" id="k33">1</td></tr><tr><td id="a17"><a href="AbstractRDFParser.java.html#L74" class="el_method">getRdfTermFactory()</a></td><td class="bar" id="b34"><img src="../.resources/greenbar.gif" width="4" height="10" title="3"
  alt="3"/></td><td class="ctr2" id="c20">100%</td><td class="bar" id="d34"/><td class="ctr2" id="e34">n/a</td><td class="ctr1" id="f34">0</td><td class="ctr2" id="g34">1</td><td class="ctr1" id="h34">0</td><td class="ctr2" id="i34">1</td><td class="ctr1" id="j34">0</td><td class="ctr2" id="k34">1</td></tr><tr><td id="a16"><a href="AbstractRDFParser.java.html#L87" class="el_method">getContentTypeSyntax()</a></td><td class="bar" id="b35"><img src="../.resources/greenbar.gif" width="4" height="10" title="3" alt="3"/></td><td class="ctr2" id="c21">100%</td><td class="bar" id="d35"/><td class="ctr2" id="e35">n/a</td><td class="ctr1" id="f35">0</td><td class="ctr2" id="g35">1</td><td class="ctr1" id="h35">0</td><td class="ctr2" id="i35">1</td><td class="ctr1" id="j35">0</td><td class="ctr2" id="k35">1</td></tr><tr><td id="a15"><a href="AbstractRDFParser.java.html#L102" class="el_method">getContentType()</a></td><td class="bar" id="b36"><img src="../.resources/greenbar.gif" width="4" heigh
 t="10" title="3" alt="3"/></td><td class="ctr2" id="c22">100%</td><td class="bar" id="d36"/><td class="ctr2" id="e36">n/a</td><td class="ctr1" id="f36">0</td><td class="ctr2" id="g36">1</td><td class="ctr1" id="h36">0</td><td class="ctr2" id="i36">1</td><td class="ctr1" id="j36">0</td><td class="ctr2" id="k36">1</td></tr><tr><td id="a21"><a href="AbstractRDFParser.java.html#L116" class="el_method">getTarget()</a></td><td class="bar" id="b37"><img src="../.resources/greenbar.gif" width="4" height="10" title="3" alt="3"/></td><td class="ctr2" id="c23">100%</td><td class="bar" id="d37"/><td class="ctr2" id="e37">n/a</td><td class="ctr1" id="f37">0</td><td class="ctr2" id="g37">1</td><td class="ctr1" id="h37">0</td><td class="ctr2" id="i37">1</td><td class="ctr1" id="j37">0</td><td class="ctr2" id="k37">1</td></tr><tr><td id="a14"><a href="AbstractRDFParser.java.html#L162" class="el_method">getBase()</a></td><td class="bar" id="b38"><img src="../.resources/greenbar.gif" width="4" height
 ="10" title="3" alt="3"/></td><td class="ctr2" id="c24">100%</td><td class="bar" id="d38"/><td class="ctr2" id="e38">n/a</td><td class="ctr1" id="f38">0</td><td class="ctr2" id="g38">1</td><td class="ctr1" id="h38">0</td><td class="ctr2" id="i38">1</td><td class="ctr1" id="j38">0</td><td class="ctr2" id="k38">1</td></tr><tr><td id="a19"><a href="AbstractRDFParser.java.html#L175" class="el_method">getSourceInputStream()</a></td><td class="bar" id="b39"><img src="../.resources/greenbar.gif" width="4" height="10" title="3" alt="3"/></td><td class="ctr2" id="c25">100%</td><td class="bar" id="d39"/><td class="ctr2" id="e39">n/a</td><td class="ctr1" id="f39">0</td><td class="ctr2" id="g39">1</td><td class="ctr1" id="h39">0</td><td class="ctr2" id="i39">1</td><td class="ctr1" id="j39">0</td><td class="ctr2" id="k39">1</td></tr><tr><td id="a18"><a href="AbstractRDFParser.java.html#L189" class="el_method">getSourceFile()</a></td><td class="bar" id="b40"><img src="../.resources/greenbar.gif" 
 width="4" height="10" title="3" alt="3"/></td><td class="ctr2" id="c26">100%</td><td class="bar" id="d40"/><td class="ctr2" id="e40">n/a</td><td class="ctr1" id="f40">0</td><td class="ctr2" id="g40">1</td><td class="ctr1" id="h40">0</td><td class="ctr2" id="i40">1</td><td class="ctr1" id="j40">0</td><td class="ctr2" id="k40">1</td></tr><tr><td id="a20"><a href="AbstractRDFParser.java.html#L203" class="el_method">getSourceIri()</a></td><td class="bar" id="b41"><img src="../.resources/greenbar.gif" width="4" height="10" title="3" alt="3"/></td><td class="ctr2" id="c27">100%</td><td class="bar" id="d41"/><td class="ctr2" id="e41">n/a</td><td class="ctr1" id="f41">0</td><td class="ctr2" id="g41">1</td><td class="ctr1" id="h41">0</td><td class="ctr2" id="i41">1</td><td class="ctr1" id="j41">0</td><td class="ctr2" id="k41">1</td></tr><tr><td id="a27"><a href="AbstractRDFParser.java.html#L243" class="el_method">lambda$contentType$1(RDFSyntax)</a></td><td class="bar" id="b42"><img src="../.
 resources/greenbar.gif" width="4" height="10" title="3" alt="3"/></td><td class="ctr2" id="c28">100%</td><td class="bar" id="d42"/><td class="ctr2" id="e42">n/a</td><td class="ctr1" id="f42">0</td><td class="ctr2" id="g42">1</td><td class="ctr1" id="h42">0</td><td class="ctr2" id="i42">1</td><td class="ctr1" id="j42">0</td><td class="ctr2" id="k42">1</td></tr><tr><td id="a1"><a href="AbstractRDFParser.java.html#L229" class="el_method">asT()</a></td><td class="bar" id="b43"><img src="../.resources/greenbar.gif" width="3" height="10" title="2" alt="2"/></td><td class="ctr2" id="c29">100%</td><td class="bar" id="d43"/><td class="ctr2" id="e43">n/a</td><td class="ctr1" id="f43">0</td><td class="ctr2" id="g43">1</td><td class="ctr1" id="h43">0</td><td class="ctr2" id="i43">1</td><td class="ctr1" id="j43">0</td><td class="ctr2" id="k43">1</td></tr><tr><td id="a5"><a href="AbstractRDFParser.java.html#L473" class="el_method">checkContentType()</a></td><td class="bar" id="b44"><img src="../.
 resources/greenbar.gif" width="1" height="10" title="1" alt="1"/></td><td class="ctr2" id="c30">100%</td><td class="bar" id="d44"/><td class="ctr2" id="e44">n/a</td><td class="ctr1" id="f44">0</td><td class="ctr2" id="g44">1</td><td class="ctr1" id="h44">0</td><td class="ctr2" id="i44">1</td><td class="ctr1" id="j44">0</td><td class="ctr2" id="k44">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.eclemma.org/jacoco">JaCoCo</a> 0.7.6.201602180812</span></div></body></html>
\ No newline at end of file

Added: websites/production/commonsrdf/content/jacoco/org.apache.commons.rdf.simple.experimental/AbstractRDFParser.java.html
==============================================================================
--- websites/production/commonsrdf/content/jacoco/org.apache.commons.rdf.simple.experimental/AbstractRDFParser.java.html (added)
+++ websites/production/commonsrdf/content/jacoco/org.apache.commons.rdf.simple.experimental/AbstractRDFParser.java.html Wed Nov 16 10:57:28 2016
@@ -0,0 +1,570 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../.resources/report.css" type="text/css"/><link rel="shortcut icon" href="../.resources/report.gif" type="image/gif"/><title>AbstractRDFParser.java</title><link rel="stylesheet" href="../.resources/prettify.css" type="text/css"/><script type="text/javascript" src="../.resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../.sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">Commons RDF impl: Simple</a> &gt; <a href="index.source.html" class="el_package">org.apache.commons.rdf.simple.experimental</a> &gt; <span class="el_source">Abstract
 RDFParser.java</span></div><h1>AbstractRDFParser.java</h1><pre class="source lang-java linenums">/**
+ * 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
+ * &quot;License&quot;); 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 &quot;AS IS&quot; 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.commons.rdf.simple.experimental;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URI;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.Optional;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
+import java.util.function.Consumer;
+
+import org.apache.commons.rdf.api.Dataset;
+import org.apache.commons.rdf.api.Graph;
+import org.apache.commons.rdf.api.IRI;
+import org.apache.commons.rdf.api.Quad;
+import org.apache.commons.rdf.api.RDFSyntax;
+import org.apache.commons.rdf.api.RDF;
+import org.apache.commons.rdf.experimental.RDFParser;
+import org.apache.commons.rdf.simple.SimpleRDF;
+
+/**
+ * Abstract RDFParser
+ * &lt;p&gt;
+ * This abstract class keeps the properties in protected fields like
+ * {@link #sourceFile} using {@link Optional}. Some basic checking like
+ * {@link #checkIsAbsolute(IRI)} is performed.
+ * &lt;p&gt;
+ * This class and its subclasses are {@link Cloneable}, immutable and
+ * (therefore) thread-safe - each call to option methods like
+ * {@link #contentType(String)} or {@link #source(IRI)} will return a cloned,
+ * mutated copy.
+ * &lt;p&gt;
+ * By default, parsing is done by the abstract method
+ * {@link #parseSynchronusly()} - which is executed in a cloned snapshot - hence
+ * multiple {@link #parse()} calls are thread-safe. The default {@link #parse()}
+ * uses a thread pool in {@link #threadGroup} - but implementations can override
+ * {@link #parse()} (e.g. because it has its own threading model or use
+ * asynchronous remote execution).
+ */
+<span class="fc" id="L59">public abstract class AbstractRDFParser&lt;T extends AbstractRDFParser&lt;T&gt;&gt; implements RDFParser, Cloneable {</span>
+
+<span class="fc" id="L61">    public static final ThreadGroup threadGroup = new ThreadGroup(&quot;Commons RDF parsers&quot;);</span>
+<span class="fc" id="L62">    private static final ExecutorService threadpool = Executors.newCachedThreadPool(r -&gt; new Thread(threadGroup, r));</span>
+
+    // Basically only used for creating IRIs
+<span class="fc" id="L65">    private static RDF internalRdfTermFactory = new SimpleRDF();</span>
+
+    /**
+     * Get the set {@link RDF}, if any.
+     * 
+     * @return The {@link RDF} to use, or {@link Optional#empty()} if it has not
+     *         been set
+     */
+    public Optional&lt;RDF&gt; getRdfTermFactory() {
+<span class="fc" id="L74">        return rdfTermFactory;</span>
+    }
+
+    /**
+     * Get the set content-type {@link RDFSyntax}, if any.
+     * &lt;p&gt;
+     * If this is {@link Optional#isPresent()}, then {@link #getContentType()}
+     * contains the value of {@link RDFSyntax#mediaType}.
+     * 
+     * @return The {@link RDFSyntax} of the content type, or
+     *         {@link Optional#empty()} if it has not been set
+     */
+    public Optional&lt;RDFSyntax&gt; getContentTypeSyntax() {
+<span class="fc" id="L87">        return contentTypeSyntax;</span>
+    }
+
+    /**
+     * Get the set content-type String, if any.
+     * &lt;p&gt;
+     * If this is {@link Optional#isPresent()} and is recognized by
+     * {@link RDFSyntax#byMediaType(String)}, then the corresponding
+     * {@link RDFSyntax} is set on {@link #getContentType()}, otherwise that is
+     * {@link Optional#empty()}.
+     * 
+     * @return The Content-Type IANA media type, e.g. &lt;code&gt;text/turtle&lt;/code&gt;,
+     *         or {@link Optional#empty()} if it has not been set
+     */
+    public final Optional&lt;String&gt; getContentType() {
+<span class="fc" id="L102">        return contentType;</span>
+    }
+
+    /**
+     * Get the target to consume parsed Quads.
+     * &lt;p&gt;
+     * From the call to {@link #parseSynchronusly()}, this will be a
+     * non-&lt;code&gt;null&lt;/code&gt; value (as a target is a required setting).
+     * 
+     * @return The target consumer of {@link Quad}s, or &lt;code&gt;null&lt;/code&gt; if it
+     *         has not yet been set.
+     * 
+     */
+    public Consumer&lt;Quad&gt; getTarget() {
+<span class="fc" id="L116">        return target;</span>
+    }
+
+    /**
+     * Get the target dataset as set by {@link #target(Dataset)}.
+     * &lt;p&gt;
+     * The return value is {@link Optional#isPresent()} if and only if
+     * {@link #target(Dataset)} has been set, meaning that the implementation
+     * may choose to append parsed quads to the {@link Dataset} directly instead
+     * of relying on the generated {@link #getTarget()} consumer.
+     * &lt;p&gt;
+     * If this value is present, then {@link #getTargetGraph()} MUST be
+     * {@link Optional#empty()}.
+     * 
+     * @return The target Dataset, or {@link Optional#empty()} if another kind
+     *         of target has been set.
+     */
+    public Optional&lt;Dataset&gt; getTargetDataset() {
+<span class="nc" id="L134">        return targetDataset;</span>
+    }
+
+    /**
+     * Get the target graph as set by {@link #target(Graph)}.
+     * &lt;p&gt;
+     * The return value is {@link Optional#isPresent()} if and only if
+     * {@link #target(Graph)} has been set, meaning that the implementation may
+     * choose to append parsed triples to the {@link Graph} directly instead of
+     * relying on the generated {@link #getTarget()} consumer.
+     * &lt;p&gt;
+     * If this value is present, then {@link #getTargetDataset()} MUST be
+     * {@link Optional#empty()}.
+     * 
+     * @return The target Graph, or {@link Optional#empty()} if another kind of
+     *         target has been set.
+     */
+    public Optional&lt;Graph&gt; getTargetGraph() {
+<span class="nc" id="L152">        return targetGraph;</span>
+    }
+
+    /**
+     * Get the set base {@link IRI}, if present.
+     * 
+     * @return The base {@link IRI}, or {@link Optional#empty()} if it has not
+     *         been set
+     */
+    public Optional&lt;IRI&gt; getBase() {
+<span class="fc" id="L162">        return base;</span>
+    }
+
+    /**
+     * Get the set source {@link InputStream}.
+     * &lt;p&gt;
+     * If this is {@link Optional#isPresent()}, then {@link #getSourceFile()}
+     * and {@link #getSourceIri()} are {@link Optional#empty()}.
+     * 
+     * @return The source {@link InputStream}, or {@link Optional#empty()} if it
+     *         has not been set
+     */
+    public Optional&lt;InputStream&gt; getSourceInputStream() {
+<span class="fc" id="L175">        return sourceInputStream;</span>
+    }
+
+    /**
+     * Get the set source {@link Path}.
+     * &lt;p&gt;
+     * If this is {@link Optional#isPresent()}, then
+     * {@link #getSourceInputStream()} and {@link #getSourceIri()} are
+     * {@link Optional#empty()}.
+     *
+     * @return The source {@link Path}, or {@link Optional#empty()} if it has
+     *         not been set
+     */
+    public Optional&lt;Path&gt; getSourceFile() {
+<span class="fc" id="L189">        return sourceFile;</span>
+    }
+
+    /**
+     * Get the set source {@link Path}.
+     * &lt;p&gt;
+     * If this is {@link Optional#isPresent()}, then
+     * {@link #getSourceInputStream()} and {@link #getSourceInputStream()} are
+     * {@link Optional#empty()}.
+     * 
+     * @return The source {@link IRI}, or {@link Optional#empty()} if it has not
+     *         been set
+     */
+    public Optional&lt;IRI&gt; getSourceIri() {
+<span class="fc" id="L203">        return sourceIri;</span>
+    }
+
+<span class="fc" id="L206">    private Optional&lt;RDF&gt; rdfTermFactory = Optional.empty();</span>
+<span class="fc" id="L207">    private Optional&lt;RDFSyntax&gt; contentTypeSyntax = Optional.empty();</span>
+<span class="fc" id="L208">    private Optional&lt;String&gt; contentType = Optional.empty();</span>
+<span class="fc" id="L209">    private Optional&lt;IRI&gt; base = Optional.empty();</span>
+<span class="fc" id="L210">    private Optional&lt;InputStream&gt; sourceInputStream = Optional.empty();</span>
+<span class="fc" id="L211">    private Optional&lt;Path&gt; sourceFile = Optional.empty();</span>
+<span class="fc" id="L212">    private Optional&lt;IRI&gt; sourceIri = Optional.empty();</span>
+    private Consumer&lt;Quad&gt; target;
+    private Optional&lt;Dataset&gt; targetDataset;
+    private Optional&lt;Graph&gt; targetGraph;
+
+    @SuppressWarnings(&quot;unchecked&quot;)
+    @Override
+    public T clone() {
+        try {
+<span class="fc" id="L221">            return (T) super.clone();</span>
+<span class="nc" id="L222">        } catch (CloneNotSupportedException e) {</span>
+<span class="nc" id="L223">            throw new RuntimeException(e);</span>
+        }
+    }
+
+    @SuppressWarnings(&quot;unchecked&quot;)
+    protected T asT() {
+<span class="fc" id="L229">        return (T) this;</span>
+    }
+
+    @Override
+    public T rdfTermFactory(RDF rdfTermFactory) {
+<span class="nc" id="L234">        AbstractRDFParser&lt;T&gt; c = clone();</span>
+<span class="nc" id="L235">        c.rdfTermFactory = Optional.ofNullable(rdfTermFactory);</span>
+<span class="nc" id="L236">        return c.asT();</span>
+    }
+
+    @Override
+    public T contentType(RDFSyntax rdfSyntax) throws IllegalArgumentException {
+<span class="fc" id="L241">        AbstractRDFParser&lt;T&gt; c = clone();</span>
+<span class="fc" id="L242">        c.contentTypeSyntax = Optional.ofNullable(rdfSyntax);</span>
+<span class="fc" id="L243">        c.contentType = c.contentTypeSyntax.map(syntax -&gt; syntax.mediaType);</span>
+<span class="fc" id="L244">        return c.asT();</span>
+    }
+
+    @Override
+    public T contentType(String contentType) throws IllegalArgumentException {
+<span class="nc" id="L249">        AbstractRDFParser&lt;T&gt; c = clone();</span>
+<span class="nc" id="L250">        c.contentType = Optional.ofNullable(contentType);</span>
+<span class="nc" id="L251">        c.contentTypeSyntax = c.contentType.flatMap(RDFSyntax::byMediaType);</span>
+<span class="nc" id="L252">        return c.asT();</span>
+    }
+
+    @Override
+    public T base(IRI base) {
+<span class="fc" id="L257">        AbstractRDFParser&lt;T&gt; c = clone();</span>
+<span class="fc" id="L258">        c.base = Optional.ofNullable(base);</span>
+<span class="fc" id="L259">        c.base.ifPresent(i -&gt; checkIsAbsolute(i));</span>
+<span class="fc" id="L260">        return c.asT();</span>
+    }
+
+    @Override
+    public T base(String base) throws IllegalArgumentException {
+<span class="nc" id="L265">        return base(internalRdfTermFactory.createIRI(base));</span>
+    }
+
+    @Override
+    public T source(InputStream inputStream) {
+<span class="fc" id="L270">        AbstractRDFParser&lt;T&gt; c = clone();</span>
+<span class="fc" id="L271">        c.resetSource();</span>
+<span class="fc" id="L272">        c.sourceInputStream = Optional.ofNullable(inputStream);</span>
+<span class="fc" id="L273">        return c.asT();</span>
+    }
+
+    @Override
+    public T source(Path file) {
+<span class="fc" id="L278">        AbstractRDFParser&lt;T&gt; c = clone();</span>
+<span class="fc" id="L279">        c.resetSource();</span>
+<span class="fc" id="L280">        c.sourceFile = Optional.ofNullable(file);</span>
+<span class="fc" id="L281">        return c.asT();</span>
+    }
+
+    @Override
+    public T source(IRI iri) {
+<span class="fc" id="L286">        AbstractRDFParser&lt;T&gt; c = clone();</span>
+<span class="fc" id="L287">        c.resetSource();</span>
+<span class="fc" id="L288">        c.sourceIri = Optional.ofNullable(iri);</span>
+<span class="fc" id="L289">        c.sourceIri.ifPresent(i -&gt; checkIsAbsolute(i));</span>
+<span class="fc" id="L290">        return c.asT();</span>
+    }
+
+    @Override
+    public T source(String iri) throws IllegalArgumentException {
+<span class="nc" id="L295">        AbstractRDFParser&lt;T&gt; c = clone();</span>
+<span class="nc" id="L296">        c.resetSource();</span>
+<span class="nc" id="L297">        c.sourceIri = Optional.ofNullable(iri).map(internalRdfTermFactory::createIRI);</span>
+<span class="nc" id="L298">        c.sourceIri.ifPresent(i -&gt; checkIsAbsolute(i));</span>
+<span class="nc" id="L299">        return source(internalRdfTermFactory.createIRI(iri));</span>
+    }
+
+    /**
+     * Check if an iri is absolute.
+     * &lt;p&gt;
+     * Used by {@link #source(String)} and {@link #base(String)}.
+     * 
+     * @param iri
+     *            IRI to check
+     * @throws IllegalArgumentException
+     *             If the IRI is not absolute
+     */
+    protected void checkIsAbsolute(IRI iri) throws IllegalArgumentException {
+<span class="pc bpc" id="L313" title="1 of 2 branches missed.">        if (!URI.create(iri.getIRIString()).isAbsolute()) {</span>
+<span class="nc" id="L314">            throw new IllegalArgumentException(&quot;IRI is not absolute: &quot; + iri);</span>
+        }
+<span class="fc" id="L316">    }</span>
+
+    /**
+     * Check that one and only one source is present and valid.
+     * &lt;p&gt;
+     * Used by {@link #parse()}.
+     * &lt;p&gt;
+     * Subclasses might override this method, e.g. to support other source
+     * combinations, or to check if the sourceIri is resolvable.
+     * 
+     * @throws IOException
+     *             If a source file can't be read
+     */
+    protected void checkSource() throws IOException {
+<span class="fc bfc" id="L330" title="All 6 branches covered.">        if (!sourceFile.isPresent() &amp;&amp; !sourceInputStream.isPresent() &amp;&amp; !sourceIri.isPresent()) {</span>
+<span class="fc" id="L331">            throw new IllegalStateException(&quot;No source has been set&quot;);</span>
+        }
+<span class="pc bpc" id="L333" title="1 of 4 branches missed.">        if (sourceIri.isPresent() &amp;&amp; sourceInputStream.isPresent()) {</span>
+<span class="nc" id="L334">            throw new IllegalStateException(&quot;Both sourceIri and sourceInputStream have been set&quot;);</span>
+        }
+<span class="pc bpc" id="L336" title="1 of 4 branches missed.">        if (sourceIri.isPresent() &amp;&amp; sourceFile.isPresent()) {</span>
+<span class="nc" id="L337">            throw new IllegalStateException(&quot;Both sourceIri and sourceFile have been set&quot;);</span>
+        }
+<span class="pc bpc" id="L339" title="1 of 4 branches missed.">        if (sourceInputStream.isPresent() &amp;&amp; sourceFile.isPresent()) {</span>
+<span class="nc" id="L340">            throw new IllegalStateException(&quot;Both sourceInputStream and sourceFile have been set&quot;);</span>
+        }
+<span class="fc bfc" id="L342" title="All 4 branches covered.">        if (sourceFile.isPresent() &amp;&amp; !sourceFile.filter(Files::isReadable).isPresent()) {</span>
+<span class="fc" id="L343">            throw new IOException(&quot;Can't read file: &quot; + sourceFile);</span>
+        }
+<span class="fc" id="L345">    }</span>
+
+    /**
+     * Check if base is required.
+     * 
+     * @throws IllegalStateException
+     *             if base is required, but not set.
+     */
+    protected void checkBaseRequired() throws IllegalStateException {
+<span class="fc bfc" id="L354" title="All 4 branches covered.">        if (!base.isPresent() &amp;&amp; sourceInputStream.isPresent()</span>
+<span class="pc bpc" id="L355" title="3 of 6 branches missed.">                &amp;&amp; !contentTypeSyntax.filter(t -&gt; t == RDFSyntax.NQUADS || t == RDFSyntax.NTRIPLES).isPresent()) {</span>
+<span class="fc" id="L356">            throw new IllegalStateException(&quot;base iri required for inputstream source&quot;);</span>
+        }
+<span class="fc" id="L358">    }</span>
+
+    /**
+     * Reset all source* fields to Optional.empty()
+     * &lt;p&gt;
+     * Subclasses should override this and call &lt;code&gt;super.resetSource()&lt;/code&gt;
+     * if they need to reset any additional source* fields.
+     * 
+     */
+    protected void resetSource() {
+<span class="fc" id="L368">        sourceInputStream = Optional.empty();</span>
+<span class="fc" id="L369">        sourceIri = Optional.empty();</span>
+<span class="fc" id="L370">        sourceFile = Optional.empty();</span>
+<span class="fc" id="L371">    }</span>
+
+    /**
+     * Reset all optional target* fields to {@link Optional#empty()}.
+     * &lt;p&gt;
+     * Note that the consumer set for {@link #getTarget()} is
+     * &lt;strong&gt;note&lt;/strong&gt; reset.
+     * &lt;p&gt;
+     * Subclasses should override this and call &lt;code&gt;super.resetTarget()&lt;/code&gt;
+     * if they need to reset any additional target* fields.
+     * 
+     */
+    protected void resetTarget() {
+<span class="fc" id="L384">        targetDataset = Optional.empty();</span>
+<span class="fc" id="L385">        targetGraph = Optional.empty();</span>
+<span class="fc" id="L386">    }</span>
+
+    /**
+     * Parse {@link #sourceInputStream}, {@link #sourceFile} or
+     * {@link #sourceIri}.
+     * &lt;p&gt;
+     * One of the source fields MUST be present, as checked by
+     * {@link #checkSource()}.
+     * &lt;p&gt;
+     * {@link #checkBaseRequired()} is called to verify if {@link #getBase()} is
+     * required.
+     * 
+     * @throws IOException
+     *             If the source could not be read
+     * @throws RDFParseException
+     *             If the source could not be parsed (e.g. a .ttl file was not
+     *             valid Turtle)
+     */
+    protected abstract void parseSynchronusly() throws IOException, RDFParseException;
+
+    /**
+     * Prepare a clone of this RDFParser which have been checked and completed.
+     * &lt;p&gt;
+     * The returned clone will always have {@link #getTarget()} and
+     * {@link #getRdfTermFactory()} present.
+     * &lt;p&gt;
+     * If the {@link #getSourceFile()} is present, but the {@link #getBase()} is
+     * not present, the base will be set to the &lt;code&gt;file:///&lt;/code&gt; IRI for
+     * the Path's real path (e.g. resolving any symbolic links).
+     * 
+     * @return A completed and checked clone of this RDFParser
+     * @throws IOException
+     *             If the source was not accessible (e.g. a file was not found)
+     * @throws IllegalStateException
+     *             If the parser was not in a compatible setting (e.g.
+     *             contentType was an invalid string)
+     */
+    protected T prepareForParsing() throws IOException, IllegalStateException {
+<span class="fc" id="L424">        checkSource();</span>
+<span class="fc" id="L425">        checkBaseRequired();</span>
+<span class="fc" id="L426">        checkContentType();</span>
+<span class="fc" id="L427">        checkTarget();</span>
+
+        // We'll make a clone of our current state which will be passed to
+        // parseSynchronously()
+<span class="fc" id="L431">        AbstractRDFParser&lt;T&gt; c = clone();</span>
+
+        // Use a fresh SimpleRDF for each parse
+<span class="pc bpc" id="L434" title="1 of 2 branches missed.">        if (!c.rdfTermFactory.isPresent()) {</span>
+<span class="fc" id="L435">            c.rdfTermFactory = Optional.of(createRDFTermFactory());</span>
+        }
+        // sourceFile, but no base? Let's follow any symlinks and use
+        // the file:/// URI
+<span class="pc bpc" id="L439" title="1 of 4 branches missed.">        if (c.sourceFile.isPresent() &amp;&amp; !c.base.isPresent()) {</span>
+<span class="fc" id="L440">            URI baseUri = c.sourceFile.get().toRealPath().toUri();</span>
+<span class="fc" id="L441">            c.base = Optional.of(internalRdfTermFactory.createIRI(baseUri.toString()));</span>
+        }
+
+<span class="fc" id="L444">        return c.asT();</span>
+    }
+
+    /**
+     * Subclasses can override this method to check the target is valid.
+     * &lt;p&gt;
+     * The default implementation throws an IllegalStateException if the target
+     * has not been set.
+     */
+    protected void checkTarget() {
+<span class="pc bpc" id="L454" title="1 of 2 branches missed.">        if (target == null) {</span>
+<span class="nc" id="L455">            throw new IllegalStateException(&quot;target has not been set&quot;);</span>
+        }
+<span class="pc bpc" id="L457" title="2 of 4 branches missed.">        if (targetGraph.isPresent() &amp;&amp; targetDataset.isPresent()) {</span>
+            // This should not happen as each target(..) method resets the
+            // optionals
+<span class="nc" id="L460">            throw new IllegalStateException(&quot;targetGraph and targetDataset can't both be set&quot;);</span>
+        }
+<span class="fc" id="L462">    }</span>
+
+    /**
+     * Subclasses can override this method to check compatibility with the
+     * contentType setting.
+     * 
+     * @throws IllegalStateException
+     *             if the {@link #getContentType()} or
+     *             {@link #getContentTypeSyntax()} is not compatible or invalid
+     */
+    protected void checkContentType() throws IllegalStateException {
+<span class="fc" id="L473">    }</span>
+
+    /**
+     * Guess RDFSyntax from a local file's extension.
+     * &lt;p&gt;
+     * This method can be used by subclasses if {@link #getContentType()} is not
+     * present and {@link #getSourceFile()} is set.
+     * 
+     * @param path
+     *            Path which extension should be checked
+     * @return The {@link RDFSyntax} which has a matching
+     *         {@link RDFSyntax#fileExtension}, otherwise
+     *         {@link Optional#empty()}.
+     */
+    protected static Optional&lt;RDFSyntax&gt; guessRDFSyntax(Path path) {
+<span class="fc" id="L488">        return fileExtension(path).flatMap(RDFSyntax::byFileExtension);</span>
+    }
+
+    /**
+     * Return the file extension of a Path - if any.
+     * &lt;p&gt;
+     * The returned file extension includes the leading &lt;code&gt;.&lt;/code&gt;
+     * &lt;p&gt;
+     * Note that this only returns the last extension, e.g. the file extension
+     * for &lt;code&gt;archive.tar.gz&lt;/code&gt; would be &lt;code&gt;.gz&lt;/code&gt;
+     * 
+     * @param path
+     *            Path which filename might contain an extension
+     * @return File extension (including the leading &lt;code&gt;.&lt;/code&gt;, or
+     *         {@link Optional#empty()} if the path has no extension
+     */
+    private static Optional&lt;String&gt; fileExtension(Path path) {
+<span class="fc" id="L505">        Path fileName = path.getFileName();</span>
+<span class="pc bpc" id="L506" title="1 of 2 branches missed.">        if (fileName == null) {</span>
+<span class="nc" id="L507">            return Optional.empty();</span>
+        }
+<span class="fc" id="L509">        String filenameStr = fileName.toString();</span>
+<span class="fc" id="L510">        int last = filenameStr.lastIndexOf(&quot;.&quot;);</span>
+<span class="pc bpc" id="L511" title="1 of 2 branches missed.">        if (last &gt; -1) {</span>
+<span class="fc" id="L512">            return Optional.of(filenameStr.substring(last));</span>
+        }
+<span class="nc" id="L514">        return Optional.empty();</span>
+    }
+
+    /**
+     * Create a new {@link RDF} for a parse session.
+     * &lt;p&gt;
+     * This is called by {@link #parse()} to set {@link #rdfTermFactory(RDF)} if
+     * it is {@link Optional#empty()}.
+     * &lt;p&gt;
+     * As parsed blank nodes might be made with
+     * {@link RDF#createBlankNode(String)}, each call to this method SHOULD
+     * return a new RDF instance.
+     * 
+     * @return A new {@link RDF}
+     */
+    protected RDF createRDFTermFactory() {
+<span class="fc" id="L530">        return new SimpleRDF();</span>
+    }
+
+    @Override
+    public Future&lt;ParseResult&gt; parse() throws IOException, IllegalStateException {
+<span class="fc" id="L535">        final AbstractRDFParser&lt;T&gt; c = prepareForParsing();</span>
+<span class="fc" id="L536">        return threadpool.submit(() -&gt; {</span>
+<span class="fc" id="L537">            c.parseSynchronusly();</span>
+<span class="fc" id="L538">            return null;</span>
+        });
+    }
+
+    @Override
+    public T target(Consumer&lt;Quad&gt; consumer) {
+<span class="fc" id="L544">        AbstractRDFParser&lt;T&gt; c = clone();</span>
+<span class="fc" id="L545">        c.resetTarget();</span>
+<span class="fc" id="L546">        c.target = consumer;</span>
+<span class="fc" id="L547">        return c.asT();</span>
+    }
+
+    @Override
+    public T target(Dataset dataset) {
+        @SuppressWarnings({ &quot;rawtypes&quot;, &quot;unchecked&quot; })
+<span class="nc" id="L553">        AbstractRDFParser&lt;T&gt; c = (AbstractRDFParser) RDFParser.super.target(dataset);</span>
+<span class="nc" id="L554">        c.resetTarget();</span>
+<span class="nc" id="L555">        c.targetDataset = Optional.of(dataset);</span>
+<span class="nc" id="L556">        return c.asT();</span>
+    }
+
+    @Override
+    public T target(Graph graph) {
+        @SuppressWarnings({ &quot;rawtypes&quot;, &quot;unchecked&quot; }) // super calls our
+                                                       // .clone()
+<span class="fc" id="L563">        AbstractRDFParser&lt;T&gt; c = (AbstractRDFParser) RDFParser.super.target(graph);</span>
+<span class="fc" id="L564">        c.resetTarget();</span>
+<span class="fc" id="L565">        c.targetGraph = Optional.of(graph);</span>
+<span class="fc" id="L566">        return c.asT();</span>
+    }
+
+}
+</pre><div class="footer"><span class="right">Created with <a href="http://www.eclemma.org/jacoco">JaCoCo</a> 0.7.6.201602180812</span></div></body></html>
\ No newline at end of file

Added: websites/production/commonsrdf/content/jacoco/org.apache.commons.rdf.simple.experimental/RDFParseException.html
==============================================================================
--- websites/production/commonsrdf/content/jacoco/org.apache.commons.rdf.simple.experimental/RDFParseException.html (added)
+++ websites/production/commonsrdf/content/jacoco/org.apache.commons.rdf.simple.experimental/RDFParseException.html Wed Nov 16 10:57:28 2016
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../.resources/report.css" type="text/css"/><link rel="shortcut icon" href="../.resources/report.gif" type="image/gif"/><title>RDFParseException</title><script type="text/javascript" src="../.resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../.sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">Commons RDF impl: Simple</a> &gt; <a href="index.html" class="el_package">org.apache.commons.rdf.simple.experimental</a> &gt; <span class="el_class">RDFParseException</span></div><h1>RDFParseException</h1><table class="coverage" cellspacing="0" id="coverageta
 ble"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">31 of 31</td><td class="ctr2">0%</td><td class="bar">0 of 0</td><td class="ctr2">n/a</td><td class="ctr1">5</td><td class="ctr2">5<
 /td><td class="ctr1">13</td><td class="ctr2">13</td><td class="ctr1">5</td><td class="ctr2">5</td></tr></tfoot><tbody><tr><td id="a3"><a href="RDFParseException.java.html#L33" class="el_method">RDFParseException(RDFParser, String, Throwable)</a></td><td class="bar" id="b0"><img src="../.resources/redbar.gif" width="120" height="10" title="8" alt="8"/></td><td class="ctr2" id="c0">0%</td><td class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1" id="f0">1</td><td class="ctr2" id="g0">1</td><td class="ctr1" id="h0">3</td><td class="ctr2" id="i0">3</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a2"><a href="RDFParseException.java.html#L38" class="el_method">RDFParseException(RDFParser, String)</a></td><td class="bar" id="b1"><img src="../.resources/redbar.gif" width="105" height="10" title="7" alt="7"/></td><td class="ctr2" id="c1">0%</td><td class="bar" id="d1"/><td class="ctr2" id="e1">n/a</td><td class="ctr1" id="f1">1</td><td clas
 s="ctr2" id="g1">1</td><td class="ctr1" id="h1">3</td><td class="ctr2" id="i1">3</td><td class="ctr1" id="j1">1</td><td class="ctr2" id="k1">1</td></tr><tr><td id="a4"><a href="RDFParseException.java.html#L43" class="el_method">RDFParseException(RDFParser, Throwable)</a></td><td class="bar" id="b2"><img src="../.resources/redbar.gif" width="105" height="10" title="7" alt="7"/></td><td class="ctr2" id="c2">0%</td><td class="bar" id="d2"/><td class="ctr2" id="e2">n/a</td><td class="ctr1" id="f2">1</td><td class="ctr2" id="g2">1</td><td class="ctr1" id="h2">3</td><td class="ctr2" id="i2">3</td><td class="ctr1" id="j2">1</td><td class="ctr2" id="k2">1</td></tr><tr><td id="a1"><a href="RDFParseException.java.html#L28" class="el_method">RDFParseException(RDFParser)</a></td><td class="bar" id="b3"><img src="../.resources/redbar.gif" width="90" height="10" title="6" alt="6"/></td><td class="ctr2" id="c3">0%</td><td class="bar" id="d3"/><td class="ctr2" id="e3">n/a</td><td class="ctr1" id="f
 3">1</td><td class="ctr2" id="g3">1</td><td class="ctr1" id="h3">3</td><td class="ctr2" id="i3">3</td><td class="ctr1" id="j3">1</td><td class="ctr2" id="k3">1</td></tr><tr><td id="a0"><a href="RDFParseException.java.html#L48" class="el_method">getRDFParserBuilder()</a></td><td class="bar" id="b4"><img src="../.resources/redbar.gif" width="45" height="10" title="3" alt="3"/></td><td class="ctr2" id="c4">0%</td><td class="bar" id="d4"/><td class="ctr2" id="e4">n/a</td><td class="ctr1" id="f4">1</td><td class="ctr2" id="g4">1</td><td class="ctr1" id="h4">1</td><td class="ctr2" id="i4">1</td><td class="ctr1" id="j4">1</td><td class="ctr2" id="k4">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.eclemma.org/jacoco">JaCoCo</a> 0.7.6.201602180812</span></div></body></html>
\ No newline at end of file

Added: websites/production/commonsrdf/content/jacoco/org.apache.commons.rdf.simple.experimental/RDFParseException.java.html
==============================================================================
--- websites/production/commonsrdf/content/jacoco/org.apache.commons.rdf.simple.experimental/RDFParseException.java.html (added)
+++ websites/production/commonsrdf/content/jacoco/org.apache.commons.rdf.simple.experimental/RDFParseException.java.html Wed Nov 16 10:57:28 2016
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../.resources/report.css" type="text/css"/><link rel="shortcut icon" href="../.resources/report.gif" type="image/gif"/><title>RDFParseException.java</title><link rel="stylesheet" href="../.resources/prettify.css" type="text/css"/><script type="text/javascript" src="../.resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../.sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">Commons RDF impl: Simple</a> &gt; <a href="index.source.html" class="el_package">org.apache.commons.rdf.simple.experimental</a> &gt; <span class="el_source">RDFParse
 Exception.java</span></div><h1>RDFParseException.java</h1><pre class="source lang-java linenums">/**
+ * 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
+ * &quot;License&quot;); 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 &quot;AS IS&quot; 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.commons.rdf.simple.experimental;
+
+import org.apache.commons.rdf.experimental.RDFParser;
+
+public class RDFParseException extends Exception {
+    private static final long serialVersionUID = 5427752643780702976L;
+    private RDFParser builder;
+
+    public RDFParseException(RDFParser builder) {
+<span class="nc" id="L28">        super();</span>
+<span class="nc" id="L29">        this.builder = builder;</span>
+<span class="nc" id="L30">    }</span>
+
+    public RDFParseException(RDFParser builder, String message, Throwable cause) {
+<span class="nc" id="L33">        super(message, cause);</span>
+<span class="nc" id="L34">        this.builder = builder;</span>
+<span class="nc" id="L35">    }</span>
+
+    public RDFParseException(RDFParser builder, String message) {
+<span class="nc" id="L38">        super(message);</span>
+<span class="nc" id="L39">        this.builder = builder;</span>
+<span class="nc" id="L40">    }</span>
+
+    public RDFParseException(RDFParser builder, Throwable cause) {
+<span class="nc" id="L43">        super(cause);</span>
+<span class="nc" id="L44">        this.builder = builder;</span>
+<span class="nc" id="L45">    }</span>
+
+    public RDFParser getRDFParserBuilder() {
+<span class="nc" id="L48">        return builder;</span>
+    }
+}
+</pre><div class="footer"><span class="right">Created with <a href="http://www.eclemma.org/jacoco">JaCoCo</a> 0.7.6.201602180812</span></div></body></html>
\ No newline at end of file

Added: websites/production/commonsrdf/content/jacoco/org.apache.commons.rdf.simple.experimental/index.html
==============================================================================
--- websites/production/commonsrdf/content/jacoco/org.apache.commons.rdf.simple.experimental/index.html (added)
+++ websites/production/commonsrdf/content/jacoco/org.apache.commons.rdf.simple.experimental/index.html Wed Nov 16 10:57:28 2016
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../.resources/report.css" type="text/css"/><link rel="shortcut icon" href="../.resources/report.gif" type="image/gif"/><title>org.apache.commons.rdf.simple.experimental</title><script type="text/javascript" src="../.resources/sort.js"></script></head><body onload="initialSort(['breadcrumb', 'coveragetable'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="index.source.html" class="el_source">Source Files</a><a href="../.sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">Commons RDF impl: Simple</a> &gt; <span class="el_package">org.apache.commons.rdf.simple.experimental</span></div><h1>org.apache.commons.rdf.simple.experim
 ental</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td><td class="sortable ctr1" id="l" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="m" onclick="toggleSo
 rt(this)">Classes</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">164 of 560</td><td class="ctr2">71%</td><td class="bar">14 of 50</td><td class="ctr2">72%</td><td class="ctr1">26</td><td class="ctr2">75</td><td class="ctr1">42</td><td class="ctr2">140</td><td class="ctr1">13</td><td class="ctr2">50</td><td class="ctr1">1</td><td class="ctr2">2</td></tr></tfoot><tbody><tr><td id="a0"><a href="AbstractRDFParser.html" class="el_class">AbstractRDFParser</a></td><td class="bar" id="b0"><img src="../.resources/redbar.gif" width="30" height="10" title="133" alt="133"/><img src="../.resources/greenbar.gif" width="89" height="10" title="396" alt="396"/></td><td class="ctr2" id="c0">75%</td><td class="bar" id="d0"><img src="../.resources/redbar.gif" width="33" height="10" title="14" alt="14"/><img src="../.resources/greenbar.gif" width="86" height="10" title="36" alt="36"/></td><td class="ctr2" id="e0">72%</td><td class="ctr1" id="f0">21</td><td class="ctr2" id="g0">70</td><td clas
 s="ctr1" id="h0">29</td><td class="ctr2" id="i0">127</td><td class="ctr1" id="j0">8</td><td class="ctr2" id="k0">45</td><td class="ctr1" id="l1">0</td><td class="ctr2" id="m0">1</td></tr><tr><td id="a1"><a href="RDFParseException.html" class="el_class">RDFParseException</a></td><td class="bar" id="b1"><img src="../.resources/redbar.gif" width="7" height="10" title="31" alt="31"/></td><td class="ctr2" id="c1">0%</td><td class="bar" id="d1"/><td class="ctr2" id="e1">n/a</td><td class="ctr1" id="f1">5</td><td class="ctr2" id="g1">5</td><td class="ctr1" id="h1">13</td><td class="ctr2" id="i1">13</td><td class="ctr1" id="j1">5</td><td class="ctr2" id="k1">5</td><td class="ctr1" id="l0">1</td><td class="ctr2" id="m1">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.eclemma.org/jacoco">JaCoCo</a> 0.7.6.201602180812</span></div></body></html>
\ No newline at end of file

Added: websites/production/commonsrdf/content/jacoco/org.apache.commons.rdf.simple.experimental/index.source.html
==============================================================================
--- websites/production/commonsrdf/content/jacoco/org.apache.commons.rdf.simple.experimental/index.source.html (added)
+++ websites/production/commonsrdf/content/jacoco/org.apache.commons.rdf.simple.experimental/index.source.html Wed Nov 16 10:57:28 2016
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../.resources/report.css" type="text/css"/><link rel="shortcut icon" href="../.resources/report.gif" type="image/gif"/><title>org.apache.commons.rdf.simple.experimental</title><script type="text/javascript" src="../.resources/sort.js"></script></head><body onload="initialSort(['breadcrumb', 'coveragetable'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="index.html" class="el_class">Classes</a><a href="../.sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">Commons RDF impl: Simple</a> &gt; <span class="el_package">org.apache.commons.rdf.simple.experimental</span></div><h1>org.apache.commons.rdf.simple.experimental</h1><ta
 ble class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td><td class="sortable ctr1" id="l" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="m" onclick="toggleSort(this)">Cla
 sses</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">164 of 560</td><td class="ctr2">71%</td><td class="bar">14 of 50</td><td class="ctr2">72%</td><td class="ctr1">26</td><td class="ctr2">75</td><td class="ctr1">42</td><td class="ctr2">140</td><td class="ctr1">13</td><td class="ctr2">50</td><td class="ctr1">1</td><td class="ctr2">2</td></tr></tfoot><tbody><tr><td id="a0"><a href="AbstractRDFParser.java.html" class="el_source">AbstractRDFParser.java</a></td><td class="bar" id="b0"><img src="../.resources/redbar.gif" width="30" height="10" title="133" alt="133"/><img src="../.resources/greenbar.gif" width="89" height="10" title="396" alt="396"/></td><td class="ctr2" id="c0">75%</td><td class="bar" id="d0"><img src="../.resources/redbar.gif" width="33" height="10" title="14" alt="14"/><img src="../.resources/greenbar.gif" width="86" height="10" title="36" alt="36"/></td><td class="ctr2" id="e0">72%</td><td class="ctr1" id="f0">21</td><td class="ctr2" id="g0">70</td><td class=
 "ctr1" id="h0">29</td><td class="ctr2" id="i0">127</td><td class="ctr1" id="j0">8</td><td class="ctr2" id="k0">45</td><td class="ctr1" id="l1">0</td><td class="ctr2" id="m0">1</td></tr><tr><td id="a1"><a href="RDFParseException.java.html" class="el_source">RDFParseException.java</a></td><td class="bar" id="b1"><img src="../.resources/redbar.gif" width="7" height="10" title="31" alt="31"/></td><td class="ctr2" id="c1">0%</td><td class="bar" id="d1"/><td class="ctr2" id="e1">n/a</td><td class="ctr1" id="f1">5</td><td class="ctr2" id="g1">5</td><td class="ctr1" id="h1">13</td><td class="ctr2" id="i1">13</td><td class="ctr1" id="j1">5</td><td class="ctr2" id="k1">5</td><td class="ctr1" id="l0">1</td><td class="ctr2" id="m1">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.eclemma.org/jacoco">JaCoCo</a> 0.7.6.201602180812</span></div></body></html>
\ No newline at end of file

Added: websites/production/commonsrdf/content/jacoco/org.apache.commons.rdf.simple/BlankNodeImpl.html
==============================================================================
--- websites/production/commonsrdf/content/jacoco/org.apache.commons.rdf.simple/BlankNodeImpl.html (added)
+++ websites/production/commonsrdf/content/jacoco/org.apache.commons.rdf.simple/BlankNodeImpl.html Wed Nov 16 10:57:28 2016
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../.resources/report.css" type="text/css"/><link rel="shortcut icon" href="../.resources/report.gif" type="image/gif"/><title>BlankNodeImpl</title><script type="text/javascript" src="../.resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../.sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">Commons RDF impl: Simple</a> &gt; <a href="index.html" class="el_package">org.apache.commons.rdf.simple</a> &gt; <span class="el_class">BlankNodeImpl</span></div><h1>BlankNodeImpl</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class
 ="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">8 of 109</td><td class="ctr2">93%</td><td class="bar">3 of 14</td><td class="ctr2">79%</td><td class="ctr1">3</td><td class="ctr2">15</td><td class="ctr1">3
 </td><td class="ctr2">27</td><td class="ctr1">1</td><td class="ctr2">8</td></tr></tfoot><tbody><tr><td id="a2"><a href="BlankNodeImpl.java.html#L92" class="el_method">equals(Object)</a></td><td class="bar" id="b0"><img src="../.resources/redbar.gif" width="15" height="10" title="5" alt="5"/><img src="../.resources/greenbar.gif" width="90" height="10" title="30" alt="30"/></td><td class="ctr2" id="c6">86%</td><td class="bar" id="d0"><img src="../.resources/redbar.gif" width="30" height="10" title="3" alt="3"/><img src="../.resources/greenbar.gif" width="90" height="10" title="9" alt="9"/></td><td class="ctr2" id="e1">75%</td><td class="ctr1" id="f0">2</td><td class="ctr2" id="g0">7</td><td class="ctr1" id="h0">2</td><td class="ctr2" id="i0">13</td><td class="ctr1" id="j1">0</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a6"><a href="BlankNodeImpl.java.html#L82" class="el_method">toString()</a></td><td class="bar" id="b1"><img src="../.resources/redbar.gif" width="9" height="10" 
 title="3" alt="3"/></td><td class="ctr2" id="c7">0%</td><td class="bar" id="d2"/><td class="ctr2" id="e2">n/a</td><td class="ctr1" id="f1">1</td><td class="ctr2" id="g2">1</td><td class="ctr1" id="h1">1</td><td class="ctr2" id="i4">1</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k1">1</td></tr><tr><td id="a1"><a href="BlankNodeImpl.java.html#L42" class="el_method">BlankNodeImpl(UUID, String)</a></td><td class="bar" id="b2"><img src="../.resources/greenbar.gif" width="120" height="10" title="40" alt="40"/></td><td class="ctr2" id="c0">100%</td><td class="bar" id="d1"><img src="../.resources/greenbar.gif" width="20" height="10" title="2" alt="2"/></td><td class="ctr2" id="e0">100%</td><td class="ctr1" id="f2">0</td><td class="ctr2" id="g1">2</td><td class="ctr1" id="h2">0</td><td class="ctr2" id="i1">6</td><td class="ctr1" id="j2">0</td><td class="ctr2" id="k2">1</td></tr><tr><td id="a4"><a href="BlankNodeImpl.java.html#L77" class="el_method">ntriplesString()</a></td><td cla
 ss="bar" id="b3"><img src="../.resources/greenbar.gif" width="30" height="10" title="10" alt="10"/></td><td class="ctr2" id="c1">100%</td><td class="bar" id="d3"/><td class="ctr2" id="e3">n/a</td><td class="ctr1" id="f3">0</td><td class="ctr2" id="g3">1</td><td class="ctr1" id="h3">0</td><td class="ctr2" id="i5">1</td><td class="ctr1" id="j3">0</td><td class="ctr2" id="k3">1</td></tr><tr><td id="a0"><a href="BlankNodeImpl.java.html#L39" class="el_method">BlankNodeImpl()</a></td><td class="bar" id="b4"><img src="../.resources/greenbar.gif" width="21" height="10" title="7" alt="7"/></td><td class="ctr2" id="c2">100%</td><td class="bar" id="d4"/><td class="ctr2" id="e4">n/a</td><td class="ctr1" id="f4">0</td><td class="ctr2" id="g4">1</td><td class="ctr1" id="h4">0</td><td class="ctr2" id="i2">2</td><td class="ctr1" id="j4">0</td><td class="ctr2" id="k4">1</td></tr><tr><td id="a5"><a href="BlankNodeImpl.java.html#L33" class="el_method">static {...}</a></td><td class="bar" id="b5"><img 
 src="../.resources/greenbar.gif" width="21" height="10" title="7" alt="7"/></td><td class="ctr2" id="c3">100%</td><td class="bar" id="d5"/><td class="ctr2" id="e5">n/a</td><td class="ctr1" id="f5">0</td><td class="ctr2" id="g5">1</td><td class="ctr1" id="h5">0</td><td class="ctr2" id="i3">2</td><td class="ctr1" id="j5">0</td><td class="ctr2" id="k5">1</td></tr><tr><td id="a3"><a href="BlankNodeImpl.java.html#L87" class="el_method">hashCode()</a></td><td class="bar" id="b6"><img src="../.resources/greenbar.gif" width="12" height="10" title="4" alt="4"/></td><td class="ctr2" id="c4">100%</td><td class="bar" id="d6"/><td class="ctr2" id="e6">n/a</td><td class="ctr1" id="f6">0</td><td class="ctr2" id="g6">1</td><td class="ctr1" id="h6">0</td><td class="ctr2" id="i6">1</td><td class="ctr1" id="j6">0</td><td class="ctr2" id="k6">1</td></tr><tr><td id="a7"><a href="BlankNodeImpl.java.html#L72" class="el_method">uniqueReference()</a></td><td class="bar" id="b7"><img src="../.resources/green
 bar.gif" width="9" height="10" title="3" alt="3"/></td><td class="ctr2" id="c5">100%</td><td class="bar" id="d7"/><td class="ctr2" id="e7">n/a</td><td class="ctr1" id="f7">0</td><td class="ctr2" id="g7">1</td><td class="ctr1" id="h7">0</td><td class="ctr2" id="i7">1</td><td class="ctr1" id="j7">0</td><td class="ctr2" id="k7">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.eclemma.org/jacoco">JaCoCo</a> 0.7.6.201602180812</span></div></body></html>
\ No newline at end of file

Added: websites/production/commonsrdf/content/jacoco/org.apache.commons.rdf.simple/BlankNodeImpl.java.html
==============================================================================
--- websites/production/commonsrdf/content/jacoco/org.apache.commons.rdf.simple/BlankNodeImpl.java.html (added)
+++ websites/production/commonsrdf/content/jacoco/org.apache.commons.rdf.simple/BlankNodeImpl.java.html Wed Nov 16 10:57:28 2016
@@ -0,0 +1,114 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../.resources/report.css" type="text/css"/><link rel="shortcut icon" href="../.resources/report.gif" type="image/gif"/><title>BlankNodeImpl.java</title><link rel="stylesheet" href="../.resources/prettify.css" type="text/css"/><script type="text/javascript" src="../.resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../.sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">Commons RDF impl: Simple</a> &gt; <a href="index.source.html" class="el_package">org.apache.commons.rdf.simple</a> &gt; <span class="el_source">BlankNodeImpl.java</span>
 </div><h1>BlankNodeImpl.java</h1><pre class="source lang-java linenums">/**
+ * 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
+ * &quot;License&quot;); 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 &quot;AS IS&quot; 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.commons.rdf.simple;
+
+import java.nio.charset.StandardCharsets;
+import java.util.Objects;
+import java.util.UUID;
+import java.util.concurrent.atomic.AtomicLong;
+
+import org.apache.commons.rdf.api.BlankNode;
+import org.apache.commons.rdf.simple.SimpleRDF.SimpleRDFTerm;
+
+/**
+ * A simple implementation of BlankNode.
+ */
+final class BlankNodeImpl implements BlankNode, SimpleRDFTerm {
+
+<span class="fc" id="L33">    private static final UUID SALT = UUID.randomUUID();</span>
+<span class="fc" id="L34">    private static final AtomicLong COUNTER = new AtomicLong();</span>
+
+    private final String uniqueReference;
+
+    public BlankNodeImpl() {
+<span class="fc" id="L39">        this(SALT, Long.toString(COUNTER.incrementAndGet()));</span>
+<span class="fc" id="L40">    }</span>
+
+<span class="fc" id="L42">    public BlankNodeImpl(UUID uuidSalt, String name) {</span>
+<span class="fc bfc" id="L43" title="All 2 branches covered.">        if (Objects.requireNonNull(name).isEmpty()) {</span>
+<span class="fc" id="L44">            throw new IllegalArgumentException(&quot;Invalid blank node id: &quot; + name);</span>
+        }
+
+        // Build a semi-URN - to be hashed for a name-based UUID below
+        // Both the scope and the id are used to create the UUID, ensuring that
+        // a caller can reliably create the same bnode if necessary by sending
+        // in the same scope to RDF.createBlankNode(String)
+<span class="fc" id="L51">        String uuidInput = &quot;urn:uuid:&quot; + uuidSalt + &quot;#&quot; + name;</span>
+
+        // The above is not a good value for this.id, as the id
+        // needs to be further escaped for
+        // ntriplesString() (there are no restrictions on
+        // RDF.createBlankNode(String) ).
+
+        // Rather than implement ntriples escaping here, and knowing
+        // our uniqueReference() contain a UUID anyway, we simply
+        // create another name-based UUID, and use it within both
+        // uniqueReference() and within ntriplesString().
+        //
+        // A side-effect from this is that the blank node identifier
+        // is not preserved or shown in ntriplesString. In a way
+        // this is a feature, not a bug. as the contract for RDF
+        // has no such requirement.
+<span class="fc" id="L67">        this.uniqueReference = UUID.nameUUIDFromBytes(uuidInput.getBytes(StandardCharsets.UTF_8)).toString();</span>
+<span class="fc" id="L68">    }</span>
+
+    @Override
+    public String uniqueReference() {
+<span class="fc" id="L72">        return uniqueReference;</span>
+    }
+
+    @Override
+    public String ntriplesString() {
+<span class="fc" id="L77">        return &quot;_:&quot; + uniqueReference;</span>
+    }
+
+    @Override
+    public String toString() {
+<span class="nc" id="L82">        return ntriplesString();</span>
+    }
+
+    @Override
+    public int hashCode() {
+<span class="fc" id="L87">        return uniqueReference.hashCode();</span>
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+<span class="fc bfc" id="L92" title="All 2 branches covered.">        if (this == obj) {</span>
+<span class="fc" id="L93">            return true;</span>
+        }
+<span class="fc bfc" id="L95" title="All 2 branches covered.">        if (obj == null) {</span>
+<span class="fc" id="L96">            return false;</span>
+        }
+        // We don't support equality with other implementations
+<span class="fc bfc" id="L99" title="All 2 branches covered.">        if (!(obj instanceof BlankNodeImpl)) {</span>
+<span class="fc" id="L100">            return false;</span>
+        }
+<span class="fc" id="L102">        BlankNodeImpl other = (BlankNodeImpl) obj;</span>
+<span class="pc bpc" id="L103" title="1 of 2 branches missed.">        if (uniqueReference == null) {</span>
+<span class="nc bnc" id="L104" title="All 2 branches missed.">            if (other.uniqueReference != null) {</span>
+<span class="nc" id="L105">                return false;</span>
+            }
+<span class="fc bfc" id="L107" title="All 2 branches covered.">        } else if (!uniqueReference.equals(other.uniqueReference)) {</span>
+<span class="fc" id="L108">            return false;</span>
+        }
+<span class="fc" id="L110">        return true;</span>
+    }
+
+}
+</pre><div class="footer"><span class="right">Created with <a href="http://www.eclemma.org/jacoco">JaCoCo</a> 0.7.6.201602180812</span></div></body></html>
\ No newline at end of file