Abstract
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.
This publication is available in Web form and also as a PDF document.
Please forward any comments to john@nmt.edu.
Table of Contents
note-set: the root elementday-notes elementday-summary element:
information about the field dayloc element: Defining location
codes
gps element: defining a
waypoint
day-annotation elementsform element: records for one
kind of bird
taxon-group pattern:
biological classification of the birds seen
age-sex-group attributesloc-group pattern:
locality attributes and content
sighting-notes elementsphoto elementfloc element: Multiple
sightings of a given form
birdnotes.py: A Python interfaceclass BirdNoteSet: Container for
notesclass DayNotes: Notes for one dayDayNotes.title(): General title stringDayNotes.defaultLoc(): What is the
default location?DayNotes.lookupLoc(): Look up a
location codeDayNotes.addForm(): Add a new form
recordDayNotes.genForms(): Retrieve stored
sightingsDayNotes.genFormsSeq(): Retrieve
sightings in addition orderclass DaySummary: Daily contextclass Loc: Locality code definitionclass Gps: GPS waypointclass BirdForm: Records for one kind of
birdclass LocGroup: Inheritable locality dataclass SightNotes: Sighting notesclass Sighting: Single sightingclass AgeSexGroup: Age and sex detailsclass Photo: Photograph linkclass Narrative: General container for
narrativeclass Paragraph: General container for
a paragraph of narrativeclass BirdNoteTree: A complete set of
notesclass FlatSighting: Complete sighting
recordFormal 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.