This publication describes an XML schema for representing a birdwatcher's field notes, along with instructions for using an accompanying module written in the Python programming language.
Table of Contents
note-set: the root element
day-summaryelement: information about the field day
locelement: Defining location codes
gpselement: defining a waypoint
formelement: records for one kind of bird
taxon-grouppattern: biological classification of the birds seen
loc-grouppattern: locality attributes and content
flocelement: Multiple sightings of a given form
birdnotes.py: A Python interface
class BirdNoteSet: Container for notes
class DayNotes: Notes for one day
DayNotes.title(): General title string
DayNotes.defaultLoc(): What is the default location?
DayNotes.lookupLoc(): Look up a location code
DayNotes.addForm(): Add a new form record
DayNotes.genForms(): Retrieve stored sightings
DayNotes.genFormsSeq(): Retrieve sightings in addition order
class DaySummary: Daily context
class Loc: Locality code definition
class Gps: GPS waypoint
class BirdForm: Records for one kind of bird
class LocGroup: Inheritable locality data
class SightNotes: Sighting notes
class Sighting: Single sighting
class AgeSexGroup: Age and sex details
class Photo: Photograph link
class Narrative: General container for narrative
class Paragraph: General container for a paragraph of narrative
class BirdNoteTree: A complete set of notes
class FlatSighting: Complete sighting record
Formal field notes taken while birdwatching have some value to the scientific community. The system described here is primarily intended to archive such notes and make them accessible for study.
A secondary purpose is to serve the needs of recreational birdwatchers who want to know what others have seen so they can plan their own field trips.
This system does not address the needs of a system for storing the notes from multiple observers. The identity of the primary observer is not represented internally, although that observer can mention other observers who were present for some or all of the sightings.
At this writing, the primary thrust of the design effort is to produce an internal representation of bird notes that is accurate yet flexible and reasonably easy to use. The external rendering of the encoded notes is an open-ended challenge. At a minimum, the notes ought to be available on the Web in chronological order.
Future renderings will include an archival print form, and assorted facilities for querying records through the Web. Such queries will allow users to limit records by time period, locality, type of bird, and type of data. For example, a user might ask, what are all this observer's records for Vermilion Flycatcher? What records are there of the vocalizations of Verdin? What are the observer's American Birding Association totals for countable species for the state of New Mexico?
This document includes:
A discussion of why XML was the chosen representation, and an XML schema that defines the document type used to represent the bird records.
A programmatic interface in the Python language that can be used to access records in that XML document type.
The actual implementation of the Python interface is
discussed in a companion publication,
birdnotes.py: Objects to represent bird note files.