From 9bab662c46107350417f61e1f7cbd3058809edf1 Mon Sep 17 00:00:00 2001 From: Hans Date: Wed, 24 Oct 2018 12:00:51 -0500 Subject: [PATCH] ANY23-407 allow microdata itemids from relative urls --- .../extractor/microdata/MicrodataExtractor.java | 16 ++++++++++------ .../extractor/microdata/MicrodataParser.java | 2 -- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/core/src/main/java/org/apache/any23/extractor/microdata/MicrodataExtractor.java b/core/src/main/java/org/apache/any23/extractor/microdata/MicrodataExtractor.java index d49f7ce59..b60677d2e 100644 --- a/core/src/main/java/org/apache/any23/extractor/microdata/MicrodataExtractor.java +++ b/core/src/main/java/org/apache/any23/extractor/microdata/MicrodataExtractor.java @@ -33,8 +33,6 @@ import org.eclipse.rdf4j.model.Resource; import org.eclipse.rdf4j.model.IRI; import org.eclipse.rdf4j.model.Value; -import org.eclipse.rdf4j.model.datatypes.XMLDatatypeUtil; -import org.eclipse.rdf4j.model.impl.SimpleValueFactory; import org.eclipse.rdf4j.model.vocabulary.RDF; import org.eclipse.rdf4j.model.vocabulary.XMLSchema; import org.w3c.dom.Document; @@ -421,7 +419,7 @@ private Resource processType( IRI documentIRI, ExtractionResult out, Map mappings, IRI defaultNamespace ) throws ExtractionException { - Resource subject = mappings.computeIfAbsent(itemScope, scope -> createSubjectForItemId(scope.getItemId())); + Resource subject = mappings.computeIfAbsent(itemScope, scope -> createSubjectForItemId(documentIRI, scope.getItemId())); IRI itemScopeType = getType(itemScope); if (itemScopeType != null) { @@ -461,9 +459,15 @@ private static IRI getType(ItemScope scope) { return type == null ? null : RDFUtils.iri(type.toString()); } - private static Resource createSubjectForItemId(String itemId) { - Optional iri = toAbsoluteIRI(itemId); - return iri.isPresent() ? iri.get() : RDFUtils.bnode(); + private static Resource createSubjectForItemId(IRI documentIRI, String itemId) { + if (itemId == null) { + return RDFUtils.bnode(); + } + try { + return toAbsoluteIRI(documentIRI, itemId); + } catch (URISyntaxException e) { + return RDFUtils.bnode(); + } } private void processProperty( diff --git a/core/src/main/java/org/apache/any23/extractor/microdata/MicrodataParser.java b/core/src/main/java/org/apache/any23/extractor/microdata/MicrodataParser.java index 970c31bbf..dfb9de61f 100644 --- a/core/src/main/java/org/apache/any23/extractor/microdata/MicrodataParser.java +++ b/core/src/main/java/org/apache/any23/extractor/microdata/MicrodataParser.java @@ -32,11 +32,9 @@ import java.io.PrintStream; import java.net.URL; -import java.text.ParseException; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; -import java.util.Date; import java.util.HashMap; import java.util.HashSet; import java.util.LinkedHashSet;