Repository: any23 Updated Branches: refs/heads/master 9bab662c4 -> a58d59e35
ANY23-408 Use document IRI as default namespace in microdata strict mode Project: http://git-wip-us.apache.org/repos/asf/any23/repo Commit: http://git-wip-us.apache.org/repos/asf/any23/commit/a58d59e3 Tree: http://git-wip-us.apache.org/repos/asf/any23/tree/a58d59e3 Diff: http://git-wip-us.apache.org/repos/asf/any23/diff/a58d59e3 Branch: refs/heads/master Commit: a58d59e35da537b69820baf0cb6423fb3facea02 Parents: 9bab662 Author: Hans <[email protected]> Authored: Wed Oct 24 14:16:57 2018 -0500 Committer: Hans <[email protected]> Committed: Wed Oct 24 14:16:57 2018 -0500 ---------------------------------------------------------------------- .../extractor/microdata/MicrodataExtractor.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/any23/blob/a58d59e3/core/src/main/java/org/apache/any23/extractor/microdata/MicrodataExtractor.java ---------------------------------------------------------------------- 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 b60677d..1e1f021 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 @@ -103,7 +103,7 @@ public class MicrodataExtractor implements Extractor.TagSoupDOMExtractor { throw new IllegalArgumentException("invalid namespace IRI: " + defaultNamespace); } } else { - defaultNamespace = null; + defaultNamespace = createNamespaceFromPrefix(documentIRI); } documentLanguage = getDocumentLanguage(in); @@ -507,6 +507,20 @@ public class MicrodataExtractor implements Extractor.TagSoupDOMExtractor { private static final String hcardPrefix = "http://microformats.org/profile/hcard"; private static final IRI hcardNamespaceIRI = RDFUtils.iri("http://microformats.org/profile/hcard#"); + static { + assert createNamespaceFromPrefix(RDFUtils.iri(hcardPrefix)).equals(hcardNamespaceIRI); + } + + private static IRI createNamespaceFromPrefix(IRI prefix) { + if (prefix.getLocalName().isEmpty()) { + return prefix; + } + String ns = prefix.getNamespace(); + IRI ret = RDFUtils.iri(ns.endsWith("#") ? ns : (prefix.stringValue() + "#")); + assert ret.getLocalName().isEmpty() && ret.getNamespace().endsWith("#"); + return ret; + } + private static IRI getNamespaceIRI(IRI itemType) { //TODO: support registries so hardcoding not needed return itemType.stringValue().startsWith(hcardPrefix) ? hcardNamespaceIRI : itemType;
