mappings/VegCore.csv: Moved Definition values that are actually comments into separate Comments column
dict2redmine: RedmineDictWriter: Omit empty columns from the fields table
dict2redmine: Generate an outline instead of a table so each term will be indexed in the page's table of contents
schemas/vegbien.sql: coordinates: coordinates_unique: Removed md5() around verbatimcoordinates because functions within unique indexes (other than the standard COALESCE) are not yet supported by the import algorithm
exc.py: e_msg(): Emit a warning instead of an AssertionError if e.args0 isn't a string, to assist in debugging malformed exceptions
mappings/VegCore.csv: sampleType: Re-sourced to bien_web.observationType
schemas/vegbien.sql: analytical_stem_view: scientificNameWithMorphospecies: Fixed bug where need to use the taxonomicname in accepted_taxonlabel instead of accepted_taxonverbatim, because taxonverbatim only contains fields provided by the data provider (in this case, TNRS), but TNRS does not provide the taxonomic name (taxon name+author), only the taxon name and author components separately
schemas/vegbien.sql: coordinates: coordinates_unique: Use md5() on verbatimcoordinates so that it doesn't cause the index row size to be exceeded. This should fix a bug in the HIBG import where long verbatimcoordinates values were causing the error 'OperationalError: index row size 2784 exceeds maximum 2712 for index "coordinates_unique"'.
backups/Makefile: Synchronization: Replaced download target, which downloads all backups, with %/download, which downloads just a specific backup, because you would generally only want to extract a single backup from the archive for reinstallation
backups/Makefile: Synchronization: Sync with jupiter instead of vegbiendev. This requires running `make backups/upload` on vegbiendev to archive the files, instead of `make backups/download` to download them to your local machine.
inputs/.geoscrub/geoscrub_output/map.csv: Removed no longer accurate comment that county is not yet used by VegBIEN
inputs/.geoscrub/geoscrub_output/map.csv: *validity: Remapped 2 ("Point is <=5km from putative GADM polygon, but still outside it") to true instead of false, because 5km is close enough to the polygon that the mismatch could result from shapefile simplifying, boundary changes, or other factors that don't affect geovalidity
inputs/.geoscrub/geoscrub_output/map.csv: *validity: Remapped 0 ("Complete name provided, but couldn't be scrubbed to GADM") to NULL instead of false, because the absence of a name match does not mean the coordinates are invalid
inputs/.{NCBI,TNRS}/import_order.txt: Added Source
input.Makefile: SVN: add: Add a Source table to store datasource metadata. This adds a Source table to all herbaria which are listed in .herbaria, and therefore didn't previously need a Source table to indicate their referenceType and sampleType.
inputs/input.Makefile: SVN: add: verify/: Added *.xls to svn:ignore
inputs/.geoscrub/geoscrub_output/postprocess.sql: Added index on decimallatitude, decimallongitude
Added inputs/.geoscrub/geoscrub_output/postprocess.sql, which adds NOT NULL constraints on decimallatitude, decimallongitude
schemas/vegbien.sql: analytical_*: Changed type of boolean columns to integer so that they will be exported as 1/0 instead of t/f by export_analytical_db. This will enable MySQL's LOAD DATA INFILE to import the values correctly.
backups/Makefile: Checksums: %.md5/test: Only use md5sum's -v option on Mac, because it's not supported on Linux (there, verbose mode is the default)
mappings/VegCore.csv: cultivated* source: Added picklist value to URL
README.TXT: Data import: On nimoy: Creating analytical_aggregate table: publish_analytical_db: Rewrapped line
README.TXT: Data import: On nimoy: Creating analytical_aggregate table: Changed name to analytical_aggregate_r<revision> to allow storing different versions simultaneously
publish_analytical_db: Require caller to specify the name of the table to load data into. This allows appending a revision to analytical_aggregate, or publishing a table other than analytical_aggregate.
backups/Makefile: SQL: Full DB: vegbien.%.backup: Also generate MD5 sum
inputs/import.stats.xls: Updated import times
README.TXT: Data import: Delete previous imports based on the full DB backup file
backups/Makefile: Support removing public schema versions based on the version of a full DB backup
mappings/VegCore.csv, Veg+-VegCore.csv: Removed the additional dict namespace for the SALVIAS sources. This removes the extra "dict:" namespace on the generate Redmine source term names.
mappings/VegCore.csv, Veg+-VegCore.csv: Added TNRS provider namespace, inserting it before BIEN in the sort order
mappings/VegCore.csv: Changed + to _ in URL fragments
mappings/VegCore.csv, Veg+-VegCore.csv: Removed the additional BIEN namespace for the BIEN sources, and use just BIEN2 and VegBIEN as the sub-namespaces. This removes the extra "BIEN:" namespace on the generate Redmine source term names.
mappings/VegCore.csv, Veg+-VegCore.csv: Removed the "terms" text in the current DwC terms' provider, and leave just the sort order. This removes the extra "terms:" namespace on the generate Redmine source term names.
dict2redmine: url_term(): Remove empty URL comments
dict2redmine: url_comment_text(): Interpret a URL comment containing just a number as a sort order without text
dict2redmine: url_term(): Prefix any provider in the URL to the term name, to create a namespace. Each hierarchical component of the provider is stored in a URL comment.
dict2redmine: Added url_comment_re
dict2redmine: Added url_comment_text()
dict2redmine: Call simplify_url() just on the first source so that source2redmine_url() can use the raw URL (to extract comments, etc.)
dict2redmine: Removed no longer used explicit Definition column #
dict2redmine: Use the input spreadsheet's column names and order, and pass through columns other than the term and sources columns
mappingsf/VegCore.csv, Veg+-VegCore.csv: Renamed Comments to Definition to match Redmine table
mappings/VegCore.csv, Veg+-VegCore.csv: Reversed order of Comments, Sources columns to match Redmine table order
dict2redmine: Store term_str in a var before using it, like sources_str
dict2redmine: Added Definition column
dict2redmine: Take term and sources col #s as args instead of hardcoding them by column name or position
dict2redmine: url_term(): Also match any namespace that's part of the term
dict2redmine: Sources: Use source2redmine_url() to extract the term from each source URL
dict2redmine: source2redmine_url(): Support empty URLs
dict2redmine: url_term(): Fixed bug where need to use match.group() instead of match.groups()
mappings/Makefile: Create VegCore.redmine from VegCore.csv
Added dict2redmine
mappings/VegCore.csv, Veg+-VegCore.csv: Renamed Source column to Sources because it can contain multiple sources
mappings/VegCore.csv, Veg+-VegCore.csv: Source: DwC terms: Scoped sort order by category, using the steps at <https://projects.nceas.ucsb.edu/nceas/projects/bien/wiki/VegCore_refactoring#Scope-DwC-sort-order-by-category>
mappings/VegCore.csv, Veg+-VegCore.csv: Source: VegX terms: Split combined field group/field sort order into separate sort orders for field and field group
mappings/VegCore.csv, Veg+-VegCore.csv: Source: VegX terms: Added top-level table sort order
mappings/VegCore.csv: taxonName: Reordered sources so it would sort with *TaxonName and scientificName
mappings/VegCore.csv: Source: DwC Taxon: Added sort order so it would sort together with its fields
mappings/VegCore.csv, Veg+-VegCore.csv: Source: DwC occurrenceID: Corrected sort order to 019 instead of 000
mappings/VegCore.csv, Veg+-VegCore.csv: Source: DwC terms: Added category, with category sort order, as URL comment. This will allow terms to be sorted just within their category rather than globally for DwC.
mappings/Veg+-VegCore.csv: Source: DwC: dcterms: Added back "dcterms:" prefix to URL fragment
mappings/VegCore.csv: Source: TNRS terms: Added sort order to web page fragment (simple_download, detailed_download)
mappings/VegCore.csv, Veg+-VegCore.csv: Removed no longer used Order within table column. Instead, embed the sort order in the URL using a () comment.
mappings/VegCore.csv, Veg+-VegCore.csv: Merged the Order within table column with the Source URL, using the steps at <https://projects.nceas.ucsb.edu/nceas/projects/bien/wiki/VegCore_refactoring#Merging-the-Order-within-table-column-with-the-Source-URL>. Sorting on the Source column now groups related terms together according to their sort order in the source they came from.
mappings/Veg+-VegCore.csv: Order within table: Filled in missing sort orders
mappings/VegCore.csv, Veg+-VegCore.csv: Source: Web pages: Use / instead of . to separate nested elements of URL fragment. Use _ instead of + to represent space.
mappings/VegCore.csv: Order within table: Filled in missing sort orders
mappings/VegCore.csv: Source: Removed trailing whitespace
mappings/VegCore.csv: Order within table: Fixed to include one entry for every URL, including when the Order field is empty and there are multiple URLs
mappings/VegCore.csv: Order within table: Fixed to include one entry for every URL
mappings/VegCore.csv: Source: "dcterms:" terms: Fixed URL fragments to use : instead of # after dcterms
mappings/VegCore.csv, Veg+-VegCore.csv: Sources: BIEN2: Moved DB sort order right before the DB name in the URL to avoid duplicating the DB name in the comment
mappings/VegCore.csv, Veg+-VegCore.csv: Sources: Added sort order comments to URLs so they sort in the order indicated at <https://projects.nceas.ucsb.edu/nceas/projects/bien/wiki/VegCore#Sources>. URL comments are enclosed in (), and the sort order element of a comment is a number right after the ( .
mappings/Makefile: .Veg+-VegCore.csv.last_cleanup: Sort by the source URL instead of the VegCore term
mappings/Makefile: Split .Veg+-VegCore.csv.last_cleanup and .VegX-VegCore.csv.last_cleanup into separate targets so their recipes can be different
mappings/VegCore-VegBIEN.csv: Mapped dcterms:rights
backups/Makefile: Synchronization: Also sync *.md5
import_all: Fixed bug where need to wait for all asynchronous commands started before the main import, not just the first
import_all: Import all Source tables before the herbaria list, so that any custom metadata will override the info in the herbaria list
input.Makefile: Tables discovery: $(dontImport): Don't import the Source table when $import_source env var is set to ""
Added inputs/VASCAN/Source/
csvs.py: stream_info(): Use the Excel dialect and an empty header if the CSV file is empty
pg_dump_limit: Also remove CREATE DATABASE statements
Added inputs/JBM/Source/
mappings/Veg+-VegCore.csv: Removed type->dcterms:type automapping because this term can have many different meanings
Added inputs/NVS/Source/
Added inputs/IUCN/European_Red_List_Plants/header.csv
Added inputs/CVS/_src/
input.Makefile: SVN: $(svnFilesGlob): Include test.xml.ref instead of all test*.xml* to avoid including test outputs
inputs/*/verify/: Updated svn:ignore
mappings/VegCore-VegBIEN.csv: Mapped verbatimCoordinates
Updated inputs/HIBG/Specimen/new_terms.csv
Added inputs/HIBG/Source/
inputs/HIBG/verify/: Updated svn:ignore