Going glocal with metadata: JSON and the Book of the Future


This article is an extension (and evolution) of earlier posts on this topic: see 'Why JSON as an article and book format?' and 'A list of rules for a JSON book - a manifesto of sorts'.

Going glocal with metadata

Let's suppose we have our book (in JSON format) and it is single authored. We can place the author within the top level metadata object, because whichever language it is in the author remains the same.


{
    "metadata": {
        "author": "Jim Smith",
        "imprint": "self"
    },
    "en": [],
    "fr": [],
    "de": []
}


But it is likely there will be a translator specific (local) to each language version, and the English version in this instance has no translator at all. Further, the same imprint might publish the book or languages might have their own imprints. Here there is a global imprint that is overridden by the local instance of the book in French. (This is done by placing the imprint object within the language array.)


{
    "metadata": {
        "author": "Jim Smith",
        "imprint": "self"
    },
    "en": [],
    "fr": [
        {
            "imprint": "soi",
            "translator": "Jacques Martin"
        }
    ],
    "de": []
}

It might be the case that not only does a language have a different imprint or publisher, but the editions might have a different imprint as well. This isn't a problem, because logic dictates that the local declarations override the global ones.


{
    "metadata": {
        "author": "Jim Smith",
        "imprint": "self"
    },
    "en": [
        {
            "1980": [],
            "2002": [
                {
                    "imprint": "other"
                }
            ]
        }
    ],
    "fr": [
        {
            "imprint": "soi",
            "translator": "Jacques Martin"
        }
    ],
    "de": []
}

The same logic of local overriding global applies if we add, for example, a foreword written by someone other than the author.


{
    "metadata": {
        "author": "Jim Smith",
        "imprint": "self"
    },
    "en": [
        {
            "1980": [],
            "2002": [
                {
                    "imprint": "other"
                }
            ]
        },
        {
            "Foreword": [
                {
                    "author": "Simon Smith"
                }
            ],
            "Chapter 1": [],
            "Chapter 2": [],
            "Chapter 3": [],
            "Chapter 4": []
        }
    ],
    "fr": [
        {
            "imprint": "soi",
            "translator": "Jacques Martin"
        }
    ],
    "de": []
}

Note: in an edited collection we would most likely declare an editor (or array of editors) in the metadata and then assign an author (or authors) to each and every chapter.

What if we don't own the copyright to publish all editions?

It might be the case that not only is the imprint different but we don't own the copyright to foreign or earlier editions, but that's OK. If the other publisher has an API of their own we simply pass a link to the content and if the facility is available we include a token in the URL that identifies us, so that commission or goodwill can be applied accordingly to our name. If the developer supports this other publisher's API, then things will work smoothly, if not then it's a case of "this content is not currently available within this app" and a redirect to somewhere the user might gain access.

It might also be the case that we don't have the worldwide rights to publish a book in electronic format. This is OK too, in a similar way we pass the request along to the publisher who owns the rights. (The developer we assume in this scenario is required to confirm the country of the user before allowing access to books.) As above, if publishers adopt similar API strategies then this needn't be a barrier to access, in fact the user hardly need know about it at all.

Thinking some more about metadata

Here's a post translating EPUB3 metadata into JSON.




Comments