Giter VIP home page Giter VIP logo

gsh's Introduction

gsh

exist-db CI

Draft work on historical country names database, aka, geospatial history (gsh) project.

Scope

This effort aims to capture major changes in the names and statuses of countries during the span existence of the United States, that is, the period 1776-present. The purpose is to create a database that allows us to refer to countries past and present using historically accurate, temporally specific names. This database will unlock the ability to associate countries on today's map with earlier incarnations (e.g., Vietnam and Indochina) and track changes in names and sovereignty, among other kinds of changes.

Even though we call this database "historical country names," the database actually uses a somewhat broader term than countries to refer to its basic unit: "territories." This concept encompasses independent states, dependencies, and areas of special sovereignty. We borrow these distinctions from the Bureau of Intelligence and Research (INR), which publishes tables of "Independent States in the World" and "Dependencies and Areas of Special Sovereignty." (See these respective lists at http://www.state.gov/s/inr/rls/4250.htm and http://www.state.gov/s/inr/rls/10543.htm.)

This database takes INR's lists, which capture today's map, and introduces a historical component: we track when each territory began and its immediate "predecessor," or previous incarnation. For each predecessor, we track its dates of validity, and its own immediate predecessors and successors. Thus, for each "territory" in this database, we track the following items:

  1. Name: We borrow INR's distinction between a territory's "short-form name" and "long-form name." For example, in the case of Afghanistan, "Afghanistan" is the short-form name, and "Islamic Republic of Afghanistan" is the long-form name. For today's map, we follow INR. For historical entries, When either of a territory's names change, we create a new record to reflect the change. For example, when the Czech Republic officially declared Czechia to be its short-form name in 2016, we create a new territory entry, citing the earlier entry as Czechia's predecessor. Not all territories have long-form names different from the short-form name (e.g., Canada), which we indicate by supplying "-" for the long-form name.

  2. Type of territory: We borrow INR's distinction between "independent states" and "dependencies and areas of special sovereignty." The distinction is rooted in the Westphalian model of state foundation. "Independent states" have an independent, sovereign government and a stable territory, well-defined borders, and population. "Dependencies" are colonies or territorial possessions of independent states. "Areas of special sovereignty" indicate areas whose sovereignty is disputed, indeterminate, or where the U.S. does not recognize claims; these disputes are summarized in the footnotes of INR's lists, and we can capture this information in the Notes field of each dependency. Whereas INR tracks the state with sovereignty over a dependency, our database does not systematically track this at present; but if we know information about sovereignty, we can use the Notes field to indicate this. When a territory's type changes, we create a new entry to reflect the change. For example, we have two records for Korea in the period 1910-48. In the first record, Korea is a dependency (of the Japanese Empire) from 1910-45, and in the second record, Korea is an independent state (1945-48).

  3. Years of validity: The year that a territory, as named and typed above, starts and ends. If we know more precisely when a transition occurred (i.e., the month, or month and day), use the Notes field to indicate this.

  4. Predecessors and successors: The terms "predecessor and successor" are meant to be general and free of judgement; they indicate that some significant event happened, such as a change of name or type, as described in the discussion of these items above. To supplement this information, we would like to characterize each change as one of the following:

  • Independence (Country declares independence from a colonial power; example: Ghana)
  • Secession (Country secedes from another country; example: South Sudan)
  • Split (Country splits into two or more countries; example: Czechoslovakia becomes Czech Republic and Slovak Republic)
  • Merger (Two or more countries merge to form one country; example: Egypt and Syria join to become the United Arab Republic)
  • Rename (Country changes name; example: Cape Verde becomes Cabo Verde)

There may be additional reasons for changes; if you find one that does not fit into one of the above five categories, please describe it as best you can in your notes.

Build

To get started, clone the repository to your desktop

To run the app (assumes ant and eXist)

  • Build the xar file(s) with command:

    1. Single xar file: The collection.xconf will only contain the index, not any triggers!

      ant
      1. Since Releases have been automated when building locally you might want to supply your own version number (e.g. X.X.X) like this:
    ant -Dapp.version=X.X.X

Install

  • Open eXist Dashboard > Package Manager
  • Click on the + icon and drag the build/gsh-*.xar file onto the window
  • Close the Package Manager
  • Select the app icon from the Dashboard's menu of apps
  • Go to the territories section

To upload new versions of the app

  • In the Package Manager, delete the existing version of the app
  • Run ant and upload again

To edit the data (assumes oXygen)

  • Open gsh.xar in oXygen
  • Open files from the data/territories folder
  • As you make edits, oXygen should flag schema issues
  • Also, in the app, cells with likely problems are flagged by * and have a yellow background
  • Commit fixes as pull requests

Release

Releases for this data package are automated. Any commit to the master branch will trigger the release automation.

All commit message must conform to Conventional Commit Messages to determine semantic versioning of releases, please adhere to these conventions, like so:

Commit message Release type
fix(pencil): stop graphite breaking when too much pressure applied Patch Release
feat(pencil): add 'graphiteWidth' option Minor Feature Release
perf(pencil): remove graphiteWidth option

BREAKING CHANGE: The graphiteWidth option has been removed.
The default graphite width of 10mm is always used for performance reasons.
Major Breaking Release

When opening PRs commit messages are checked using commitlint.

gsh's People

Contributors

joewiz avatar duncdrum avatar windauer avatar plutonik-a avatar wolfgangmm avatar tuurma avatar zwobit avatar dependabot[bot] avatar

Watchers

 avatar James Cloos avatar  avatar  avatar  avatar

gsh's Issues

Poster - notes on Jamaica (117) and Grenada (93)

  • British Windward Islands (588) was the British colonial administration over these islands, 1833-1960, when the last governor left
  • West Indies Federation (566) was an attempt at a state, which lasted from 1958-62, when the Federation was dissolved and the members reverted to colonial status, and each remained as individual colonies without a larger administration, until their independence, years shown below (only 6 dates, were given for the following 7 entries, so they might be offset):
    • Barbados: 1966
    • Dominica: 1966
    • Grenada: 1978
    • Antigua and Barbuda: 1974
    • Jamaica: 1981
    • Saint Lucia: 1979
    • Saint Vincent and the Grenadines: 1979

Prepare Territories for Review

Complete to get territories ready

  • Draft directions
  • Update territories to use integer IDs (see new-ids branch)
  • Update locales, posts to use new territory IDs (see new-ids branch)
  • Draft definitions of terms (see readme)
  • Export territories to OpenRefine to be able to explore the data with facets
  • Decide how reviewers are going to view and edit the data

Complete before merging "new-ids" branch

  • Update POCOM to use new territory IDs
  • Update locales, posts to use integer IDs

invalid xmldb URI error from console module (monex) upon install

this is out of scope. There are problems with tests for the console module failing (and not being executed) in monex.

#52 1134.3 02 Apr 2024 01:15:06,494 [main] ERROR (DocumentTriggers.java [afterCreateDocument]:240) - Invalid URI: xmldb URI scheme does not start with xmldb:: http://exist-db.org/xquery/console 
#52 1134.3 java.lang.IllegalArgumentException: Invalid URI: xmldb URI scheme does not start with xmldb:: http://exist-db.org/xquery/console
#52 1134.3 	at org.exist.xmldb.XmldbURI.create(XmldbURI.java:234) ~[exist-core-6.2.0.jar:6.2.0]
#52 1134.3 	at org.exist.xmldb.XmldbURI.append(XmldbURI.java:630) ~[exist-core-6.2.0.jar:6.2.0]
#52 1134.3 	at org.exist.extensions.exquery.restxq.impl.ExistXqueryRegistry.getAbsoluteModuleHint(ExistXqueryRegistry.java:456) ~[exist-restxq-6.2.0.jar:6.2.0]
#52 1134.3 	at org.exist.extensions.exquery.restxq.impl.ExistXqueryRegistry.recordMissingDependency(ExistXqueryRegistry.java:413) ~[exist-restxq-6.2.0.jar:6.2.0]

2 xconf files on the same level

there are 2 configuration files present in gsh repo
collection.xconf and replication.xconf

as per https://github.com/joewiz/gsh/blob/master/pre-install.xql#L34 only replication.xconf is copied to /db/system/config and therefore range index configuration from collection.xconf is currently ineffective.

        <range>
            <create qname="territory">
                <field name="territory-id" type="xs:string" match="id"/>
            </create>
        </range>

Happy to merge them but I wonder what should be our naming policy here? I'd personally follow eXist-db recommended naming and have collection.xconf stay and say goodbye to replication.xconf. What do you think @joewiz?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.