{"action":"created","issue":{"url":"https://api.github.com/repos/ropenscilabs/taxa/issues/2","repository_url":"https://api.github.com/repos/ropenscilabs/taxa","labels_url":"https://api.github.com/repos/ropenscilabs/taxa/issues/2/labels{/name}","comments_url":"https://api.github.com/repos/ropenscilabs/taxa/issues/2/comments","events_url":"https://api.github.com/repos/ropenscilabs/taxa/issues/2/events","html_url":"https://github.com/ropenscilabs/taxa/issues/2","id":142756390,"number":2,"title":"Class relationships ","user":{"login":"zachary-foster","id":6090555,"avatar_url":"https://avatars.githubusercontent.com/u/6090555?v=3","gravatar_id":"","url":"https://api.github.com/users/zachary-foster","html_url":"https://github.com/zachary-foster","followers_url":"https://api.github.com/users/zachary-foster/followers","following_url":"https://api.github.com/users/zachary-foster/following{/other_user}","gists_url":"https://api.github.com/users/zachary-foster/gists{/gist_id}","starred_url":"https://api.github.com/users/zachary-foster/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zachary-foster/subscriptions","organizations_url":"https://api.github.com/users/zachary-foster/orgs","repos_url":"https://api.github.com/users/zachary-foster/repos","events_url":"https://api.github.com/users/zachary-foster/events{/privacy}","received_events_url":"https://api.github.com/users/zachary-foster/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":8,"created_at":"2016-03-22T19:38:13Z","updated_at":"2016-09-08T23:50:51Z","closed_at":null,"body":"I am trying to think of what classes are needed and how they should be related to allow for a flexible way of manipulating taxa and items that makes the fewest assumptions about the data and the users intentions. Below is the best I can come up with so far. \r\n\r\n![class_concept_graph](https://cloud.githubusercontent.com/assets/6090555/13964717/57bd6bd4-f028-11e5-9857-c44c3946f204.png)\r\n\r\nThe ovals represent classes.\r\n\r\n* **Database_ID**: Simple class to store known databases (e.g. ncbi). It might have a url, a description, and some rules on ID syntax.\r\n* **Taxon_ID**: Similar to what you proposed [here](https://github.com/ropensci/taxize/issues/508). Arbitrary IDs should be allowed when no database is used. \r\n* **Item_ID**: Similar to Taxon_ID, but for sequences (and perhaps other things). Arbitrary IDs should be allowed when no database is used.\r\n* **Taxon**: A  Taxon_ID with extra information, such as the name, hierarchy, and user data. Similar to `taxa::taxon`. \r\n* **Item**: A  Item_ID  with extra information, such as the name, sequence, and user data. There could be a function like `metacoder::extract_taxonomy` that uses information in user data to assign item and taxon ids from databases.\r\n* **Taxonomy**: A unique set of taxa. When combining taxa with different Database_ID, an separate arbitrary ID might be required.\r\n* **Classified**: A set of items classified by a unique set of taxa. Not all taxa need have an item; this distinguishes it from a set of items with taxonomy information. Having this information associated will allow for modifications of the taxonomy to effect the items and visa versa. Similar to `taxa/metacoder::classified`\r\n\r\n\r\n"},"comment":{"url":"https://api.github.com/repos/ropenscilabs/taxa/issues/comments/245777734","html_url":"https://github.com/ropenscilabs/taxa/issues/2#issuecomment-245777734","issue_url":"https://api.github.com/repos/ropenscilabs/taxa/issues/2","id":245777734,"user":{"login":"sckott","id":577668,"avatar_url":"https://avatars.githubusercontent.com/u/577668?v=3","gravatar_id":"","url":"https://api.github.com/users/sckott","html_url":"https://github.com/sckott","followers_url":"https://api.github.com/users/sckott/followers","following_url":"https://api.github.com/users/sckott/following{/other_user}","gists_url":"https://api.github.com/users/sckott/gists{/gist_id}","starred_url":"https://api.github.com/users/sckott/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sckott/subscriptions","organizations_url":"https://api.github.com/users/sckott/orgs","repos_url":"https://api.github.com/users/sckott/repos","events_url":"https://api.github.com/users/sckott/events{/privacy}","received_events_url":"https://api.github.com/users/sckott/received_events","type":"User","site_admin":false},"created_at":"2016-09-08T23:50:51Z","updated_at":"2016-09-08T23:50:51Z","body":"oh yeah, install from this branch https://github.com/ropenscilabs/taxa/tree/taxa-class-rework\r\n\r\n`devtools::install_github(\"ropenscilabs/taxa@taxa-class-rework\")`"}}
{"actor":{"display_login":"sckott"}}