Next / Previous / Contents / Shipman's homepage

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

1. Requirements
1.1. How to get this document
2. Why XML?
3. Design considerations
3.1. The time dimension
3.2. The spatial dimension
3.3. The taxonomic dimension: what kind of bird?
3.4. Other dimensions of the data
4. Entity-relationship diagram
5. The schema
5.1. The preamble
5.2. note-set: the root element
5.3. The day-notes element
5.4. The day-summary element: information about the field day
5.5. The loc element: Defining location codes
5.6. The gps element: defining a waypoint
5.7. The day-annotation elements
5.8. The form element: records for one kind of bird
5.9. The taxon-group pattern: biological classification of the birds seen
5.10. The age-sex-group attributes
5.11. The loc-group pattern: locality attributes and content
5.12. The sighting-notes elements
5.13. The photo element
5.14. The floc element: Multiple sightings of a given form
5.15. The narrative elements
6. birdnotes.py: A Python interface
7. class BirdNoteSet: Container for notes
7.1. BirdNoteSet(): Constructor
7.2. BirdNoteSet.title(): Daily full title
7.3. BirdNoteSet.genDays(): Generate contained daily sets
7.4. BirdNoteSet.addDay(): Add a daily note set
7.5. BirdNoteSet.readFile(): Read an XML file
7.6. BirdNoteSet.writeFile(): Save as XML
8. class DayNotes: Notes for one day
8.1. DayNotes.title(): General title string
8.2. DayNotes.defaultLoc(): What is the default location?
8.3. DayNotes.lookupLoc(): Look up a location code
8.4. DayNotes.addForm(): Add a new form record
8.5. DayNotes.genForms(): Retrieve stored sightings
8.6. DayNotes.genFormsSeq(): Retrieve sightings in addition order
9. class DaySummary: Daily context
9.1. DaySummary.defaultLoc(): What is the default location?
9.2. DaySummary.addLoc(): Add a new locality code definition
9.3. DaySummary.lookupLoc(): Look up a location code
9.4. DaySummary.genLocs(): Retrieve all locality definitions
10. class Loc: Locality code definition
10.1. Loc.addGps(): Add a waypoint
10.2. Loc.genGps(): Generate waypoints
11. class Gps: GPS waypoint
12. class BirdForm: Records for one kind of bird
12.1. BirdForm.addSighting()
12.2. BirdForm.__len__(): Return the number of sightings
12.3. BirdForm.__getitem__(): Retrieve a child sighting
12.4. BirdForm.genSightings(): Retrieve all sightings
12.5. BirdForm.nSightings(): Number of sightings
12.6. BirdForm.getLocGroup(): Get the effective locality
13. class LocGroup: Inheritable locality data
14. class SightNotes: Sighting notes
14.1. SightNotes.addPara(): Add general notes
14.2. SightNotes.addPhoto(): Add a photo link
14.3. SightNotes.genPhotos(): Retrieve photo links
15. class Sighting: Single sighting
15.1. Sighting.getLocGroup()
16. class AgeSexGroup: Age and sex details
17. class Photo: Photograph link
18. class Narrative: General container for narrative
18.1. Narrative.addPara(): Add a paragraph
18.2. Narrative.__len__(): How many paragraphs?
18.3. Narrative.__getitem__(): Get one paragraph
18.4. Narrative.genParas(): Generate the contained paragraphs
19. class Paragraph: General container for a paragraph of narrative
19.1. Paragraph.addContent(): Add content
19.2. Paragraph.genContent(): Generate the phrase list

1. Requirements

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?

1.1. How to get this document

This publication is available in Web form and also as a PDF document. Please forward any comments to john@nmt.edu.