@Override
    public XMPMeta process(Metadata metadata) throws XMPException {
        setMetadata(metadata);
        XMPSchemaRegistry registry = XMPMetaFactory.getSchemaRegistry();

        String[] keys = metadata.names();
        for (String key : keys) {
            String[] keyParts = key.split(TikaCoreProperties.NAMESPACE_PREFIX_DELIMITER);
            if (keyParts.length > 0 && keyParts.length <= 2) {
                String uri = registry.getNamespaceURI(keyParts[0]);

                if (uri != null) {
                    // Tika properties where the type differs from the XMP specification
                    if (key.equals(DublinCore.TITLE.getName()) ||
                            key.equals(DublinCore.DESCRIPTION.getName()) ||
                            key.equals(XMPRights.USAGE_TERMS.getName())) {
                        createLangAltProperty(key, uri, keyParts[1]);
                    } else if (key.equals(DublinCore.CREATOR.getName())) {
                        createArrayProperty(key, uri, keyParts[1], PropertyOptions.ARRAY_ORDERED);
                    } else {
                        PropertyType type = Property.getPropertyType(key);
                        if (type != null) {
                            switch (type) {
                                case SIMPLE:
                                    createProperty(key, uri, keyParts[1]);
                                    break;
                                case BAG:
                                    createArrayProperty(key, uri, keyParts[1],
                                            PropertyOptions.ARRAY);
                                    break;
                                case SEQ:
                                    createArrayProperty(key, uri, keyParts[1],
                                            PropertyOptions.ARRAY_ORDERED);
                                    break;
                                case ALT:
                                    createArrayProperty(key, uri, keyParts[1],
                                            PropertyOptions.ARRAY_ALTERNATE);
                                    break;
                                // TODO Add support for structs and lang-alts, but those types are
                                // currently not used in Tika
                            }
                        }
                    }
                }
            } // ignore keys that are not qualified
        }

        return getXMPMeta();
    }
Trys to convert as much of the properties in the <code>Metadata</code> map to XMP namespaces.
only those properties will be cnverted where the name contains a prefix and this prefix
correlates with a "known" prefix for a standard namespace. For example "dc:title" would be mapped
to the "title" property in the DublinCore namespace.
tika-xmp/src/main/java/org/apache/tika/xmp/convert/GenericConverter.java