In this blog – my second blog on this topic – I’ll be going into the technical details of the Celtic Poets in North America Digital Humanities project on which I’m currently working. I’d be happy to receive comments and/or suggestions from those with knowledge of these matters; these details are important to those who wish to contribute (meta)data to the system.
In my last blog I described the Finding the Celtic digital collaboratory that I created in 2007-8 by modifying the Collex system, written in Ruby on Rails. DH authority Bethany Nowviskie explained to me recently that Collex is now a stable and mature system that is being used by other scholarly communities for purposes similar to my own. One of the most interesting recent examples of this is the Medieval Electronic Scholarly Alliance, who have a digital collaboratory with federated data services, based on Collex.
I may decide that the most effective strategy for this project would be to return to Collex and spawn a new mutant of the system. For the time being, at least, however, I’m creating my own system from scratch using Groovy/Grails, as a means of gaining a comprehensive understanding of the Groovy/Grails system and allowing me to create my own architecture from scratch.
I really like the Groovy/Grails programming environment. That system is very analogous to Ruby/Rails in most respects – dynamic OOP languages incorporating closures and data models that map automatically onto SQL databases, and systems that handle web interactions with CRUD operations and scaffolding – but Groovy runs on the Java Virtual Machine and thus allows you to stay in the Java environment and draw on those resources. And because Groovy is compiled to Java byte code, it’s faster than Ruby.
After the (substantial) investment of learning about the Grails architecture and libraries, it has not taken me too long to get some basic operations up and running on my system. It was amazing to see how easily I could read and use a JSON file (which contains the database), for example.
I am a little concerned, though, that Groovy/Grails has not caught on as well as expected to date. Ruby on Rails seems to have really entrenched itself in the Digital Humanities world because it came along at the right time, when people needed a rapid application development environment for web apps. However, there may be some signs that the RoR monopoly may cave in, to some degree, to G/G in the long run (here’s an interesting discussion about the two).
The implementation details above need not concern anyone but me, but the data model is of central importance for those who wish to comment on the system and contribute (meta)data.
There are currently three types of data in the CPNA database: Places, Poets and Poems. Each of these is defined differently. The software is very particular about the format of the file, so it would make my life much easier as editor of the data if you are careful about how you format your entries to me, following carefully the guidelines below.
The data file format I am using (called “JSON”) consists of a number of field-name/data pairs, separated by commas. In other words, the name of a data field in double quotes, a colon and the value of the data of that field (double quotes for everything but numbers), followed by a comma, and then the next field-name/data pair, and so on.
In general, English names for common place names are privileged in this database where they are the dominant conventional forms, especially because few users will have adequate command of the relevant Celtic languages. Native Celtic names and words are to be used elsewhere as appropriate.
It would be easiest for me to have contributor data in three sections of the same type: all of the places, followed by all of the poets, followed by the poems.
Both the Poet and Poem data types refer to Places.
A place is defined with the following data fields:
- name: the name of the specific place, in whatever language is most appropriate.
- country: the name of the country in English. The countries currently in use are: US, Canada, France, Ireland, Man, Scotland, Wales, England.
- stateOrProv: the 2 to 4 letter abbreviation of the state (in the US), province (in Canada or France), shire (in UK), or county (in Ireland). Use BRT for Brittany and CON for Cornwall.
- latitude: the decimal value of latitude.
- longitude: the decimal value of longitude.
Most locations have entries on WikiPedia, which gives their longitude and latitude.
See the following for stateOrProv abbrevations:
Here is an example definition of two places, one in Scotland and one in Nova Scotia:
"name": "Tiree", "country": "Scotland", "stateOrProv": "ARL", "latitude": 56.516667, "longitude": -6.816667
"name": "Antigonish", "country": "Canada", "stateOrProv": "NS", "latitude": 45.626522, "longitude": -61.998253
You must provide definitions for all places referred to in your Poets and Poetry entries, unless they already exist in the system or are unknown.
A poet is defined with the following data fields:
- nativeName: the formal name of the poet in his/her Celtic language.
- transName: the English or French equivalent for the name of the poet.
- nickname: the nickname for the poet in his/her Celtic language.
- sex: the sex of the poet (M, F or U)
- birthYear: the year born, or 0 if unknown
- birthPlace: the place where poet was born; use “unknown” if unknown
- deathYear: the year died, or 0 if unknown (or still alive)
- deathPlace: the place where the poet died; use “unknown” if unknown
Here is a definition of a poet who was born in Scotland and died in Canada:
"nativeName": "Iain MacGilleain", "transName": "John MacLean", "nickname": "Am Bard MacGilleain", "sex": "M", "birthYear": 1787, "birthPlace": "Tiree", "deathYear": 1848, "deathPlace": "Antigonish"
You must provide definitions for all poets whose poetry you list, unless the poet already exists in the system or is anonymous.
A poem is defined with the following data fields:
- name: the common name for the poem, in the language of the poem.
- composer: the Poet who composed the poem. There are three special Poet entries: “Unknown male,” “Unknown female,” and “Anonymous” (if composer’s sex is unknown). Please be specific in the case of poets with the same name (disambiguate with nickname or birth year).
- firstLine: the first line of the poem.
- compPlace: the place where the poem was composed, or 0 if unknown
- compYearEarliest: the earliest year it could have been composed.
- compYearLatest: the latest year it could have been composed.
- language: the language in which the poem was composed. Valid values are: Breton, Cornish, Irish, Manx, Gaelic, or Welsh.
- textSource: a reference to a source where the item can be found (journal, MSS, etc).
- urlSource: the URL to the text, if online; otherwise, leave empty.
- tags: the list of tags which indicate the main topics of the poem (see below).
The textSource field entry should be concise:
- In the case of a book: Name of author/editor, book title (short), colon, page range.
- In the case of an article in a journal: Name of author/editor of article, article title (short) in single quotes, comma, name of journal, issue number, year (in parentheses), colon, page range.
- In the case of an article in an edited volume: Name of author/editor of article, article title (short) in single quotes, comma, name of book (short), colon, page range.
- In the case of poems printed as stray items in newspapers or periodicals: name of periodical, volume and issue numbers (if any), date in parentheses.
If the poem has appeared in more than one source, provide the most authoritative edition of it; if there is more than one variation, provide an article that discusses these.
The tag field entry can be a combination of any of the following values (tags are a controlled vocabulary, you can’t use any label you want):
LOVE, DEATH, WAR, POLITICS, MIGRATION, RELIGION, IDENTITY, COMMUNITY, LANGUAGE, NATURE, MORALITY, ECONOMICS, TECHNOLOGY, HUMOR
Tags are intended to indicate to users – who may not have copies of these poems or even easy access to them – what is explicitly in the content of the poem. In other words, this should enable a user to get an idea of what the poem discusses substantially without having the text. Please keep the tags to a minimum of the major topics of the poem, the best way to characterize it, rather than an exhaustive inventory.
Do not use a tag due to the appearance of metaphors or symbols: for example, Gaelic elegies often compare its subject to a fallen tree or his/her dependents to a flock of sheep missing its shepherd, but this is not reason to tag the poem with Nature.
Here are definitions of three poems composed by the poet above (the last two fictional), each with different types of sources.
"name": "Oran do dh'Ameireaga", "firstLine": "Gum bheil mi 'm onrachd 's a' choille ghruamaich", "composer": "Iain MacGilleain", "compPlace": “Antigonish”, "compYearEarliest": 1819, "compYearLatest": 1819, "language": "Gaelic", "textSource": "Donald Meek, The Wiles of the World: 64-73", "urlSource": "", tags: ["MIGRATION", "IDENTITY", "COMMUNITY", "LANGUAGE", "NATURE"]
"name": "Oran do dh’Ailean MacGilleain", "firstLine": "Ailein, chunna mi uair thu", "composer": "Iain MacGilleain", "compPlace": “Antigonish”, "compYearEarliest": 1820, "compYearLatest": 1826, "language": "Gaelic", "textSource": "Robert Dunbar, 'The Bard MacLean', Transactions of the Gaelic Society of Inverness 55 (2011): 64-73", "urlSource": "", tags: ["MIGRATION", "COMMUNITY" ]
"name": "Cumha do dh’Iain MacDhomhnaill", "firstLine": "Duisg, m’ anam, air ball", "composer": "Iain MacGilleain", "compPlace": “Antigonish”, "compYearEarliest": 1830, "compYearLatest": 1830, "language": "Gaelic", "textSource": "Calum MacLeod, 'Antigonish Poets', Literature in Nova Scotia: 64-73", "urlSource": "", tags: ["RELIGION", "COMMUNITY" ]
If you are contributing data to the project, you can either email me your data in a text file or else just insert the data entries into your email message. I’ll need to curate them into the system’s JSON data file in any case.
All data contributions will be acknowledged on the website.
Read the above guidelines carefully, and examine the example entries, and ask me if you have any questions or need any clarifications.
- You should have a Poet entry (with all of the fields defined as above) for every distinct poet who composed one or more of the poems you’re submitting (unless the author is unknown);
- A Poem entry for every poem (with all of the fields defined as above);
- A Place entry for every distinct birth and death location for every Poet and place of composition of each Poem (unless any location is unknown).
- Please send full bibliographic details for all books and articles cited (in abbreviated form) in the Poem entries. This is not necessary in the case of poems printed in isolation in periodicals (i.e., poems printed on their own in newspapers, etc.).