You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@any23.apache.org by le...@apache.org on 2018/01/08 13:14:18 UTC

[2/6] any23 git commit: ANY23-320 Address @Ignore tests in Any23 and ANY23-131 Nested Microdata are not extracted

http://git-wip-us.apache.org/repos/asf/any23/blob/60e93a76/core/src/test/java/org/apache/any23/extractor/html/HCardExtractorTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/any23/extractor/html/HCardExtractorTest.java b/core/src/test/java/org/apache/any23/extractor/html/HCardExtractorTest.java
index c505bb8..1bffcee 100644
--- a/core/src/test/java/org/apache/any23/extractor/html/HCardExtractorTest.java
+++ b/core/src/test/java/org/apache/any23/extractor/html/HCardExtractorTest.java
@@ -17,13 +17,15 @@
 
 package org.apache.any23.extractor.html;
 
-import junit.framework.Assert;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
 import org.apache.any23.extractor.ExtractionException;
 import org.apache.any23.extractor.ExtractorFactory;
 import org.apache.any23.extractor.IssueReport;
 import org.apache.any23.rdf.RDFUtils;
 import org.apache.any23.vocab.VCard;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.eclipse.rdf4j.model.Resource;
 import org.eclipse.rdf4j.model.Statement;
@@ -40,929 +42,927 @@ import java.util.List;
  */
 public class HCardExtractorTest extends AbstractExtractorTestCase {
 
-	private static final VCard vVCARD = VCard.getInstance();
-
-	protected ExtractorFactory<?> getExtractorFactory() {
-		return new HCardExtractorFactory();
-	}
-
-	@Test
-	public void testEMailNotUriReal() throws Exception {
-		assertExtract("/microformats/hcard/17-email-not-uri.html");
-		assertDefaultVCard();
-		assertJohn();
-		assertContains(vVCARD.email, RDFUtils.iri("mailto:john@example.com"));
-	}
-
-	@Test
-	public void testTel() throws Exception {
-		assertExtract("/microformats/hcard/21-tel.html");
-		assertDefaultVCard();
-		String[] tels = { "+1.415.555.1231", "+1.415.555.1235",
-				"+1.415.555.1236", "+1.415.555.1237", "+1.415.555.1238",
-				"+1.415.555.1239", "+1.415.555.1240", "+1.415.555.1241",
-				"+1.415.555.1242", "+1.415.555.1243" };
-		for (String tel : tels) {
-			assertContains(vVCARD.tel, RDFUtils.iri("tel:" + tel));
-		}
-		Resource telResource = RDFUtils.iri("tel:+14155551233");
-		assertContains(vVCARD.fax, telResource);
-		assertContains(vVCARD.workTel, telResource);
-		assertContains(vVCARD.homeTel, telResource);
-		assertJohn();
-	}
-
-	@Test
-	public void testAbbrTitleEverything() throws Exception {
-		assertExtract("/microformats/hcard/23-abbr-title-everything.html");
-		assertDefaultVCard();
-
-		assertContains(vVCARD.fn, "John Doe");
-		assertContains(vVCARD.nickname, "JJ");
-
-		assertContains(vVCARD.given_name, "Jonathan");
-		assertContains(vVCARD.additional_name, "John");
-		assertContains(vVCARD.family_name, "Doe-Smith");
-		assertContains(vVCARD.honorific_suffix, "Medical Doctor");
-
-		assertContains(vVCARD.title, "President");
-		assertContains(vVCARD.role, "Chief");
-		assertContains(vVCARD.tz, "-0700");
-		assertContains(vVCARD.bday, "2006-04-04");
-		assertContains(vVCARD.tel, RDFUtils.iri("tel:415.555.1234"));
-		assertContains(vVCARD.uid, "abcdefghijklmnopqrstuvwxyz");
-		assertContains(vVCARD.class_, "public");
-		assertContains(vVCARD.note, "this is a note");
-		assertContains(vVCARD.organization_name, "Intellicorp");
-		assertContains(vVCARD.organization_unit, "Intelligence");
-
-		// We define the property in this extractor _but_ we do not parse it.
-		assertContains(vVCARD.geo, (Resource) null);
-		// Thus we do not cointain these.
-		// The interaction is in @link RDFMergerTest.java
-		assertNotContains(RDF.TYPE, vVCARD.Location);
-		assertNotContains(null, vVCARD.latitude, "37.77");
-		assertNotContains(null, vVCARD.longitude, "-122.41");
-
-		// see above
-		assertContains(vVCARD.adr, (Resource) null);
-		assertNotContains(RDF.TYPE, vVCARD.Address);
-		assertNotContains(null, vVCARD.post_office_box, "Box 1234");
-		assertNotContains(null, vVCARD.extended_address, "Suite 100");
-		assertNotContains(null, vVCARD.street_address, "123 Fake Street");
-		assertNotContains(null, vVCARD.locality, "San Francisco");
-		assertNotContains(null, vVCARD.region, "California");
-		assertNotContains(null, vVCARD.postal_code, "12345-6789");
-		assertNotContains(null, vVCARD.country_name, "United States of America");
-		assertNotContains(null, vVCARD.addressType, "work");
-	}
-
-	@Test
-	public void testGeoAbbr() throws Exception {
-		assertExtract("/microformats/hcard/25-geo-abbr.html");
-		assertModelNotEmpty();
-		assertContains(vVCARD.fn, "Paradise");
-		assertContains(RDF.TYPE, vVCARD.Organization);
-		assertContains(vVCARD.organization_name, "Paradise");
-		// See above: geo property yes, gteo blank node no.
-		assertContains(vVCARD.geo, (Resource) null);
-		assertNotContains(RDF.TYPE, vVCARD.Location);
-		assertNotContains(null, vVCARD.latitude, "30.267991");
-		assertNotContains(null, vVCARD.longitude, "-97.739568");
-	}
-
-	@Test
-	public void testAncestors() throws Exception {
-		assertExtract("/microformats/hcard/26-ancestors.html");
-		assertModelNotEmpty();
-
-		assertContains(vVCARD.fn, "John Doe");
-		assertNotContains(null, vVCARD.fn,
-				"Mister Jonathan John Doe-Smith Medical Doctor");
-		assertContains(vVCARD.nickname, "JJ");
-		assertNotContains(RDF.TYPE, vVCARD.Address);
-		assertContains(vVCARD.tz, "-0700");
-		assertContains(vVCARD.title, "President");
-		assertContains(vVCARD.role, "Chief");
-		assertContains(vVCARD.organization_name, "Intellicorp");
-		assertContains(vVCARD.organization_unit, "Intelligence");
-
-		assertContains(vVCARD.tel, RDFUtils.iri("tel:415.555.1234"));
-		assertContains(vVCARD.uid, "abcdefghijklmnopqrstuvwxyz");
-		assertContains(vVCARD.note, "this is a note");
-		assertContains(vVCARD.class_, "public");
-
-		assertNotContains(RDF.TYPE, vVCARD.Location);
-		assertContains(vVCARD.geo, (Resource) null);
-		assertNotContains(null, vVCARD.latitude, "37.77");
-		assertNotContains(null, vVCARD.longitude, "-122.41");
-
-		assertContains(RDF.TYPE, vVCARD.Name);
-		assertContains(vVCARD.additional_name, "John");
-		assertContains(vVCARD.given_name, "Jonathan");
-		assertContains(vVCARD.family_name, "Doe-Smith");
-		assertContains(vVCARD.honorific_prefix, "Mister");
-		assertContains(vVCARD.honorific_suffix, "Medical Doctor");
-
-		assertNotContains(null, vVCARD.post_office_box, "Box 1234");
-		assertNotContains(null, vVCARD.extended_address, "Suite 100");
-		assertNotContains(null, vVCARD.street_address, "123 Fake Street");
-		assertNotContains(null, vVCARD.locality, "San Francisco");
-		assertNotContains(null, vVCARD.region, "California");
-		assertNotContains(null, vVCARD.postal_code, "12345-6789");
-		assertNotContains(null, vVCARD.country_name, "United States of America");
-		assertNotContains(null, vVCARD.addressType, "work");
-	}
-
-	@Test
-	public void testfnOrg() throws Exception {
-		assertExtract("/microformats/hcard/30-fn-org.html");
-		assertModelNotEmpty();
-		assertStatementsSize(RDF.TYPE, vVCARD.VCard, 4);
-		RepositoryResult<Statement> repositoryResult = getStatements(null,
-				RDF.TYPE, vVCARD.VCard);
-		try {
-			while (repositoryResult.hasNext()) {
-				Resource card = repositoryResult.next().getSubject();
-				Assert.assertNotNull(findObject(card, vVCARD.fn));
-				String name = findObjectAsLiteral(card, vVCARD.fn);
-
-				Assert.assertNotNull(findObject(card, vVCARD.org));
-				Resource org = findObjectAsResource(card, vVCARD.org);
-				Assert.assertNotNull(findObject(org, vVCARD.organization_name));
-
-				if (name.equals("Dan Connolly")) {
-					Assert.assertNotNull(findObject(card, vVCARD.n));
-					Assert.assertFalse(name.equals(org.stringValue()));
-				}
-			}
-		} finally {
-			repositoryResult.close();
-		}
-	}
-
-	@Test
-	public void testInclude() throws Exception {
-		assertExtract("/microformats/hcard/31-include.html");
-		assertModelNotEmpty();
-		assertStatementsSize(RDF.TYPE, vVCARD.VCard, 3);
-		assertStatementsSize(vVCARD.email, (Value) null, 3);
-
-		RepositoryResult<Statement> statements = getStatements(null, RDF.TYPE,
-				vVCARD.VCard);
-		try {
-			while (statements.hasNext()) {
-				Resource vcard = statements.next().getSubject();
-
-				Assert.assertNotNull(findObject(vcard, vVCARD.fn));
-				Assert.assertEquals("Brian Suda",
-						findObjectAsLiteral(vcard, vVCARD.fn));
-
-				Assert.assertNotNull(findObject(vcard, vVCARD.url));
-				String url = findObjectAsResource(vcard, vVCARD.url)
-						.stringValue();
-				Assert.assertEquals("http://suda.co.uk/", url);
-
-				Resource name = findObjectAsResource(vcard, vVCARD.n);
-				Assert.assertEquals("Brian",
-						findObjectAsLiteral(name, vVCARD.given_name));
-				Assert.assertEquals("Suda",
-						findObjectAsLiteral(name, vVCARD.family_name));
-
-				// Included data.
-				Assert.assertNotNull(findObject(vcard, vVCARD.email));
-				String mail = findObjectAsLiteral(vcard, vVCARD.email);
-				Assert.assertEquals("mailto:correct@example.com", mail);
-			}
-		} finally {
-			statements.close();
-		}
-	}
-
-	@Test
-	public void testHeader() throws Exception {
-		assertExtract("/microformats/hcard/32-header.html");
-		assertModelNotEmpty();
-		// check fn, name, family, nick.
-		assertJohn();
-
-		RepositoryResult<Statement> statements = getStatements(null, RDF.TYPE,
-				vVCARD.VCard);
-		try {
-			Resource example = RDFUtils.iri("http://example.org/");
-			while (statements.hasNext()) {
-				Resource card = statements.next().getSubject();
-				Assert.assertNotNull(findObject(card, vVCARD.fn));
-
-				String fn = findObjectAsLiteral(card, vVCARD.fn);
-				if ("Jane Doe".equals(fn)) {
-					assertNotFound(card, vVCARD.org);
-				} else {
-					Assert.assertTrue("John Doe".equals(fn)
-							|| "Brian Suda".equals(fn));
-
-					Assert.assertNotNull(findObject(card, vVCARD.url));
-					Assert.assertEquals(example,
-							findObjectAsResource(card, vVCARD.url));
-
-					Assert.assertNotNull(findObject(card, vVCARD.org));
-					Resource org = findObjectAsResource(card, vVCARD.org);
-					assertContains(org, RDF.TYPE, vVCARD.Organization);
-					Assert.assertNotNull(org);
-					Assert.assertNotNull(findObject(card, vVCARD.org));
-					Assert.assertNotNull(findObject(org,
-							vVCARD.organization_name));
-					Assert.assertEquals("example.org",
-							findObjectAsLiteral(org, vVCARD.organization_name));
-				}
-			}
-			// Just to be sure there are no spurious statements.
-			// assertStatementsSize(VCARD.org, null, 2);
-			assertStatementsSize(vVCARD.url, example, 2);
-		} finally {
-			statements.close();
-		}
-	}
-
-	@Test
-	public void testAreaFull() throws Exception {
-		assertExtract("/microformats/hcard/33-area.html");
-		assertModelNotEmpty();
-		assertStatementsSize(RDF.TYPE, vVCARD.VCard, 5);
-
-		RepositoryResult<Statement> statements = getStatements(null, RDF.TYPE,
-				vVCARD.VCard);
-		while (statements.hasNext()) {
-			Resource vcard = statements.next().getSubject();
-			final Value fnValue = findObject(vcard, vVCARD.fn);
-			Assert.assertNotNull(fnValue);
-			String fn = fnValue.stringValue();
-			final Value vcardValue = findObject(vcard, vVCARD.url);
-			Assert.assertNotNull(vcardValue);
-			String url = vcardValue.stringValue();
-			final Value emailValue = findObject(vcard, vVCARD.email);
-			Assert.assertNotNull(emailValue);
-			String mail = emailValue.stringValue();
-			Assert.assertEquals("Joe Public", fn);
-			Assert.assertEquals("http://example.com/", url);
-			Assert.assertEquals("mailto:joe@example.com", mail);
-		}
-	}
-
-	@Test
-	public void testCategories() throws Exception {
-		assertExtract("/microformats/hcard/36-categories.html");
-		assertModelNotEmpty();
-		assertContains(vVCARD.given_name, "Joe");
-		assertContains(vVCARD.given_name, "john");
-		assertContains(vVCARD.family_name, "doe");
-		assertContains(vVCARD.family_name, "User");
-		assertContains(vVCARD.fn, "john doe");
-		assertContains(vVCARD.fn, "Joe User");
-
-		assertContains(vVCARD.category, "C1");
-		assertContains(vVCARD.category, "C2a");
-		assertContains(vVCARD.category, "C4");
-		assertContains(vVCARD.category, "User");
-		String[] cats = { "C3", "C5", "C6", "C7", "C9", "luser", "D1", "D2",
-				"D3" };
-		for (String cat : cats)
-			assertContains(vVCARD.category, "http://example.com/tag/" + cat);
-
-		assertNotContains(null, vVCARD.category, "D4");
-	}
-
-	@Test
-	public void testSingleton() throws Exception {
-		// this tests probably tests that e just get the first fn and so on
-		assertExtract("/microformats/hcard/37-singleton.html");
-		assertModelNotEmpty();
-		assertStatementsSize(vVCARD.fn, (Value) null, 1);
-		assertContains(vVCARD.fn, "john doe 1");
-
-		assertStatementsSize(RDF.TYPE, vVCARD.Name, 1);
-		assertStatementsSize(vVCARD.given_name, (Value) null, 1);
-		assertContains(vVCARD.given_name, "john");
-		assertStatementsSize(vVCARD.family_name, (Value) null, 1);
-		assertContains(vVCARD.family_name, "doe");
-		assertStatementsSize(vVCARD.sort_string, (Value) null, 1);
-		assertContains(vVCARD.sort_string, "d");
-
-		assertStatementsSize(vVCARD.bday, (Value) null, 1);
-		assertContains(vVCARD.bday, "20060707");
-		assertStatementsSize(vVCARD.rev, (Value) null, 1);
-		assertContains(vVCARD.rev, "20060707");
-		assertStatementsSize(vVCARD.class_, (Value) null, 1);
-		assertContains(vVCARD.class_, "public");
-		assertStatementsSize(vVCARD.tz, (Value) null, 1);
-		assertContains(vVCARD.tz, "+0600");
-
-		// Why 0? because the extractor does not look at geo uF!
-		assertStatementsSize(RDF.TYPE, vVCARD.Location, 0);
-		assertStatementsSize(vVCARD.geo, (Value) null, 2);
-
-		assertNotContains(null, vVCARD.latitude, "123.45");
-		assertNotContains(null, vVCARD.longitude, "67.89");
-
-		assertStatementsSize(vVCARD.uid, (Value) null, 1);
-		assertContains(vVCARD.uid, "unique-id-1");
-	}
-
-	@Test
-	public void testUidFull() throws Exception {
-		assertExtract("/microformats/hcard/38-uid.html");
-		assertModelNotEmpty();
-		assertStatementsSize(RDF.TYPE, vVCARD.VCard, 4);
-		RepositoryResult<Statement> statements = getStatements(null, RDF.TYPE,
-				vVCARD.VCard);
-
-		try {
-			while (statements.hasNext()) {
-				Resource vcard = statements.next().getSubject();
-				Assert.assertNotNull(findObject(vcard, vVCARD.fn));
-				String fn = findObjectAsLiteral(vcard, vVCARD.fn);
-				Assert.assertEquals("Ryan King", fn);
-
-				Assert.assertNotNull(findObject(vcard, vVCARD.n));
-				Resource n = findObjectAsResource(vcard, vVCARD.n);
-				Assert.assertNotNull(n);
-				Assert.assertNotNull(findObject(n, vVCARD.given_name));
-				Assert.assertEquals("Ryan",
-						findObjectAsLiteral(n, vVCARD.given_name));
-				Assert.assertNotNull(findObject(n, vVCARD.family_name));
-				Assert.assertEquals("King",
-						findObjectAsLiteral(n, vVCARD.family_name));
-
-				Assert.assertNotNull(findObject(vcard, vVCARD.url));
-				Resource url = findObjectAsResource(vcard, vVCARD.url);
-
-				Assert.assertNotNull(findObject(vcard, vVCARD.uid));
-				String uid = findObjectAsLiteral(vcard, vVCARD.uid);
-
-				Assert.assertEquals("http://theryanking.com/contact/",
-						url.stringValue());
-				Assert.assertEquals("http://theryanking.com/contact/", uid);
-			}
-		} finally {
-			statements.close();
-		}
-	}
-
-	@Test
-	public void testRomanianWikipedia() throws Exception {
-		assertExtract("/microformats/hcard/40-fn-inside-adr.html");
-		assertModelNotEmpty();
-		assertStatementsSize(RDF.TYPE, vVCARD.VCard, 1);
-		RepositoryResult<Statement> statements = getStatements(null, RDF.TYPE,
-				vVCARD.VCard);
-
-		try {
-			while (statements.hasNext()) {
-				Resource card = statements.next().getSubject();
-				Assert.assertNotNull(findObject(card, vVCARD.fn));
-				String fn = findObjectAsLiteral(card, vVCARD.fn);
-				Assert.assertEquals("Berlin", fn);
-
-				Assert.assertNotNull(findObject(card, vVCARD.org));
-				Resource org = findObjectAsResource(card, vVCARD.org);
-				assertContains(org, RDF.TYPE, vVCARD.Organization);
-				Assert.assertNotNull(org);
-				Assert.assertNotNull(findObject(card, vVCARD.org));
-				Assert.assertNotNull(findObject(org, vVCARD.organization_name));
-				Assert.assertEquals("Berlin",
-						findObjectAsLiteral(org, vVCARD.organization_name));
-
-			}
-		} finally {
-			statements.close();
-		}
-	}
-
-	@Test
-	public void testNoMicroformats() throws Exception, IOException,
-			ExtractionException {
-		extract("/html/html-without-uf.html");
-		assertModelEmpty();
-	}
-
-	@Test
-	public void testBasic() throws Exception {
-		assertExtract("/microformats/hcard/01-tantek-basic.html");
-		assertModelNotEmpty();
-		assertContains(RDF.TYPE, vVCARD.VCard);
-		// assertContains(RDF.TYPE, vVCARD.Organization);
-		assertContains(RDF.TYPE, vVCARD.Name);
-		// assertContains(vVCARD.organization_name, "Technorati");
-		Resource person = findExactlyOneBlankSubject(vVCARD.fn,
-				RDFUtils.literal("Tantek Celik"));
-		Assert.assertNotNull(person);
-		Resource org = findExactlyOneBlankSubject(vVCARD.organization_name,
-				RDFUtils.literal("Technorati"));
-		Assert.assertNotNull(org);
-		assertContains(person, vVCARD.url, RDFUtils.iri("http://tantek.com/"));
-		assertContains(person, vVCARD.n, (Resource) null);
-		assertContains(person, vVCARD.org, (Resource) null);
-	}
-
-	@Test
-	public void testMultipleclassNamesOnVCard() throws Exception {
-		assertExtract("/microformats/hcard/02-multiple-class-names-on-vcard.html");
-		assertModelNotEmpty();
-		assertStatementsSize(RDF.TYPE, vVCARD.VCard, 4);
-		Resource name;
-		RepositoryResult<Statement> statements = getStatements(null, RDF.TYPE,
-				vVCARD.VCard);
-		while (statements.hasNext()) {
-			name = statements.next().getSubject();
-			assertContains(name, vVCARD.fn, "Ryan King");
-		}
-	}
-
-	@Test
-	public void testImpliedNames() throws Exception {
-		String[] ns = { "Ryan King", "King", "Ryan",
-
-		"Ryan King", "King", "Ryan",
-
-		"Ryan King", "King", "Ryan",
-
-		"Brian Suda", "Suda", "Brian",
-
-		"King, Ryan", "King", "Ryan",
-
-		"King, R", "King", "R",
-
-		"King R", "R", "King",
-
-		"R King", "King", "R",
-
-		"King R.", "R.", "King",
-
-		"Jesse James Garrett", "Garrett", "Jesse",
-
-		"Thomas Vander Wall", "Wall", "Thomas" };
-		List<String> NAMES = Arrays.asList(ns);
-		assertExtract("/microformats/hcard/03-implied-n.html");
-		assertModelNotEmpty();
-
-		RepositoryResult<Statement> statements = getStatements(null, vVCARD.fn,
-				null);
-		Resource vcard;
-		int count = 0;
-		try {
-			while (statements.hasNext()) {
-				vcard = statements.next().getSubject();
-				assertContains(vcard, RDF.TYPE, vVCARD.VCard);
-				Resource name = findObjectAsResource(vcard, vVCARD.n);
-
-				final String objLiteral = findObjectAsLiteral(vcard, vVCARD.fn);
-				int idx = NAMES.indexOf(objLiteral);
-				Assert.assertTrue(
-						String.format("not in names: '%s'", objLiteral),
-						idx >= 0);
-				Assert.assertEquals(NAMES.get(idx + 1),
-						findObjectAsLiteral(name, vVCARD.family_name));
-				Assert.assertEquals(NAMES.get(idx + 2),
-						findObjectAsLiteral(name, vVCARD.given_name));
-				count++;
-			}
-		} finally {
-			statements.close();
-		}
-		Assert.assertEquals(10, count);
-	}
-
-	@Test
-	public void testIgnoreUnknowns() throws Exception {
-		assertExtract("/microformats/hcard/04-ignore-unknowns.html");
-		assertDefaultVCard();
-		assertContains(vVCARD.fn, "Ryan King");
-		assertContains(vVCARD.n, (Resource) null);
-		assertContains(null, "Ryan");
-		assertContains(vVCARD.given_name, "Ryan");
-		assertContains(vVCARD.family_name, "King");
-	}
-
-	@Test
-	public void testMailto1() throws Exception {
-		assertExtract("/microformats/hcard/05-mailto-1.html");
-		assertDefaultVCard();
-		assertContains(vVCARD.fn, "Ryan King");
-		assertContains(RDF.TYPE, vVCARD.Name);
-
-		assertContains(vVCARD.email, RDFUtils.iri("mailto:ryan@technorati.com"));
-
-		assertContains(vVCARD.given_name, "Ryan");
-		assertContains(vVCARD.family_name, "King");
-	}
-
-	@Test
-	public void testMailto2() throws Exception {
-		assertExtract("/microformats/hcard/06-mailto-2.html");
-		assertDefaultVCard();
-		assertContains(vVCARD.fn, "Brian Suda");
-
-		assertContains(vVCARD.email, RDFUtils.iri("mailto:brian@example.com"));
-		assertContains(vVCARD.given_name, "Brian");
-		assertContains(vVCARD.family_name, "Suda");
-	}
-
-	@Test
-	public void testRelativeUrl() throws Exception {
-		assertExtract("/microformats/hcard/07-relative-url.html");
-		assertDefaultVCard();
-		assertJohn();
-		assertContains(vVCARD.url, RDFUtils.iri(baseIRI + "home/blah"));
-	}
-
-	@Test
-	public void testRelativeUrlBase() throws Exception {
-		assertExtract("/microformats/hcard/08-relative-url-base.html");
-		assertDefaultVCard();
-		assertContains(vVCARD.url, RDFUtils.iri(baseIRI + "home/blah"));
-		assertJohn();
-	}
-
-	@Test
-	public void testRelativeUrlXmlBase1() throws Exception {
-		assertExtract("/microformats/hcard/09-relative-url-xmlbase-1.html");
-		assertDefaultVCard();
-		assertContains(vVCARD.url, RDFUtils.iri((baseIRI + "home/blah")));
-		assertJohn();
-	}
-
-	@Test
-	public void testRelativeUrlXmlBase2() throws Exception {
-		assertExtract("/microformats/hcard/10-relative-url-xmlbase-2.html");
-		assertDefaultVCard();
-		assertContains(vVCARD.url, RDFUtils.iri((baseIRI + "home/blah")));
-		assertJohn();
-	}
-
-	@Test
-	public void testMultipleUrls() throws Exception {
-		assertExtract("/microformats/hcard/11-multiple-urls.html");
-		assertDefaultVCard();
-		assertContains(vVCARD.url, RDFUtils.iri(("http://example.com/foo")));
-		assertContains(vVCARD.url, RDFUtils.iri(("http://example.com/bar")));
-
-		assertJohn();
-	}
-
-	@Test
-	public void testImageSrc() throws Exception {
-		assertExtract("/microformats/hcard/12-img-src-url.html");
-		assertDefaultVCard();
-		assertJohn();
-	}
-
-	@Test
-	public void testPhotoLogo() throws Exception {
-		assertExtract("/microformats/hcard/13-photo-logo.html");
-		assertDefaultVCard();
-		assertContains(vVCARD.photo,
-				RDFUtils.iri(("http://example.org/picture1.png")));
-		assertContains(vVCARD.photo,
-				RDFUtils.iri(("http://example.org/picture2.png")));
-		assertContains(vVCARD.logo,
-				RDFUtils.iri(("http://example.org/picture1.png")));
-		assertContains(vVCARD.logo,
-				RDFUtils.iri(("http://example.org/picture2.png")));
-		assertJohn();
-	}
-
-	@Test
-	public void testImgSrcDataUrl() throws Exception {
-		assertExtract("/microformats/hcard/14-img-src-data-url.html");
-		assertDefaultVCard();
-		Resource data = RDFUtils.iri("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAMAAAAp4XiDAAAABGdBTUEAAK/"
-		+ "INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAASUExURf///8zMzJmZmWZmZ"
-		+ "jMzMwAAAPOPemkAAAM1SURBVHjaYmBgYGBkYQUBFkYWFiCPCchixQAMCCZAACF0MAMVM4K4TFh0IGsBCC"
-		+ "AkOxhYmBnAAKaHhZkZmxaAAGJgYIbpYGBihGgBWsTMzMwE4jIhaWGAYoAAYmCECDExYAcwGxkg5oNIgAB"
-		+ "igDqLARdgZmGB2wICrKwAAcSA3xKgIxlZ0PwCEEAMBCxhgHoWSQtAADFAAxgfYEJ1GEAAQbQw4tUCsocB"
-		+ "YQVAADEgu4uRkREeUCwszEwwLhOKLQABhNDCBA4aSDgwwhIAJKqYUPwCEEAMUK/AUwnc9aywJMCI7DAgA"
-		+ "AggBohZ8JTBhGIJzCoWZL8ABBCYidAB8RUjWppkYUG2BSCAGMDqEMZiswUtXgACiAHsFYixTMywGGLGpgU"
-		+ "WYgABxAA2mQkWCMyMqFoYmdD8ACQAAogBHJHMrCxg1cyIiICmCkYWDFsAAgiihYmZCewFFpR0BfI3LLch+"
-		+ "QUggBiQ0iQjEyMDmh54qCBlUIAAYsCRJsElADQvgWKTlRGeKwECiAF3XgGmMEYQYADZzcoA9z5AAMG9RQC"
-		+ "AtEC9DxBADFiyFyMjVi0wABBAWLQwQdIiuhYGWJIACCBg+KKUJ9BoBRdS2LQALQMIIGDQIEmwAO1kYcVWH"
-		+ "CDZAhBAqFqYmOAxj2YNtAwDAYAAYmDEiBYWzHKKkRERYiwAAYSphZEZwxZGZiZQVEJTJkAAMTCyokc7M5o"
-		+ "ORlC5wcoEjxeAAAJqQXU0UB6W5WFmABMtEzMi1wEEEFAbE0YyAUuzMMEsYQalMkQSBQggUDmNPU3C9IA4L"
-		+ "CxI+QUggEBiKOU8yExgqccCL3chnkPKlQABhGo6ejHBDKmdUHMlQAAhhQvQaGZGkBIkjcAMywLmI+VKgAB"
-		+ "CSowsTJhZkhlWXiBpAQggYBqBZl9GVOdBcz0LZqEEEEAMqLULMBLg1THWog9IAwQQA0qiZcRW5aPbAhBAD"
-		+ "Cg1El4tMAAQQAxoiZYZXnTh1AIQQAzo2QlYpDDjcBgrxGEAAcSAJTthswmiBUwDBBC2GpkZJTaRvQ+mAQK"
-		+ "IAUuuxdZWQvILQABBmSxMjBj5EpcWgACCMoFOYYSpZyHQHgMIMACt2hmoVEikCQAAAABJRU5ErkJggg==");
-
-		assertContains(vVCARD.photo, data);
-		assertContains(vVCARD.logo, data);
-		assertJohn();
-	}
-
-	@Test
-	public void testHonorificAdditionalSingle() throws Exception {
-		assertExtract("/microformats/hcard/15-honorific-additional-single.html");
-		assertDefaultVCard();
-		assertContains(vVCARD.fn, "Mr. John Maurice Doe, Ph.D.");
-
-		assertContains(vVCARD.honorific_prefix, "Mr.");
-		assertContains(vVCARD.honorific_suffix, "Ph.D.");
-
-		assertContains(vVCARD.given_name, "John");
-		assertContains(vVCARD.additional_name, "Maurice");
-		assertContains(vVCARD.family_name, "Doe");
-	}
-
-	@Test
-	public void testHonorificAdditionalMultiple() throws Exception {
-		assertExtract("/microformats/hcard/16-honorific-additional-multiple.html");
-		assertDefaultVCard();
-		assertContains(vVCARD.honorific_prefix, "Mr.");
-		assertContains(vVCARD.honorific_prefix, "Dr.");
-
-		assertContains(vVCARD.honorific_suffix, "Ph.D.");
-		assertContains(vVCARD.honorific_suffix, "J.D.");
-
-		assertContains(vVCARD.given_name, "John");
-		assertContains(vVCARD.additional_name, "Maurice");
-		assertContains(vVCARD.additional_name, "Benjamin");
-		assertContains(vVCARD.family_name, "Doe");
-
-		assertContains(vVCARD.fn,
-				"Mr. Dr. John Maurice Benjamin Doe Ph.D., J.D.");
-	}
-
-	@Test
-	public void testEMailNotUri() throws Exception {
-		assertExtract("/microformats/hcard/17-email-not-uri.html");
-		assertDefaultVCard();
-		assertJohn();
-		assertContains(vVCARD.email, RDFUtils.iri("mailto:john@example.com"));
-	}
-
-	@Test
-	public void testObjectDataHttpUri() throws Exception {
-		assertExtract("/microformats/hcard/18-object-data-http-uri.html");
-		assertDefaultVCard();
-		assertJohn();
-	}
-
-	@Ignore
-	@Test
-	public void testObjectDataDataUri() throws Exception {
-		assertExtract("/microformats/hcard/19-object-data-data-uri.html");
-		assertDefaultVCard();
-		assertJohn();
-
-		assertContains(vVCARD.photo, (Resource) null);
-		assertContains(vVCARD.logo, (Resource) null);
-	}
-
-	@Test
-	public void testImgAlt() throws Exception {
-		assertExtract("/microformats/hcard/20-image-alt.html");
-		assertDefaultVCard();
-		Resource uri = RDFUtils.iri("http://example.com/foo.png");
-		assertContains(vVCARD.photo, uri);
-		assertContains(vVCARD.logo, uri);
-		assertJohn();
-	}
-
-	@Test
-	public void testAdr() throws Exception {
-		assertExtract("/microformats/hcard/22-adr.html");
-		assertDefaultVCard();
-		assertJohn();
-		assertStatementsSize(RDF.TYPE, vVCARD.Address, 0);
-	}
-
-	@Test
-	public void testBirthDayDate() throws Exception {
-		assertExtract("/microformats/hcard/27-bday-date.html");
-		assertModelNotEmpty();
-		assertContains(vVCARD.fn, "john doe");
-		assertContains(vVCARD.given_name, "john");
-		assertContains(vVCARD.family_name, "doe");
-		assertContains(vVCARD.bday, "2000-01-01");
-	}
-
-	@Test
-	public void testBirthDayDateTime() throws Exception {
-		assertExtract("/microformats/hcard/28-bday-datetime.html");
-		assertModelNotEmpty();
-		assertContains(vVCARD.fn, "john doe");
-		assertContains(vVCARD.given_name, "john");
-		assertContains(vVCARD.family_name, "doe");
-		assertContains(vVCARD.bday, "2000-01-01T00:00:00");
-	}
-
-	@Test
-	public void testBirthDayDateTimeTimeZone() throws Exception {
-		assertExtract("/microformats/hcard/29-bday-datetime-timezone.html");
-		assertModelNotEmpty();
-		assertContains(vVCARD.fn, "john doe");
-		assertContains(vVCARD.given_name, "john");
-		assertContains(vVCARD.family_name, "doe");
-		assertContains(vVCARD.bday, "2000-01-01T00:00:00-0800");
-	}
-
-	@Test
-	public void testArea() throws Exception {
-		assertExtract("/microformats/hcard/33-area.html");
-		assertModelNotEmpty();
-		assertStatementsSize(RDF.TYPE, vVCARD.VCard, 5);
-		RepositoryResult<Statement> statements = getStatements(null, RDF.TYPE,
-				vVCARD.VCard);
-		try {
-			while (statements.hasNext()) {
-				Resource vcard = statements.next().getSubject();
-
-				Assert.assertNotNull(findObject(vcard, vVCARD.fn));
-				Assert.assertEquals("Joe Public",
-						findObjectAsLiteral(vcard, vVCARD.fn));
-				Assert.assertNotNull(findObject(vcard, vVCARD.url));
-				String url = findObjectAsLiteral(vcard, vVCARD.url);
-				Assert.assertNotNull(findObject(vcard, vVCARD.email));
-				String mail = findObjectAsLiteral(vcard, vVCARD.email);
-				Assert.assertEquals("http://example.com/", url);
-				Assert.assertEquals("mailto:joe@example.com", mail);
-			}
-		} finally {
-			statements.close();
-		}
-
-		// Check that there are 4 organizations.
-		assertStatementsSize(RDF.TYPE, vVCARD.Organization, 4);
-		statements = getStatements(null, RDF.TYPE, vVCARD.Organization);
-		try {
-			while (statements.hasNext()) {
-				Resource org = statements.next().getSubject();
-				assertContains(null, vVCARD.org, org);
-				Assert.assertNotNull(findObject(org, vVCARD.organization_name));
-				Assert.assertEquals("Joe Public",
-						findObjectAsLiteral(org, vVCARD.organization_name));
-			}
-		} finally {
-			statements.close();
-		}
-	}
-
-	@Test
-	public void testNotes() throws Exception {
-		final String[] NOTES = { "Note 1", "Note 3",
-				"Note 4 with a ; and a , to be escaped" };
-
-		assertExtract("/microformats/hcard/34-notes.html");
-		assertModelNotEmpty();
-		RepositoryResult<Statement> statements = getStatements(null, RDF.TYPE,
-				vVCARD.VCard);
-		try {
-			while (statements.hasNext()) {
-				Resource vcard = statements.next().getSubject();
-				String fn = findObjectAsLiteral(vcard, vVCARD.fn);
-				String mail = findObjectAsLiteral(vcard, vVCARD.email);
-				Assert.assertEquals("Joe Public", fn);
-				Assert.assertEquals("mailto:joe@example.com", mail);
-			}
-		} finally {
-			statements.close();
-		}
-		for (String note : NOTES) {
-			assertContains(vVCARD.note, note);
-		}
-	}
-
-	@Test
-	public void testIncludePattern() throws Exception {
-		assertExtract("/microformats/hcard/35-include-pattern.html");
-		assertModelNotEmpty();
-		assertStatementsSize(RDF.TYPE, vVCARD.VCard, 3);
-
-		RepositoryResult<Statement> statements = getStatements(null, RDF.TYPE,
-				vVCARD.Name);
-		try {
-			while (statements.hasNext()) {
-				Resource name = statements.next().getSubject();
-				Assert.assertNotNull(findObject(name, vVCARD.given_name));
-				String gn = findObjectAsLiteral(name, vVCARD.given_name);
-				Assert.assertEquals("James", gn);
-				Assert.assertNotNull(findObject(name, vVCARD.family_name));
-				String fn = findObjectAsLiteral(name, vVCARD.family_name);
-				Assert.assertEquals("Levine", fn);
-			}
-		} finally {
-			statements.close();
-		}
-
-		assertStatementsSize(RDF.TYPE, vVCARD.Organization, 2);
-		statements = getStatements(null, RDF.TYPE, vVCARD.Organization);
-		try {
-			while (statements.hasNext()) {
-				Resource org = statements.next().getSubject();
-				Assert.assertNotNull(findObject(org, vVCARD.organization_name));
-				Assert.assertEquals("SimplyHired",
-						findObjectAsLiteral(org, vVCARD.organization_name));
-
-				RepositoryResult<Statement> statements2 = getStatements(null,
-						vVCARD.org, org);
-				try {
-					while (statements2.hasNext()) {
-						Resource vcard = statements2.next().getSubject();
-						Assert.assertNotNull(findObject(vcard, vVCARD.title));
-						Assert.assertEquals("Microformat Brainstormer",
-								findObjectAsLiteral(vcard, vVCARD.title));
-					}
-				} finally {
-					statements2.close();
-				}
-			}
-		} finally {
-			statements.close();
-		}
-	}
-
-	@Test
-	public void testUid() throws Exception {
-		assertExtract("/microformats/hcard/38-uid.html");
-		assertModelNotEmpty();
-		assertStatementsSize(RDF.TYPE, vVCARD.VCard, 4);
-		RepositoryResult<Statement> iter = getStatements(null, RDF.TYPE,
-				vVCARD.VCard);
-		while (iter.hasNext()) {
-			Resource vcard = iter.next().getSubject();
-			Assert.assertNotNull(findObject(vcard, vVCARD.fn));
-			String fn = findObjectAsLiteral(vcard, vVCARD.fn);
-			Assert.assertNotNull(findObject(vcard, vVCARD.url));
-			String url = findObjectAsLiteral(vcard, vVCARD.url);
-			Assert.assertNotNull(findObject(vcard, vVCARD.uid));
-			String uid = findObjectAsLiteral(vcard, vVCARD.uid);
-			Assert.assertEquals("Ryan King", fn);
-			Assert.assertEquals("http://theryanking.com/contact/", url);
-			Assert.assertEquals("http://theryanking.com/contact/", uid);
-
-		}
-	}
-
-	@Test
-	public void testIgnoreChildren() throws Exception {
-		assertExtract("/microformats/hcard/41-ignore-children.html");
-		assertModelNotEmpty();
-		assertStatementsSize(RDF.TYPE, vVCARD.VCard, 1);
-		assertContains(vVCARD.fn, "Melanie Kl\u00f6\u00df");
-		assertContains(vVCARD.email, RDFUtils.iri("mailto:mkloes@gmail.com"));
-		assertContains(vVCARD.adr, (Resource) null);
-		assertNotContains(null, vVCARD.postal_code, "53127");
-		assertNotContains(null, vVCARD.locality, "Bonn");
-		assertNotContains(null, vVCARD.street_address, "Ippendorfer Weg. 24");
-		assertNotContains(null, vVCARD.country_name, "Germany");
-	}
-
-	/**
-	 * Tests that the HCardName data is not cumulative and is cleaned up at each
-	 * extraction.
-	 *
-	 * @throws Exception
-	 */
-	@Test
-	public void testCumulativeHNames() throws Exception {
-		assertExtract("/microformats/hcard/linkedin-michelemostarda.html");
-		assertModelNotEmpty();
-		assertStatementsSize(vVCARD.given_name, "Michele", 7);
-		assertStatementsSize(vVCARD.family_name, "Mostarda", 7);
-	}
-
-	/**
-	 * Tests the detection and prevention of the inclusion of an ancestor by a
-	 * sibling node. This test is related to issue <a
-	 * href="https://issues.apache.org/jira/browse/ANY23-58">ANY23-58</a>.
-	 *
-	 * @throws IOException
-	 * @throws ExtractionException
-	 */
-	@Test
-	public void testInfiniteLoop() throws IOException, ExtractionException {
-		assertExtract("/microformats/hcard/infinite-loop.html", false);
-		assertIssue(IssueReport.IssueLevel.WARNING,
-				".*Current node tries to include an ancestor node.*");
-	}
-
-	/**
-	 * Tests extractor performances. This test is related to issue <a
-	 * href="https://issues.apache.org/jira/browse/ANY23-76">ANY23-76</a>.
-	 */
-	@Ignore
-	@Test(timeout = 30 * 1000)
-	public void testExtractionPerformance() {
-		assertExtract("/microformats/hcard/performance.html");
-	}
-
-	private void assertDefaultVCard() throws Exception {
-		assertModelNotEmpty();
-		assertStatementsSize(RDF.TYPE, vVCARD.VCard, 1);
-	}
-
-	private void assertJohn() throws Exception {
-		assertContains(vVCARD.fn, "John Doe");
-		assertContains(vVCARD.given_name, "John");
-		assertContains(vVCARD.family_name, "Doe");
-	}
+  private static final VCard vVCARD = VCard.getInstance();
+
+  protected ExtractorFactory<?> getExtractorFactory() {
+    return new HCardExtractorFactory();
+  }
+
+  @Test
+  public void testEMailNotUriReal() throws Exception {
+    assertExtract("/microformats/hcard/17-email-not-uri.html");
+    assertDefaultVCard();
+    assertJohn();
+    assertContains(vVCARD.email, RDFUtils.iri("mailto:john@example.com"));
+  }
+
+  @Test
+  public void testTel() throws Exception {
+    assertExtract("/microformats/hcard/21-tel.html");
+    assertDefaultVCard();
+    String[] tels = { "+1.415.555.1231", "+1.415.555.1235",
+            "+1.415.555.1236", "+1.415.555.1237", "+1.415.555.1238",
+            "+1.415.555.1239", "+1.415.555.1240", "+1.415.555.1241",
+            "+1.415.555.1242", "+1.415.555.1243" };
+    for (String tel : tels) {
+      assertContains(vVCARD.tel, RDFUtils.iri("tel:" + tel));
+    }
+    Resource telResource = RDFUtils.iri("tel:+14155551233");
+    assertContains(vVCARD.fax, telResource);
+    assertContains(vVCARD.workTel, telResource);
+    assertContains(vVCARD.homeTel, telResource);
+    assertJohn();
+  }
+
+  @Test
+  public void testAbbrTitleEverything() throws Exception {
+    assertExtract("/microformats/hcard/23-abbr-title-everything.html");
+    assertDefaultVCard();
+
+    assertContains(vVCARD.fn, "John Doe");
+    assertContains(vVCARD.nickname, "JJ");
+
+    assertContains(vVCARD.given_name, "Jonathan");
+    assertContains(vVCARD.additional_name, "John");
+    assertContains(vVCARD.family_name, "Doe-Smith");
+    assertContains(vVCARD.honorific_suffix, "Medical Doctor");
+
+    assertContains(vVCARD.title, "President");
+    assertContains(vVCARD.role, "Chief");
+    assertContains(vVCARD.tz, "-0700");
+    assertContains(vVCARD.bday, "2006-04-04");
+    assertContains(vVCARD.tel, RDFUtils.iri("tel:415.555.1234"));
+    assertContains(vVCARD.uid, "abcdefghijklmnopqrstuvwxyz");
+    assertContains(vVCARD.class_, "public");
+    assertContains(vVCARD.note, "this is a note");
+    assertContains(vVCARD.organization_name, "Intellicorp");
+    assertContains(vVCARD.organization_unit, "Intelligence");
+
+    // We define the property in this extractor _but_ we do not parse it.
+    assertContains(vVCARD.geo, (Resource) null);
+    // Thus we do not cointain these.
+    // The interaction is in @link RDFMergerTest.java
+    assertNotContains(RDF.TYPE, vVCARD.Location);
+    assertNotContains(null, vVCARD.latitude, "37.77");
+    assertNotContains(null, vVCARD.longitude, "-122.41");
+
+    // see above
+    assertContains(vVCARD.adr, (Resource) null);
+    assertNotContains(RDF.TYPE, vVCARD.Address);
+    assertNotContains(null, vVCARD.post_office_box, "Box 1234");
+    assertNotContains(null, vVCARD.extended_address, "Suite 100");
+    assertNotContains(null, vVCARD.street_address, "123 Fake Street");
+    assertNotContains(null, vVCARD.locality, "San Francisco");
+    assertNotContains(null, vVCARD.region, "California");
+    assertNotContains(null, vVCARD.postal_code, "12345-6789");
+    assertNotContains(null, vVCARD.country_name, "United States of America");
+    assertNotContains(null, vVCARD.addressType, "work");
+  }
+
+  @Test
+  public void testGeoAbbr() throws Exception {
+    assertExtract("/microformats/hcard/25-geo-abbr.html");
+    assertModelNotEmpty();
+    assertContains(vVCARD.fn, "Paradise");
+    assertContains(RDF.TYPE, vVCARD.Organization);
+    assertContains(vVCARD.organization_name, "Paradise");
+    // See above: geo property yes, gteo blank node no.
+    assertContains(vVCARD.geo, (Resource) null);
+    assertNotContains(RDF.TYPE, vVCARD.Location);
+    assertNotContains(null, vVCARD.latitude, "30.267991");
+    assertNotContains(null, vVCARD.longitude, "-97.739568");
+  }
+
+  @Test
+  public void testAncestors() throws Exception {
+    assertExtract("/microformats/hcard/26-ancestors.html");
+    assertModelNotEmpty();
+
+    assertContains(vVCARD.fn, "John Doe");
+    assertNotContains(null, vVCARD.fn,
+            "Mister Jonathan John Doe-Smith Medical Doctor");
+    assertContains(vVCARD.nickname, "JJ");
+    assertNotContains(RDF.TYPE, vVCARD.Address);
+    assertContains(vVCARD.tz, "-0700");
+    assertContains(vVCARD.title, "President");
+    assertContains(vVCARD.role, "Chief");
+    assertContains(vVCARD.organization_name, "Intellicorp");
+    assertContains(vVCARD.organization_unit, "Intelligence");
+
+    assertContains(vVCARD.tel, RDFUtils.iri("tel:415.555.1234"));
+    assertContains(vVCARD.uid, "abcdefghijklmnopqrstuvwxyz");
+    assertContains(vVCARD.note, "this is a note");
+    assertContains(vVCARD.class_, "public");
+
+    assertNotContains(RDF.TYPE, vVCARD.Location);
+    assertContains(vVCARD.geo, (Resource) null);
+    assertNotContains(null, vVCARD.latitude, "37.77");
+    assertNotContains(null, vVCARD.longitude, "-122.41");
+
+    assertContains(RDF.TYPE, vVCARD.Name);
+    assertContains(vVCARD.additional_name, "John");
+    assertContains(vVCARD.given_name, "Jonathan");
+    assertContains(vVCARD.family_name, "Doe-Smith");
+    assertContains(vVCARD.honorific_prefix, "Mister");
+    assertContains(vVCARD.honorific_suffix, "Medical Doctor");
+
+    assertNotContains(null, vVCARD.post_office_box, "Box 1234");
+    assertNotContains(null, vVCARD.extended_address, "Suite 100");
+    assertNotContains(null, vVCARD.street_address, "123 Fake Street");
+    assertNotContains(null, vVCARD.locality, "San Francisco");
+    assertNotContains(null, vVCARD.region, "California");
+    assertNotContains(null, vVCARD.postal_code, "12345-6789");
+    assertNotContains(null, vVCARD.country_name, "United States of America");
+    assertNotContains(null, vVCARD.addressType, "work");
+  }
+
+  @Test
+  public void testfnOrg() throws Exception {
+    assertExtract("/microformats/hcard/30-fn-org.html");
+    assertModelNotEmpty();
+    assertStatementsSize(RDF.TYPE, vVCARD.VCard, 4);
+    RepositoryResult<Statement> repositoryResult = getStatements(null,
+            RDF.TYPE, vVCARD.VCard);
+    try {
+      while (repositoryResult.hasNext()) {
+        Resource card = repositoryResult.next().getSubject();
+        assertNotNull(findObject(card, vVCARD.fn));
+        String name = findObjectAsLiteral(card, vVCARD.fn);
+
+        assertNotNull(findObject(card, vVCARD.org));
+        Resource org = findObjectAsResource(card, vVCARD.org);
+        assertNotNull(findObject(org, vVCARD.organization_name));
+
+        if (name.equals("Dan Connolly")) {
+          assertNotNull(findObject(card, vVCARD.n));
+          assertFalse(name.equals(org.stringValue()));
+        }
+      }
+    } finally {
+      repositoryResult.close();
+    }
+  }
+
+  @Test
+  public void testInclude() throws Exception {
+    assertExtract("/microformats/hcard/31-include.html");
+    assertModelNotEmpty();
+    assertStatementsSize(RDF.TYPE, vVCARD.VCard, 3);
+    assertStatementsSize(vVCARD.email, (Value) null, 3);
+
+    RepositoryResult<Statement> statements = getStatements(null, RDF.TYPE,
+            vVCARD.VCard);
+    try {
+      while (statements.hasNext()) {
+        Resource vcard = statements.next().getSubject();
+
+        assertNotNull(findObject(vcard, vVCARD.fn));
+        assertEquals("Brian Suda",
+                findObjectAsLiteral(vcard, vVCARD.fn));
+
+        assertNotNull(findObject(vcard, vVCARD.url));
+        String url = findObjectAsResource(vcard, vVCARD.url)
+                .stringValue();
+        assertEquals("http://suda.co.uk/", url);
+
+        Resource name = findObjectAsResource(vcard, vVCARD.n);
+        assertEquals("Brian",
+                findObjectAsLiteral(name, vVCARD.given_name));
+        assertEquals("Suda",
+                findObjectAsLiteral(name, vVCARD.family_name));
+
+        // Included data.
+        assertNotNull(findObject(vcard, vVCARD.email));
+        String mail = findObjectAsLiteral(vcard, vVCARD.email);
+        assertEquals("mailto:correct@example.com", mail);
+      }
+    } finally {
+      statements.close();
+    }
+  }
+
+  @Test
+  public void testHeader() throws Exception {
+    assertExtract("/microformats/hcard/32-header.html");
+    assertModelNotEmpty();
+    // check fn, name, family, nick.
+    assertJohn();
+
+    RepositoryResult<Statement> statements = getStatements(null, RDF.TYPE,
+            vVCARD.VCard);
+    try {
+      Resource example = RDFUtils.iri("http://example.org/");
+      while (statements.hasNext()) {
+        Resource card = statements.next().getSubject();
+        assertNotNull(findObject(card, vVCARD.fn));
+
+        String fn = findObjectAsLiteral(card, vVCARD.fn);
+        if ("Jane Doe".equals(fn)) {
+          assertNotFound(card, vVCARD.org);
+        } else {
+          assertTrue("John Doe".equals(fn)
+                  || "Brian Suda".equals(fn));
+
+          assertNotNull(findObject(card, vVCARD.url));
+          assertEquals(example,
+                  findObjectAsResource(card, vVCARD.url));
+
+          assertNotNull(findObject(card, vVCARD.org));
+          Resource org = findObjectAsResource(card, vVCARD.org);
+          assertContains(org, RDF.TYPE, vVCARD.Organization);
+          assertNotNull(org);
+          assertNotNull(findObject(card, vVCARD.org));
+          assertNotNull(findObject(org,
+                  vVCARD.organization_name));
+          assertEquals("example.org",
+                  findObjectAsLiteral(org, vVCARD.organization_name));
+        }
+      }
+      // Just to be sure there are no spurious statements.
+      // assertStatementsSize(VCARD.org, null, 2);
+      assertStatementsSize(vVCARD.url, example, 2);
+    } finally {
+      statements.close();
+    }
+  }
+
+  @Test
+  public void testAreaFull() throws Exception {
+    assertExtract("/microformats/hcard/33-area.html");
+    assertModelNotEmpty();
+    assertStatementsSize(RDF.TYPE, vVCARD.VCard, 5);
+
+    RepositoryResult<Statement> statements = getStatements(null, RDF.TYPE,
+            vVCARD.VCard);
+    while (statements.hasNext()) {
+      Resource vcard = statements.next().getSubject();
+      final Value fnValue = findObject(vcard, vVCARD.fn);
+      assertNotNull(fnValue);
+      String fn = fnValue.stringValue();
+      final Value vcardValue = findObject(vcard, vVCARD.url);
+      assertNotNull(vcardValue);
+      String url = vcardValue.stringValue();
+      final Value emailValue = findObject(vcard, vVCARD.email);
+      assertNotNull(emailValue);
+      String mail = emailValue.stringValue();
+      assertEquals("Joe Public", fn);
+      assertEquals("http://example.com/", url);
+      assertEquals("mailto:joe@example.com", mail);
+    }
+  }
+
+  @Test
+  public void testCategories() throws Exception {
+    assertExtract("/microformats/hcard/36-categories.html");
+    assertModelNotEmpty();
+    assertContains(vVCARD.given_name, "Joe");
+    assertContains(vVCARD.given_name, "john");
+    assertContains(vVCARD.family_name, "doe");
+    assertContains(vVCARD.family_name, "User");
+    assertContains(vVCARD.fn, "john doe");
+    assertContains(vVCARD.fn, "Joe User");
+
+    assertContains(vVCARD.category, "C1");
+    assertContains(vVCARD.category, "C2a");
+    assertContains(vVCARD.category, "C4");
+    assertContains(vVCARD.category, "User");
+    String[] cats = { "C3", "C5", "C6", "C7", "C9", "luser", "D1", "D2",
+    "D3" };
+    for (String cat : cats)
+      assertContains(vVCARD.category, "http://example.com/tag/" + cat);
+
+    assertNotContains(null, vVCARD.category, "D4");
+  }
+
+  @Test
+  public void testSingleton() throws Exception {
+    // this tests probably tests that e just get the first fn and so on
+    assertExtract("/microformats/hcard/37-singleton.html");
+    assertModelNotEmpty();
+    assertStatementsSize(vVCARD.fn, (Value) null, 1);
+    assertContains(vVCARD.fn, "john doe 1");
+
+    assertStatementsSize(RDF.TYPE, vVCARD.Name, 1);
+    assertStatementsSize(vVCARD.given_name, (Value) null, 1);
+    assertContains(vVCARD.given_name, "john");
+    assertStatementsSize(vVCARD.family_name, (Value) null, 1);
+    assertContains(vVCARD.family_name, "doe");
+    assertStatementsSize(vVCARD.sort_string, (Value) null, 1);
+    assertContains(vVCARD.sort_string, "d");
+
+    assertStatementsSize(vVCARD.bday, (Value) null, 1);
+    assertContains(vVCARD.bday, "20060707");
+    assertStatementsSize(vVCARD.rev, (Value) null, 1);
+    assertContains(vVCARD.rev, "20060707");
+    assertStatementsSize(vVCARD.class_, (Value) null, 1);
+    assertContains(vVCARD.class_, "public");
+    assertStatementsSize(vVCARD.tz, (Value) null, 1);
+    assertContains(vVCARD.tz, "+0600");
+
+    // Why 0? because the extractor does not look at geo uF!
+    assertStatementsSize(RDF.TYPE, vVCARD.Location, 0);
+    assertStatementsSize(vVCARD.geo, (Value) null, 2);
+
+    assertNotContains(null, vVCARD.latitude, "123.45");
+    assertNotContains(null, vVCARD.longitude, "67.89");
+
+    assertStatementsSize(vVCARD.uid, (Value) null, 1);
+    assertContains(vVCARD.uid, "unique-id-1");
+  }
+
+  @Test
+  public void testUidFull() throws Exception {
+    assertExtract("/microformats/hcard/38-uid.html");
+    assertModelNotEmpty();
+    assertStatementsSize(RDF.TYPE, vVCARD.VCard, 4);
+    RepositoryResult<Statement> statements = getStatements(null, RDF.TYPE,
+            vVCARD.VCard);
+
+    try {
+      while (statements.hasNext()) {
+        Resource vcard = statements.next().getSubject();
+        assertNotNull(findObject(vcard, vVCARD.fn));
+        String fn = findObjectAsLiteral(vcard, vVCARD.fn);
+        assertEquals("Ryan King", fn);
+
+        assertNotNull(findObject(vcard, vVCARD.n));
+        Resource n = findObjectAsResource(vcard, vVCARD.n);
+        assertNotNull(n);
+        assertNotNull(findObject(n, vVCARD.given_name));
+        assertEquals("Ryan",
+                findObjectAsLiteral(n, vVCARD.given_name));
+        assertNotNull(findObject(n, vVCARD.family_name));
+        assertEquals("King",
+                findObjectAsLiteral(n, vVCARD.family_name));
+
+        assertNotNull(findObject(vcard, vVCARD.url));
+        Resource url = findObjectAsResource(vcard, vVCARD.url);
+
+        assertNotNull(findObject(vcard, vVCARD.uid));
+        String uid = findObjectAsLiteral(vcard, vVCARD.uid);
+
+        assertEquals("http://theryanking.com/contact/",
+                url.stringValue());
+        assertEquals("http://theryanking.com/contact/", uid);
+      }
+    } finally {
+      statements.close();
+    }
+  }
+
+  @Test
+  public void testRomanianWikipedia() throws Exception {
+    assertExtract("/microformats/hcard/40-fn-inside-adr.html");
+    assertModelNotEmpty();
+    assertStatementsSize(RDF.TYPE, vVCARD.VCard, 1);
+    RepositoryResult<Statement> statements = getStatements(null, RDF.TYPE,
+            vVCARD.VCard);
+
+    try {
+      while (statements.hasNext()) {
+        Resource card = statements.next().getSubject();
+        assertNotNull(findObject(card, vVCARD.fn));
+        String fn = findObjectAsLiteral(card, vVCARD.fn);
+        assertEquals("Berlin", fn);
+
+        assertNotNull(findObject(card, vVCARD.org));
+        Resource org = findObjectAsResource(card, vVCARD.org);
+        assertContains(org, RDF.TYPE, vVCARD.Organization);
+        assertNotNull(org);
+        assertNotNull(findObject(card, vVCARD.org));
+        assertNotNull(findObject(org, vVCARD.organization_name));
+        assertEquals("Berlin",
+                findObjectAsLiteral(org, vVCARD.organization_name));
+
+      }
+    } finally {
+      statements.close();
+    }
+  }
+
+  @Test
+  public void testNoMicroformats() throws Exception, IOException,
+  ExtractionException {
+    extract("/html/html-without-uf.html");
+    assertModelEmpty();
+  }
+
+  @Test
+  public void testBasic() throws Exception {
+    assertExtract("/microformats/hcard/01-tantek-basic.html");
+    assertModelNotEmpty();
+    assertContains(RDF.TYPE, vVCARD.VCard);
+    // assertContains(RDF.TYPE, vVCARD.Organization);
+    assertContains(RDF.TYPE, vVCARD.Name);
+    // assertContains(vVCARD.organization_name, "Technorati");
+    Resource person = findExactlyOneBlankSubject(vVCARD.fn,
+            RDFUtils.literal("Tantek Celik"));
+    assertNotNull(person);
+    Resource org = findExactlyOneBlankSubject(vVCARD.organization_name,
+            RDFUtils.literal("Technorati"));
+    assertNotNull(org);
+    assertContains(person, vVCARD.url, RDFUtils.iri("http://tantek.com/"));
+    assertContains(person, vVCARD.n, (Resource) null);
+    assertContains(person, vVCARD.org, (Resource) null);
+  }
+
+  @Test
+  public void testMultipleclassNamesOnVCard() throws Exception {
+    assertExtract("/microformats/hcard/02-multiple-class-names-on-vcard.html");
+    assertModelNotEmpty();
+    assertStatementsSize(RDF.TYPE, vVCARD.VCard, 4);
+    Resource name;
+    RepositoryResult<Statement> statements = getStatements(null, RDF.TYPE,
+            vVCARD.VCard);
+    while (statements.hasNext()) {
+      name = statements.next().getSubject();
+      assertContains(name, vVCARD.fn, "Ryan King");
+    }
+  }
+
+  @Test
+  public void testImpliedNames() throws Exception {
+    String[] ns = { "Ryan King", "King", "Ryan",
+
+            "Ryan King", "King", "Ryan",
+
+            "Ryan King", "King", "Ryan",
+
+            "Brian Suda", "Suda", "Brian",
+
+            "King, Ryan", "King", "Ryan",
+
+            "King, R", "King", "R",
+
+            "King R", "R", "King",
+
+            "R King", "King", "R",
+
+            "King R.", "R.", "King",
+
+            "Jesse James Garrett", "Garrett", "Jesse",
+
+            "Thomas Vander Wall", "Wall", "Thomas" };
+    List<String> NAMES = Arrays.asList(ns);
+    assertExtract("/microformats/hcard/03-implied-n.html");
+    assertModelNotEmpty();
+
+    RepositoryResult<Statement> statements = getStatements(null, vVCARD.fn,
+            null);
+    Resource vcard;
+    int count = 0;
+    try {
+      while (statements.hasNext()) {
+        vcard = statements.next().getSubject();
+        assertContains(vcard, RDF.TYPE, vVCARD.VCard);
+        Resource name = findObjectAsResource(vcard, vVCARD.n);
+
+        final String objLiteral = findObjectAsLiteral(vcard, vVCARD.fn);
+        int idx = NAMES.indexOf(objLiteral);
+        assertTrue(
+                String.format("not in names: '%s'", objLiteral),
+                idx >= 0);
+        assertEquals(NAMES.get(idx + 1),
+                findObjectAsLiteral(name, vVCARD.family_name));
+        assertEquals(NAMES.get(idx + 2),
+                findObjectAsLiteral(name, vVCARD.given_name));
+        count++;
+      }
+    } finally {
+      statements.close();
+    }
+    assertEquals(10, count);
+  }
+
+  @Test
+  public void testIgnoreUnknowns() throws Exception {
+    assertExtract("/microformats/hcard/04-ignore-unknowns.html");
+    assertDefaultVCard();
+    assertContains(vVCARD.fn, "Ryan King");
+    assertContains(vVCARD.n, (Resource) null);
+    assertContains(null, "Ryan");
+    assertContains(vVCARD.given_name, "Ryan");
+    assertContains(vVCARD.family_name, "King");
+  }
+
+  @Test
+  public void testMailto1() throws Exception {
+    assertExtract("/microformats/hcard/05-mailto-1.html");
+    assertDefaultVCard();
+    assertContains(vVCARD.fn, "Ryan King");
+    assertContains(RDF.TYPE, vVCARD.Name);
+
+    assertContains(vVCARD.email, RDFUtils.iri("mailto:ryan@technorati.com"));
+
+    assertContains(vVCARD.given_name, "Ryan");
+    assertContains(vVCARD.family_name, "King");
+  }
+
+  @Test
+  public void testMailto2() throws Exception {
+    assertExtract("/microformats/hcard/06-mailto-2.html");
+    assertDefaultVCard();
+    assertContains(vVCARD.fn, "Brian Suda");
+
+    assertContains(vVCARD.email, RDFUtils.iri("mailto:brian@example.com"));
+    assertContains(vVCARD.given_name, "Brian");
+    assertContains(vVCARD.family_name, "Suda");
+  }
+
+  @Test
+  public void testRelativeUrl() throws Exception {
+    assertExtract("/microformats/hcard/07-relative-url.html");
+    assertDefaultVCard();
+    assertJohn();
+    assertContains(vVCARD.url, RDFUtils.iri(baseIRI + "home/blah"));
+  }
+
+  @Test
+  public void testRelativeUrlBase() throws Exception {
+    assertExtract("/microformats/hcard/08-relative-url-base.html");
+    assertDefaultVCard();
+    assertContains(vVCARD.url, RDFUtils.iri(baseIRI + "home/blah"));
+    assertJohn();
+  }
+
+  @Test
+  public void testRelativeUrlXmlBase1() throws Exception {
+    assertExtract("/microformats/hcard/09-relative-url-xmlbase-1.html");
+    assertDefaultVCard();
+    assertContains(vVCARD.url, RDFUtils.iri((baseIRI + "home/blah")));
+    assertJohn();
+  }
+
+  @Test
+  public void testRelativeUrlXmlBase2() throws Exception {
+    assertExtract("/microformats/hcard/10-relative-url-xmlbase-2.html");
+    assertDefaultVCard();
+    assertContains(vVCARD.url, RDFUtils.iri((baseIRI + "home/blah")));
+    assertJohn();
+  }
+
+  @Test
+  public void testMultipleUrls() throws Exception {
+    assertExtract("/microformats/hcard/11-multiple-urls.html");
+    assertDefaultVCard();
+    assertContains(vVCARD.url, RDFUtils.iri(("http://example.com/foo")));
+    assertContains(vVCARD.url, RDFUtils.iri(("http://example.com/bar")));
+
+    assertJohn();
+  }
+
+  @Test
+  public void testImageSrc() throws Exception {
+    assertExtract("/microformats/hcard/12-img-src-url.html");
+    assertDefaultVCard();
+    assertJohn();
+  }
+
+  @Test
+  public void testPhotoLogo() throws Exception {
+    assertExtract("/microformats/hcard/13-photo-logo.html");
+    assertDefaultVCard();
+    assertContains(vVCARD.photo,
+            RDFUtils.iri(("http://example.org/picture1.png")));
+    assertContains(vVCARD.photo,
+            RDFUtils.iri(("http://example.org/picture2.png")));
+    assertContains(vVCARD.logo,
+            RDFUtils.iri(("http://example.org/picture1.png")));
+    assertContains(vVCARD.logo,
+            RDFUtils.iri(("http://example.org/picture2.png")));
+    assertJohn();
+  }
+
+  @Test
+  public void testImgSrcDataUrl() throws Exception {
+    assertExtract("/microformats/hcard/14-img-src-data-url.html");
+    assertDefaultVCard();
+    Resource data = RDFUtils.iri("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAMAAAAp4XiDAAAABGdBTUEAAK/"
+            + "INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAASUExURf///8zMzJmZmWZmZ"
+            + "jMzMwAAAPOPemkAAAM1SURBVHjaYmBgYGBkYQUBFkYWFiCPCchixQAMCCZAACF0MAMVM4K4TFh0IGsBCC"
+            + "AkOxhYmBnAAKaHhZkZmxaAAGJgYIbpYGBihGgBWsTMzMwE4jIhaWGAYoAAYmCECDExYAcwGxkg5oNIgAB"
+            + "igDqLARdgZmGB2wICrKwAAcSA3xKgIxlZ0PwCEEAMBCxhgHoWSQtAADFAAxgfYEJ1GEAAQbQw4tUCsocB"
+            + "YQVAADEgu4uRkREeUCwszEwwLhOKLQABhNDCBA4aSDgwwhIAJKqYUPwCEEAMUK/AUwnc9aywJMCI7DAgA"
+            + "AggBohZ8JTBhGIJzCoWZL8ABBCYidAB8RUjWppkYUG2BSCAGMDqEMZiswUtXgACiAHsFYixTMywGGLGpgU"
+            + "WYgABxAA2mQkWCMyMqFoYmdD8ACQAAogBHJHMrCxg1cyIiICmCkYWDFsAAgiihYmZCewFFpR0BfI3LLch+"
+            + "QUggBiQ0iQjEyMDmh54qCBlUIAAYsCRJsElADQvgWKTlRGeKwECiAF3XgGmMEYQYADZzcoA9z5AAMG9RQC"
+            + "AtEC9DxBADFiyFyMjVi0wABBAWLQwQdIiuhYGWJIACCBg+KKUJ9BoBRdS2LQALQMIIGDQIEmwAO1kYcVWH"
+            + "CDZAhBAqFqYmOAxj2YNtAwDAYAAYmDEiBYWzHKKkRERYiwAAYSphZEZwxZGZiZQVEJTJkAAMTCyokc7M5o"
+            + "ORlC5wcoEjxeAAAJqQXU0UB6W5WFmABMtEzMi1wEEEFAbE0YyAUuzMMEsYQalMkQSBQggUDmNPU3C9IA4L"
+            + "CxI+QUggEBiKOU8yExgqccCL3chnkPKlQABhGo6ejHBDKmdUHMlQAAhhQvQaGZGkBIkjcAMywLmI+VKgAB"
+            + "CSowsTJhZkhlWXiBpAQggYBqBZl9GVOdBcz0LZqEEEEAMqLULMBLg1THWog9IAwQQA0qiZcRW5aPbAhBAD"
+            + "Cg1El4tMAAQQAxoiZYZXnTh1AIQQAzo2QlYpDDjcBgrxGEAAcSAJTthswmiBUwDBBC2GpkZJTaRvQ+mAQK"
+            + "IAUuuxdZWQvILQABBmSxMjBj5EpcWgACCMoFOYYSpZyHQHgMIMACt2hmoVEikCQAAAABJRU5ErkJggg==");
+
+    assertContains(vVCARD.photo, data);
+    assertContains(vVCARD.logo, data);
+    assertJohn();
+  }
+
+  @Test
+  public void testHonorificAdditionalSingle() throws Exception {
+    assertExtract("/microformats/hcard/15-honorific-additional-single.html");
+    assertDefaultVCard();
+    assertContains(vVCARD.fn, "Mr. John Maurice Doe, Ph.D.");
+
+    assertContains(vVCARD.honorific_prefix, "Mr.");
+    assertContains(vVCARD.honorific_suffix, "Ph.D.");
+
+    assertContains(vVCARD.given_name, "John");
+    assertContains(vVCARD.additional_name, "Maurice");
+    assertContains(vVCARD.family_name, "Doe");
+  }
+
+  @Test
+  public void testHonorificAdditionalMultiple() throws Exception {
+    assertExtract("/microformats/hcard/16-honorific-additional-multiple.html");
+    assertDefaultVCard();
+    assertContains(vVCARD.honorific_prefix, "Mr.");
+    assertContains(vVCARD.honorific_prefix, "Dr.");
+
+    assertContains(vVCARD.honorific_suffix, "Ph.D.");
+    assertContains(vVCARD.honorific_suffix, "J.D.");
+
+    assertContains(vVCARD.given_name, "John");
+    assertContains(vVCARD.additional_name, "Maurice");
+    assertContains(vVCARD.additional_name, "Benjamin");
+    assertContains(vVCARD.family_name, "Doe");
+
+    assertContains(vVCARD.fn,
+            "Mr. Dr. John Maurice Benjamin Doe Ph.D., J.D.");
+  }
+
+  @Test
+  public void testEMailNotUri() throws Exception {
+    assertExtract("/microformats/hcard/17-email-not-uri.html");
+    assertDefaultVCard();
+    assertJohn();
+    assertContains(vVCARD.email, RDFUtils.iri("mailto:john@example.com"));
+  }
+
+  @Test
+  public void testObjectDataHttpUri() throws Exception {
+    assertExtract("/microformats/hcard/18-object-data-http-uri.html");
+    assertDefaultVCard();
+    assertJohn();
+  }
+
+  @Test
+  public void testObjectDataDataUri() throws Exception {
+    assertExtract("/microformats/hcard/19-object-data-data-uri.html");
+    assertDefaultVCard();
+    assertJohn();
+
+    assertContains(vVCARD.photo, (Resource) null);
+    assertContains(vVCARD.logo, (Resource) null);
+  }
+
+  @Test
+  public void testImgAlt() throws Exception {
+    assertExtract("/microformats/hcard/20-image-alt.html");
+    assertDefaultVCard();
+    Resource uri = RDFUtils.iri("http://example.com/foo.png");
+    assertContains(vVCARD.photo, uri);
+    assertContains(vVCARD.logo, uri);
+    assertJohn();
+  }
+
+  @Test
+  public void testAdr() throws Exception {
+    assertExtract("/microformats/hcard/22-adr.html");
+    assertDefaultVCard();
+    assertJohn();
+    assertStatementsSize(RDF.TYPE, vVCARD.Address, 0);
+  }
+
+  @Test
+  public void testBirthDayDate() throws Exception {
+    assertExtract("/microformats/hcard/27-bday-date.html");
+    assertModelNotEmpty();
+    assertContains(vVCARD.fn, "john doe");
+    assertContains(vVCARD.given_name, "john");
+    assertContains(vVCARD.family_name, "doe");
+    assertContains(vVCARD.bday, "2000-01-01");
+  }
+
+  @Test
+  public void testBirthDayDateTime() throws Exception {
+    assertExtract("/microformats/hcard/28-bday-datetime.html");
+    assertModelNotEmpty();
+    assertContains(vVCARD.fn, "john doe");
+    assertContains(vVCARD.given_name, "john");
+    assertContains(vVCARD.family_name, "doe");
+    assertContains(vVCARD.bday, "2000-01-01T00:00:00");
+  }
+
+  @Test
+  public void testBirthDayDateTimeTimeZone() throws Exception {
+    assertExtract("/microformats/hcard/29-bday-datetime-timezone.html");
+    assertModelNotEmpty();
+    assertContains(vVCARD.fn, "john doe");
+    assertContains(vVCARD.given_name, "john");
+    assertContains(vVCARD.family_name, "doe");
+    assertContains(vVCARD.bday, "2000-01-01T00:00:00-0800");
+  }
+
+  @Test
+  public void testArea() throws Exception {
+    assertExtract("/microformats/hcard/33-area.html");
+    assertModelNotEmpty();
+    assertStatementsSize(RDF.TYPE, vVCARD.VCard, 5);
+    RepositoryResult<Statement> statements = getStatements(null, RDF.TYPE,
+            vVCARD.VCard);
+    try {
+      while (statements.hasNext()) {
+        Resource vcard = statements.next().getSubject();
+
+        assertNotNull(findObject(vcard, vVCARD.fn));
+        assertEquals("Joe Public",
+                findObjectAsLiteral(vcard, vVCARD.fn));
+        assertNotNull(findObject(vcard, vVCARD.url));
+        String url = findObjectAsLiteral(vcard, vVCARD.url);
+        assertNotNull(findObject(vcard, vVCARD.email));
+        String mail = findObjectAsLiteral(vcard, vVCARD.email);
+        assertEquals("http://example.com/", url);
+        assertEquals("mailto:joe@example.com", mail);
+      }
+    } finally {
+      statements.close();
+    }
+
+    // Check that there are 4 organizations.
+    assertStatementsSize(RDF.TYPE, vVCARD.Organization, 4);
+    statements = getStatements(null, RDF.TYPE, vVCARD.Organization);
+    try {
+      while (statements.hasNext()) {
+        Resource org = statements.next().getSubject();
+        assertContains(null, vVCARD.org, org);
+        assertNotNull(findObject(org, vVCARD.organization_name));
+        assertEquals("Joe Public",
+                findObjectAsLiteral(org, vVCARD.organization_name));
+      }
+    } finally {
+      statements.close();
+    }
+  }
+
+  @Test
+  public void testNotes() throws Exception {
+    final String[] NOTES = { "Note 1", "Note 3",
+    "Note 4 with a ; and a , to be escaped" };
+
+    assertExtract("/microformats/hcard/34-notes.html");
+    assertModelNotEmpty();
+    RepositoryResult<Statement> statements = getStatements(null, RDF.TYPE,
+            vVCARD.VCard);
+    try {
+      while (statements.hasNext()) {
+        Resource vcard = statements.next().getSubject();
+        String fn = findObjectAsLiteral(vcard, vVCARD.fn);
+        String mail = findObjectAsLiteral(vcard, vVCARD.email);
+        assertEquals("Joe Public", fn);
+        assertEquals("mailto:joe@example.com", mail);
+      }
+    } finally {
+      statements.close();
+    }
+    for (String note : NOTES) {
+      assertContains(vVCARD.note, note);
+    }
+  }
+
+  @Test
+  public void testIncludePattern() throws Exception {
+    assertExtract("/microformats/hcard/35-include-pattern.html");
+    assertModelNotEmpty();
+    assertStatementsSize(RDF.TYPE, vVCARD.VCard, 3);
+
+    RepositoryResult<Statement> statements = getStatements(null, RDF.TYPE,
+            vVCARD.Name);
+    try {
+      while (statements.hasNext()) {
+        Resource name = statements.next().getSubject();
+        assertNotNull(findObject(name, vVCARD.given_name));
+        String gn = findObjectAsLiteral(name, vVCARD.given_name);
+        assertEquals("James", gn);
+        assertNotNull(findObject(name, vVCARD.family_name));
+        String fn = findObjectAsLiteral(name, vVCARD.family_name);
+        assertEquals("Levine", fn);
+      }
+    } finally {
+      statements.close();
+    }
+
+    assertStatementsSize(RDF.TYPE, vVCARD.Organization, 2);
+    statements = getStatements(null, RDF.TYPE, vVCARD.Organization);
+    try {
+      while (statements.hasNext()) {
+        Resource org = statements.next().getSubject();
+        assertNotNull(findObject(org, vVCARD.organization_name));
+        assertEquals("SimplyHired",
+                findObjectAsLiteral(org, vVCARD.organization_name));
+
+        RepositoryResult<Statement> statements2 = getStatements(null,
+                vVCARD.org, org);
+        try {
+          while (statements2.hasNext()) {
+            Resource vcard = statements2.next().getSubject();
+            assertNotNull(findObject(vcard, vVCARD.title));
+            assertEquals("Microformat Brainstormer",
+                    findObjectAsLiteral(vcard, vVCARD.title));
+          }
+        } finally {
+          statements2.close();
+        }
+      }
+    } finally {
+      statements.close();
+    }
+  }
+
+  @Test
+  public void testUid() throws Exception {
+    assertExtract("/microformats/hcard/38-uid.html");
+    assertModelNotEmpty();
+    assertStatementsSize(RDF.TYPE, vVCARD.VCard, 4);
+    RepositoryResult<Statement> iter = getStatements(null, RDF.TYPE,
+            vVCARD.VCard);
+    while (iter.hasNext()) {
+      Resource vcard = iter.next().getSubject();
+      assertNotNull(findObject(vcard, vVCARD.fn));
+      String fn = findObjectAsLiteral(vcard, vVCARD.fn);
+      assertNotNull(findObject(vcard, vVCARD.url));
+      String url = findObjectAsLiteral(vcard, vVCARD.url);
+      assertNotNull(findObject(vcard, vVCARD.uid));
+      String uid = findObjectAsLiteral(vcard, vVCARD.uid);
+      assertEquals("Ryan King", fn);
+      assertEquals("http://theryanking.com/contact/", url);
+      assertEquals("http://theryanking.com/contact/", uid);
+
+    }
+  }
+
+  @Test
+  public void testIgnoreChildren() throws Exception {
+    assertExtract("/microformats/hcard/41-ignore-children.html");
+    assertModelNotEmpty();
+    assertStatementsSize(RDF.TYPE, vVCARD.VCard, 1);
+    assertContains(vVCARD.fn, "Melanie Kl\u00f6\u00df");
+    assertContains(vVCARD.email, RDFUtils.iri("mailto:mkloes@gmail.com"));
+    assertContains(vVCARD.adr, (Resource) null);
+    assertNotContains(null, vVCARD.postal_code, "53127");
+    assertNotContains(null, vVCARD.locality, "Bonn");
+    assertNotContains(null, vVCARD.street_address, "Ippendorfer Weg. 24");
+    assertNotContains(null, vVCARD.country_name, "Germany");
+  }
+
+  /**
+   * Tests that the HCardName data is not cumulative and is cleaned up at each
+   * extraction.
+   *
+   * @throws Exception
+   */
+  @Test
+  public void testCumulativeHNames() throws Exception {
+    assertExtract("/microformats/hcard/linkedin-michelemostarda.html");
+    assertModelNotEmpty();
+    assertStatementsSize(vVCARD.given_name, "Michele", 7);
+    assertStatementsSize(vVCARD.family_name, "Mostarda", 7);
+  }
+
+  /**
+   * Tests the detection and prevention of the inclusion of an ancestor by a
+   * sibling node. This test is related to issue <a
+   * href="https://issues.apache.org/jira/browse/ANY23-58">ANY23-58</a>.
+   *
+   * @throws IOException
+   * @throws ExtractionException
+   */
+  @Test
+  public void testInfiniteLoop() throws IOException, ExtractionException {
+    assertExtract("/microformats/hcard/infinite-loop.html", false);
+    assertIssue(IssueReport.IssueLevel.WARNING,
+            ".*Current node tries to include an ancestor node.*");
+  }
+
+  /**
+   * Tests extractor performances. This test is related to issue <a
+   * href="https://issues.apache.org/jira/browse/ANY23-76">ANY23-76</a>.
+   */
+  @Test(timeout = 30 * 1000)
+  public void testExtractionPerformance() {
+    assertExtract("/microformats/hcard/performance.html");
+  }
+
+  private void assertDefaultVCard() throws Exception {
+    assertModelNotEmpty();
+    assertStatementsSize(RDF.TYPE, vVCARD.VCard, 1);
+  }
+
+  private void assertJohn() throws Exception {
+    assertContains(vVCARD.fn, "John Doe");
+    assertContains(vVCARD.given_name, "John");
+    assertContains(vVCARD.family_name, "Doe");
+  }
 
 }

