Plant Collections Data Model
- Overview
- Terminology
- Item Types
- Defining Relationships Between Instances
- How to specify locations
- How to Specify People
- Example Queries
Overview
This document provides an overview of the data model for the Plant Collections project. The primary focus of this document is on defining the item types for use in Google Base, however their definition will likely be the similar regardless of the protocol adopted.

Figure 1. Overview of item types. Those with dashed outlines are not implemented at this stage and will likely be constructed programatically from various sources.
Terminology
- item
- An item is an instance of a record, equivalent to a record in a relational database
- item type
- The definition of an item, essentially the set of attributes available for an item instance. Type definitions in Google Base are loose, and not enforced at the database level. Conceptually equivalent to a table definition in a relational database.
- attribute
- A property of an item, equivalent to a field in a relational database. Attributes have a fundamental type that are listed at http://code.google.com/apis/base/attrs-queries.html#attTypes .
Item Types
- schema
- schema/BotanicGarden
- schema/BotanicGardenItem
- schema/CommercialSource
- schema/EnvironmentSummary
- schema/GardenAccession
- schema/PlantPropagation
- schema/SamplingLocation
Defining Relationships Between Instances
Relationships between items are defined by common attribute values in each item. So for example, the association between Environment Summary items and Botanic Garden items is defined by the location attribute of each (i.e. "find all environment summary items with location near the botanic garden location"). In this way, more than one Environment Summary item may be created for a particular garden without concern that object identifiers created by Google Base or programatically are maintained. Similarly, for relevant information about a particular plant can be discovered by searching on the scientific name. This way, as more item types (such as propagation information, conservation status, and so forth) are added to Google Base, that information can be automatically associated without modification to existing entries.
How to specify locations
Instead of splitting a location into its individual components (i.e. street address, zip code, …), use a notation like:
For street addresses:
10 Market St, San Francisco, CA, USA
For known latitude, longitude:
+37.795-122.395
Latitude and longitude should only be expressed as decimal degrees in the EPSG:4326 projection (WGS-84).
How to Specify People
When specifying a contact person, use a single field, with values like:
Boyce Tankersley; email:boyce@some.email; tel:+1-703-555-5555; fax:+1-703-555-5556; addr:1000 Lake Cook Drive, Glencoe, IL 6022, USA
It is recommended that emails are obfuscated such that a person can determine the address, but it is not so obvious to a computer. For example, instead of boyce@some.email write boyce at some dot email.
Note: This format is not really satisfactory. Perhaps Boyce Tankersley (email: boyce at some dot email; tel: +1-703-555-5555) might be a bit more readable.
Example Queries
Note that in all cases, the results are limited to 1000 entries unless some programmatic intervention is used and the results are paged using the indexer attribute.
All Botanic Gardens:: http://www.google.com/base/feeds/snippets/-/Botanic%20Garden or
http://www.google.com/base/feeds/snippets?bq=[item type: Botanic Garden]
Botanic Gardens within 30 miles of Chicago:
http://www.google.com/base/feeds/snippets?bq=[item type:Botanic Garden] [location: @"Chicago, IL" + 30mi]
Botanic Garden or Environment Summary within 30 miles of Chicago:
bq=([item type:Botanic Garden] | [item type:Environment Summary]) [location: @"Chicago, IL" + 30mi]
Environment data near (within one mile) Chicago Botanic Garden, requires some programmatic processing, pseudocode:
locations = GetLocations( bq=[item type: "Botanic Garden"]&q="Chicago Botanic Garden" ) environments = query on locations ORed together, eg: bq=[item type: "environment summary"]([location: +42.147222-87.790556 + 1mi ] | [location: @"1000 Lake Cook Drive, Glencoe, IL 6022, USA" + 1mi])
All Garden Accessions from Chicago Botanic Garden:
bq=[item type: "Garden Accession"][institution code: "CBG-PC"]
All Garden Accessions of Acer saccharum:
bq=[item type: "Garden Accession"][scientific name: "Acer saccharum"]
List the genera of family asteraceae in garden accessions:
/base/feeds/attributes/genus(text)?bq=[item type: garden accession][family: asteraceae]&max-values=50
