[ https://issues.apache.org/jira/browse/TIKA-1607?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14704880#comment-14704880 ]
Ray Gauss II commented on TIKA-1607: ------------------------------------ I did see that, but I was after full URI namespaces, i.e. {{http://purl.org/dc/elements/1.1/}}, not just prefixes. The OODT approach looks like you'd have to shoehorn the "index" into the group name, much like the tika-ffmpeg workaround, rather than a more strictly defined structure. OODT might support deeper structures in the inner {{Group}} class, but the public methods appear to only support a single level? For example, How could one get to something like the value of the city of the 3rd contact's 2nd address, i.e. "p1:contact[2]/p1:address[1]/p1:city"? We could mimic XPath syntax but the DOM approach allows us to use {{javax.xml.xpath.XPath}} processing. From the [test mentioned above|https://github.com/rgauss/tika/blob/trunk/tika-core/src/test/java/org/apache/tika/metadata/TestMetadata.java#L394]: {code:java} String expression = "/tika:metadata/vcard:tel[1]/vcard:uri"; assertEquals(telUri, metadata.getValueByXPath(expression)); {code} The DOM approach would also allow us to leverage things like attributes to further describe a particular metadata value in the future if need be. We might also be able to "pass through" entire metadata structures that Tika hasn't explicitly modeled. It's certainly a larger change, but I think it gives us a lot more options. > Introduce new arbitrary object key/values data structure for persistence of > Tika Metadata > ----------------------------------------------------------------------------------------- > > Key: TIKA-1607 > URL: https://issues.apache.org/jira/browse/TIKA-1607 > Project: Tika > Issue Type: Improvement > Components: core, metadata > Reporter: Lewis John McGibbney > Assignee: Lewis John McGibbney > Priority: Critical > Fix For: 1.11 > > Attachments: TIKA-1607v1_rough_rough.patch, > TIKA-1607v2_rough_rough.patch, TIKA-1607v3.patch > > > I am currently working implementing more comprehensive extraction and > enhancement of the Tika support for Phone number extraction and metadata > modeling. > Right now we utilize the String[] multivalued support available within Tika > to persist phone numbers as > {code} > Metadata: String: String[] > Metadata: phonenumbers: number1, number2, number3, ... > {code} > I would like to propose we extend multi-valued support outside of the > String[] paradigm by implementing a more abstract Collection of Objects such > that we could consider and implement the phone number use case as follows > {code} > Metadata: String: Object > {code} > Where Object could be a Collection<HashMap<String/Property, > HashMap<String/Property, String/Int/Long>> e.g. > {code} > Metadata: phonenumbers: [(+162648743476: (LibPN-CountryCode : US), > (LibPN-NumberType: International), (etc: etc)...), (+1292611054: > LibPN-CountryCode : UK), (LibPN-NumberType: International), (etc: etc)...) > (etc)] > {code} > There are obvious backwards compatibility issues with this approach... > additionally it is a fundamental change to the code Metadata API. I hope that > the <String, Object> Mapping however is flexible enough to allow me to model > Tika Metadata the way I want. > Any comments folks? Thanks > Lewis -- This message was sent by Atlassian JIRA (v6.3.4#6332)