http://git-wip-us.apache.org/repos/asf/any23/blob/60e93a76/core/src/test/java/org/apache/any23/extractor/html/HListingExtractorTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/any23/extractor/html/HListingExtractorTest.java b/core/src/test/java/org/apache/any23/extractor/html/HListingExtractorTest.java
index 815d220..5f9ee7d 100644
--- a/core/src/test/java/org/apache/any23/extractor/html/HListingExtractorTest.java
+++ b/core/src/test/java/org/apache/any23/extractor/html/HListingExtractorTest.java
@@ -23,7 +23,6 @@ import org.apache.any23.vocab.FOAF;
 import org.apache.any23.vocab.HListing;
 import org.apache.any23.vocab.SINDICE;
 import org.junit.Test;
-import org.junit.Ignore;
 import org.eclipse.rdf4j.model.Resource;
 import org.eclipse.rdf4j.model.vocabulary.RDF;
 import org.slf4j.Logger;
@@ -151,7 +150,6 @@ public class HListingExtractorTest extends AbstractExtractorTestCase {
 				RDFUtils.iri(baseIRI.stringValue() + "pic.jpg"));
 	}
 
-	@Ignore("ANY23-159: Error with nodes and markup extracted from HListingExtractorTest.testKelkoo & testKelkooFull")
 	@Test
 	public void testKelkoo() throws Exception {
 		assertExtract("/microformats/hlisting/kelkoo.html");
@@ -187,7 +185,6 @@ public class HListingExtractorTest extends AbstractExtractorTestCase {
 		assertContains(vHLISTING.price, "\u00A3480.17");
 	}
 
-	@Ignore("ANY23-159: Error with nodes and markup extracted from HListingExtractorTest.testKelkoo & testKelkooFull")
 	@Test
 	public void testKelkooFull() throws Exception {
 		assertExtract("/microformats/hlisting/kelkoo-full.html");

http://git-wip-us.apache.org/repos/asf/any23/blob/60e93a76/core/src/test/java/org/apache/any23/extractor/microdata/MicrodataParserTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/any23/extractor/microdata/MicrodataParserTest.java b/core/src/test/java/org/apache/any23/extractor/microdata/MicrodataParserTest.java
index ffd4e26..4fa237e 100644
--- a/core/src/test/java/org/apache/any23/extractor/microdata/MicrodataParserTest.java
+++ b/core/src/test/java/org/apache/any23/extractor/microdata/MicrodataParserTest.java
@@ -37,7 +37,6 @@ import org.apache.any23.extractor.html.TagSoupParser;
 import org.apache.any23.util.StreamUtils;
 import org.apache.commons.io.IOUtils;
 import org.junit.Assert;
-import org.junit.Ignore;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.Timeout;
@@ -54,12 +53,11 @@ import static org.junit.Assert.assertFalse;
  */
 public class MicrodataParserTest {
 
-	@Rule
-	public final Timeout timeout = new Timeout(100, TimeUnit.SECONDS);
-	
+//    @Rule
+//    public final Timeout timeout = new Timeout(100, TimeUnit.SECONDS);
+
     private static final Logger logger = LoggerFactory.getLogger(MicrodataParserTest.class);
 
-    @Ignore("TODO: Determine the cause of this")
     @Test
     public void testBasicFeatures() throws IOException {
         extractItemsAndVerifyJSONSerialization(
@@ -68,7 +66,6 @@ public class MicrodataParserTest {
         );
     }
 
-    @Ignore("TODO: Determine the cause of this")
     @Test
     public void testNestedMicrodata() throws IOException {
         extractItemsAndVerifyJSONSerialization(
@@ -77,7 +74,6 @@ public class MicrodataParserTest {
         );
     }
 
-    @Ignore("TODO: Determine the cause of this")
     @Test
     public void testAdvancedItemrefManagement() throws IOException {
         extractItemsAndVerifyJSONSerialization(
@@ -86,7 +82,6 @@ public class MicrodataParserTest {
         );
     }
 
-    @Ignore("TODO: Determine the cause of this")
     @Test
     public void testMicrodataJSONSerialization() throws IOException {
         final Document document = getMicrodataDom("microdata-nested");
@@ -97,6 +92,7 @@ public class MicrodataParserTest {
         final String expected = StreamUtils.asString(
                 this.getClass().getResourceAsStream("/microdata/microdata-json-serialization.json")
         );
+
         Assert.assertEquals("Unexpected serialization for Microdata file.", expected, baos.toString());
     }
 
@@ -122,29 +118,29 @@ public class MicrodataParserTest {
         final AtomicBoolean foundFailure = new AtomicBoolean(false);
         for (int i = 0; i < threadCount; i++) {
             threads.add(new Thread("Test-thread-" + i) {
-					@Override
-					public void run() {
-						try {
-							beforeLatch.await();
-							int counter = 0;
-							while (counter++ < attemptCount && !foundFailure.get()) {
-								final Document document = getDom(content);
-								final MicrodataParserReport report = MicrodataParser.getMicrodata(document);
-								final ItemScope target = report.getDetectedItemScopes()[4];
-								Date actualDate = target.getProperties().get("birthday").get(0).getValue().getAsDate();
-								if (!expectedDate.equals(actualDate)) {
-									foundFailure.set(true);
-								}
-							}
-						}
-						catch (Exception ex) {
-							ex.printStackTrace();
-							foundFailure.set(true);
-						}
-						finally {
-							afterLatch.countDown();
-						}
-					}
+              @Override
+              public void run() {
+                try {
+                  beforeLatch.await();
+                  int counter = 0;
+                  while (counter++ < attemptCount && !foundFailure.get()) {
+                    final Document document = getDom(content);
+                    final MicrodataParserReport report = MicrodataParser.getMicrodata(document);
+                    final ItemScope target = report.getDetectedItemScopes()[4];
+                    Date actualDate = target.getProperties().get("birthday").get(0).getValue().getAsDate();
+                    if (!expectedDate.equals(actualDate)) {
+                      foundFailure.set(true);
+                    }
+                  }
+                }
+                catch (Exception ex) {
+                  ex.printStackTrace();
+                  foundFailure.set(true);
+                }
+                finally {
+                  afterLatch.countDown();
+                }
+              }
             });
         }
         for (Thread thread : threads) {
@@ -167,8 +163,8 @@ public class MicrodataParserTest {
     public void testDeferProperties() throws IOException, MicrodataParserException {
         final Document document = getMicrodataDom("microdata-itemref");
         final MicrodataParser parser = new MicrodataParser(document);
-        final ItemProp[] deferred = parser.deferProperties("ip5", "ip4", "ip3", "unexisting");
-        Assert.assertEquals(3, deferred.length);
+        final ItemProp[] deferred = parser.deferProperties(document.getElementById("is2"), "ip5", "ip4", "ip3", "unexisting");
+        Assert.assertEquals(2, deferred.length);
     }
 
     /**
@@ -181,8 +177,8 @@ public class MicrodataParserTest {
     public void testDeferPropertiesLoopDetection1() throws IOException, MicrodataParserException {
         final Document document = getMicrodataDom("microdata-itemref");
         final MicrodataParser parser = new MicrodataParser(document);
-        parser.setErrorMode(MicrodataParser.ErrorMode.StopAtFirstError);
-        parser.deferProperties("loop0");
+        parser.setErrorMode(MicrodataParser.ErrorMode.STOP_AT_FIRST_ERROR);
+        parser.deferProperties(null, "loop0");
     }
 
     /**
@@ -195,8 +191,8 @@ public class MicrodataParserTest {
     public void testDeferPropertiesLoopDetection2() throws IOException, MicrodataParserException {
         final Document document = getMicrodataDom("microdata-itemref");
         final MicrodataParser parser = new MicrodataParser(document);
-        parser.setErrorMode(MicrodataParser.ErrorMode.StopAtFirstError);
-        parser.deferProperties("loop2");
+        parser.setErrorMode(MicrodataParser.ErrorMode.STOP_AT_FIRST_ERROR);
+        parser.deferProperties(null, "loop2");
     }
 
     /**
@@ -210,9 +206,10 @@ public class MicrodataParserTest {
     public void testDeferPropertiesStateManagement() throws IOException, MicrodataParserException {
         final Document document = getMicrodataDom("microdata-itemref");
         final MicrodataParser parser = new MicrodataParser(document);
-        Assert.assertEquals(1, parser.deferProperties("ip1").length);
-        Assert.assertEquals(1, parser.deferProperties("ip1").length);
-        Assert.assertEquals(1, parser.deferProperties("ip1").length);
+        String ip1 = "ip1";
+        Assert.assertEquals(1, parser.deferProperties(document.getElementById(ip1), ip1).length);
+        Assert.assertEquals(1, parser.deferProperties(document.getElementById(ip1), ip1).length);
+        Assert.assertEquals(1, parser.deferProperties(document.getElementById(ip1), ip1).length);
     }
 
     private Document getDom(String document) throws IOException {
@@ -247,7 +244,7 @@ public class MicrodataParserTest {
     private void extractItemsAndVerifyJSONSerialization(String htmlFile, String expectedResult)
     throws IOException {
         final MicrodataParserReport report = extractItems(htmlFile);
-        final ItemScope[]                items  = report.getDetectedItemScopes();
+        final ItemScope[] items = report.getDetectedItemScopes();
         final MicrodataParserException[] errors = report.getErrors();
 
         logger.debug("begin itemScopes");
@@ -267,7 +264,7 @@ public class MicrodataParserTest {
         final int expectedResults = getExpectedResultCount(resultContent);
         final int expectedErrors  = getExpectedErrorsCount(resultContent);
         Assert.assertEquals("Unexpected number of detect items.", expectedResults, items.length);
-        Assert.assertEquals("Unexpected number of errors."      , expectedErrors, errors.length);
+        Assert.assertEquals("Unexpected number of errors.", expectedErrors, errors.length);
 
         for (int i = 0; i < items.length; i++) {
             Assert.assertEquals(

http://git-wip-us.apache.org/repos/asf/any23/blob/60e93a76/core/src/test/java/org/apache/any23/extractor/rdfa/RDFaExtractorTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/any23/extractor/rdfa/RDFaExtractorTest.java b/core/src/test/java/org/apache/any23/extractor/rdfa/RDFaExtractorTest.java
index f52cd59..680fe47 100644
--- a/core/src/test/java/org/apache/any23/extractor/rdfa/RDFaExtractorTest.java
+++ b/core/src/test/java/org/apache/any23/extractor/rdfa/RDFaExtractorTest.java
@@ -19,7 +19,6 @@ package org.apache.any23.extractor.rdfa;
 
 import org.apache.any23.extractor.ExtractorFactory;
 import org.junit.Assert;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.eclipse.rdf4j.model.Statement;
 import org.eclipse.rdf4j.repository.RepositoryException;
@@ -65,7 +64,6 @@ public class RDFaExtractorTest extends AbstractRDFaExtractorTestCase {
         }
     }
 
-    @Ignore("RDFa1 parser not able to parse RDFa11 CURIES in this case")
 	@Test
 	public void testRDFa11CURIEs() throws Exception {
 	}

http://git-wip-us.apache.org/repos/asf/any23/blob/60e93a76/core/src/test/java/org/apache/any23/extractor/xpath/TemplateXPathExtractorRuleImplTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/any23/extractor/xpath/TemplateXPathExtractorRuleImplTest.java b/core/src/test/java/org/apache/any23/extractor/xpath/TemplateXPathExtractorRuleImplTest.java
index f1f2d88..85f33b5 100644
--- a/core/src/test/java/org/apache/any23/extractor/xpath/TemplateXPathExtractorRuleImplTest.java
+++ b/core/src/test/java/org/apache/any23/extractor/xpath/TemplateXPathExtractorRuleImplTest.java
@@ -75,15 +75,15 @@ public class TemplateXPathExtractorRuleImplTest {
     @Test
     public void testAddRemoveTemplates() {
         final QuadTemplate template1 = new QuadTemplate(
-                new TemplateSubject(TemplateSubject.Type.uri, "http://sub1", false),
+                new TemplateSubject(TemplateSubject.Type.URI, "http://sub1", false),
                 new TemplatePredicate("http://pred1", false),
-                new TemplateObject(TemplateObject.Type.uri, "http://obj1", false),
+                new TemplateObject(TemplateObject.Type.URI, "http://obj1", false),
                 new TemplateGraph("http://graph1", false)
         );
         final QuadTemplate template2 = new QuadTemplate(
-                new TemplateSubject(TemplateSubject.Type.uri, "http://sub2", false),
+                new TemplateSubject(TemplateSubject.Type.URI, "http://sub2", false),
                 new TemplatePredicate("http://pred2", false),
-                new TemplateObject(TemplateObject.Type.uri, "http://obj2", false),
+                new TemplateObject(TemplateObject.Type.URI, "http://obj2", false),
                 new TemplateGraph("http://graph2", false)
         );
 
@@ -94,9 +94,9 @@ public class TemplateXPathExtractorRuleImplTest {
 
         xPathExtractionRule.add(new Variable("v1", "//"));
         final QuadTemplate template3 = new QuadTemplate(
-                new TemplateSubject(TemplateSubject.Type.uri, "http://sub2", false),
+                new TemplateSubject(TemplateSubject.Type.URI, "http://sub2", false),
                 new TemplatePredicate("http://pred2", false),
-                new TemplateObject(TemplateObject.Type.uri, "v1", true),
+                new TemplateObject(TemplateObject.Type.URI, "v1", true),
                 new TemplateGraph("http://graph2", false)
         );
         xPathExtractionRule.add(template3);
@@ -106,9 +106,9 @@ public class TemplateXPathExtractorRuleImplTest {
     public void testAddTemplateWithNoDeclaredVarCheck() {
         xPathExtractionRule.add(
                 new QuadTemplate(
-                        new TemplateSubject(TemplateSubject.Type.uri, "http://sub2", false),
+                        new TemplateSubject(TemplateSubject.Type.URI, "http://sub2", false),
                         new TemplatePredicate("http://pred2", false),
-                        new TemplateObject(TemplateObject.Type.uri, "v1", true),
+                        new TemplateObject(TemplateObject.Type.URI, "v1", true),
                         new TemplateGraph("http://graph2", false)
                 )
         );
@@ -127,15 +127,15 @@ public class TemplateXPathExtractorRuleImplTest {
     @Test
     public void testProcess() throws IOException {
         final QuadTemplate template1 = new QuadTemplate(
-                new TemplateSubject(TemplateSubject.Type.uri, "http://sub1", false),
+                new TemplateSubject(TemplateSubject.Type.URI, "http://sub1", false),
                 new TemplatePredicate("http://pred1", false),
-                new TemplateObject(TemplateObject.Type.literal, "v1", true),
+                new TemplateObject(TemplateObject.Type.LITERAL, "v1", true),
                 new TemplateGraph("http://graph1", false)
         );
         final QuadTemplate template2 = new QuadTemplate(
-                new TemplateSubject(TemplateSubject.Type.uri, "http://sub2", false),
+                new TemplateSubject(TemplateSubject.Type.URI, "http://sub2", false),
                 new TemplatePredicate("v2", true),
-                new TemplateObject(TemplateObject.Type.uri, "http://obj2", false),
+                new TemplateObject(TemplateObject.Type.URI, "http://obj2", false),
                 new TemplateGraph("http://graph2", false)
         );
 

http://git-wip-us.apache.org/repos/asf/any23/blob/60e93a76/core/src/test/java/org/apache/any23/filter/IgnoreAccidentalRDFaTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/any23/filter/IgnoreAccidentalRDFaTest.java b/core/src/test/java/org/apache/any23/filter/IgnoreAccidentalRDFaTest.java
index ce5b1d6..de6d980 100644
--- a/core/src/test/java/org/apache/any23/filter/IgnoreAccidentalRDFaTest.java
+++ b/core/src/test/java/org/apache/any23/filter/IgnoreAccidentalRDFaTest.java
@@ -28,7 +28,7 @@ import org.eclipse.rdf4j.model.Value;
 import org.eclipse.rdf4j.model.ValueFactory;
 import org.eclipse.rdf4j.model.impl.SimpleValueFactory;
 
-import static org.mockito.Matchers.any;
+import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.times;

http://git-wip-us.apache.org/repos/asf/any23/blob/60e93a76/core/src/test/java/org/apache/any23/writer/JSONWriterTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/any23/writer/JSONWriterTest.java b/core/src/test/java/org/apache/any23/writer/JSONWriterTest.java
index ebe6ba3..92ae30f 100644
--- a/core/src/test/java/org/apache/any23/writer/JSONWriterTest.java
+++ b/core/src/test/java/org/apache/any23/writer/JSONWriterTest.java
@@ -20,11 +20,7 @@ package org.apache.any23.writer;
 import org.junit.Assert;
 import org.junit.Test;
 import org.eclipse.rdf4j.model.IRI;
-import org.eclipse.rdf4j.model.impl.BNodeImpl;
-import org.eclipse.rdf4j.model.impl.LiteralImpl;
 import org.eclipse.rdf4j.model.impl.SimpleValueFactory;
-import org.eclipse.rdf4j.model.vocabulary.RDF;
-
 import java.io.ByteArrayOutputStream;
 
 /**

http://git-wip-us.apache.org/repos/asf/any23/blob/60e93a76/service/src/test/java/org/apache/any23/servlet/ServletTest.java
----------------------------------------------------------------------
diff --git a/service/src/test/java/org/apache/any23/servlet/ServletTest.java b/service/src/test/java/org/apache/any23/servlet/ServletTest.java
index bb168a1..bc87737 100644
--- a/service/src/test/java/org/apache/any23/servlet/ServletTest.java
+++ b/service/src/test/java/org/apache/any23/servlet/ServletTest.java
@@ -25,7 +25,6 @@ import org.apache.any23.util.StringUtils;
 import org.junit.Assert;
 import org.junit.After;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.mortbay.jetty.testing.HttpTester;
 import org.mortbay.jetty.testing.ServletTester;
@@ -229,7 +228,6 @@ public class ServletTest {
      * @throws Exception
      */
     @Test
-    @Ignore
     public void testGETwithURLEncoding() throws Exception {
         content = null;
         HttpTester response = doGetRequest("/best/http://semanticweb.org/wiki/Knud_M%C3%B6ller");
@@ -241,7 +239,6 @@ public class ServletTest {
      * @throws Exception
      */
     @Test
-    @Ignore
     public void testGETwithURLEncodingWithQuery() throws Exception {
         content = null;
         HttpTester response = doGetRequest("/best/http://semanticweb.org/wiki/Knud_M%C3%B6ller?appo=xxx");
@@ -253,7 +250,6 @@ public class ServletTest {
      * @throws Exception
      */
     @Test
-    @Ignore
     public void testGETwithURLEncodingWithFragment() throws Exception {
         content = null;
         HttpTester response = doGetRequest("/best/http://semanticweb.org/wiki/Knud_M%C3%B6ller#abcde");