style naming, id, link conventions

Alright, how about let’s make this specific?

An example:

American Sociological Review

Proposed guidelines (subject to radical revision if people think it

Identifiers and URLs

Style naming and identification are important to properly manage
styles, particularly in a distributed context. A style title provides a
natural language description to a user, while ids, links and file names
all provide information critical so that tools can properly access

CSL metadata borrows its content model from Atom. As with Atom, the id
element should contain a globally unique and stable identifier, encoded
as a uri.

In many cases, the value for the link element will be the same as the
id, but strictly speaking they need not be. An id provides for
identification, while link for resolution. Ideally, they are
coincident, but practically speaking, it is common that urls change.

Both of these are important because other aspects of the design are
based on them. For example, styles may contain an optional "basedOn"
element, which is a uri reference to the style from which it inherits.

The CSL namespace provides a convenient uri base for just this, and the
site to which it points a convenient place to store the styles. But one
can host a directory of styles anywhere, of course.

Style Names

For purposes of constructing the id and link values, and thus the file
name, you should abbreviate long titles, use underscores to replace
spaces, and use the “csl” filename extension. For example, a style file
for the “American Sociological Review” would be: am_sociol_rev.csl.
Core styles alone – such as APA and MLA – use shorter acronyms for
theiir file names and id and link values (apa.csl and mla.csl




Sounds alright. I just hope that a shortened name won’t to often clash
with another publication.


Yeah, I think we need to specify the abbreviation algorithm, maybe
pointing to one of those that Simon mentioned.


Actually, this one is good; ought to just be able to include the link:

It even specifies the algorithm; e.g.:

Each word in the title proper is compared against a master list of
abbreviations issued by the ISSN International Centre. If the word or
word root is found in the master list, that abbreviation is used.

If a word is not found in the ISSN list, the word appears in the title
abbreviation as it appears in the title proper.

Articles, conjunctions, and prepositions are always omitted from title

… etc.

I wonder if we could get access to that “master list”? Probably not,
but OTOH, it probably be wouldn’t hard to construct one that cover a
lot of common cases (journal, review, annals, etc.).


A little Ruby script that does this:======================
#! /usr/bin/env ruby

IGNORE = [“of”, “the”]

“Annals” => “An”,
“Association” => “Assoc”,
“American” => “Am”,
“Geographers” => “Geog”

def abbreviate(title, form=display)
words = title.split(/\s/)
abbreviated_words = []
words.each do |word|
if IGNORE.find{|w| w == word} then nil
elsif LOOKUP[word] then
abbreviated_words << LOOKUP[word]
abbreviated_words << word
if form == “filename” then
return abbreviated_words.join("_").downcase + “.csl"
return abbreviated_words.join(” ")

title = "Annals of the Association of American Geographers"
puts "title: " + title
puts "short title: " + abbreviate(title)
puts "file name: " + abbreviate(title, form=“filename”)


title: Annals of the Association of American Geographers
mainshort title: An Assoc Am Geog
file name: an_assoc_am_geog.csl

Ahem, not sure why I have that spurious “main” bit there, the LOOKUP
table would have to be pretty damned large, and I’m not sure how one
sensibly deals with capitalization, but it otherwise works :slight_smile: