diff options
| author | Bryan Newbold <bnewbold@robocracy.org> | 2018-06-20 17:54:54 -0700 | 
|---|---|---|
| committer | Bryan Newbold <bnewbold@robocracy.org> | 2018-06-20 17:54:54 -0700 | 
| commit | 43e74c2e81c64d6d4f4e644cc5a6f75945ff660d (patch) | |
| tree | 769cae1607f3b8b9fff43fce99028bda571c2145 | |
| parent | 381fe70c56b1a936d4eef676ee8ba546f6a3cf30 (diff) | |
| download | fatcat-43e74c2e81c64d6d4f4e644cc5a6f75945ff660d.tar.gz fatcat-43e74c2e81c64d6d4f4e644cc5a6f75945ff660d.zip | |
more progress on crossref+orcid importers
| -rwxr-xr-x | python/client.py | 28 | ||||
| -rw-r--r-- | python/fatcat/crossref_importer.py | 85 | ||||
| -rw-r--r-- | python/fatcat/importer_common.py | 44 | ||||
| -rw-r--r-- | python/tests/crossref.py | 8 | ||||
| -rw-r--r-- | python/tests/files/ISSN-to-ISSN-L.snip.txt | 10 | ||||
| -rw-r--r-- | python/tests/files/crossref-works.2018-01-21.badsample.json | 3 | 
6 files changed, 126 insertions, 52 deletions
| diff --git a/python/client.py b/python/client.py index 9631318a..9a2ed50d 100755 --- a/python/client.py +++ b/python/client.py @@ -7,13 +7,19 @@ from fatcat.orcid_importer import FatcatOrcidImporter  def run_import_crossref(args):      fcc = FatcatCrossrefClient(args.host_url) -    fcc.import_crossref_file(args.json_file) -    # create_containers=args.create_containers +    fcc.import_crossref_file( +        args.json_file, +        issn_map_file=args.issn_map_file, +        create_containers=(not args.no_create_containers))  def run_import_orcid(args):      foi = FatcatOrcidImporter(args.host_url)      foi.process_batch(args.json_file, size=args.batch_size) +def run_import_manifest(args): +    fmi = FatcatManifestImporter(args.host_url) +    fmi.process_db(args.db_path, size=args.batch_size) +  def health(args):      rfac = RawFatcatApiClient(args.host_url)      print(rfac.health()) @@ -32,10 +38,11 @@ def main():      sub_import_crossref.set_defaults(func=run_import_crossref)      sub_import_crossref.add_argument('json_file',          help="crossref JSON file to import from") -    # TODO: -    #sub_import_crossref.add_argument('--create-containers', -    #    action='store_true', -    #    help="if true, create containers based on ISSN") +    sub_import_crossref.add_argument('issn_map_file', +        help="ISSN to ISSN-L mapping file") +    sub_import_crossref.add_argument('--no-create-containers', +        action='store_true', +        help="skip creation of new container entities based on ISSN")      sub_import_orcid = subparsers.add_parser('import-orcid')      sub_import_orcid.set_defaults(func=run_import_orcid) @@ -46,6 +53,15 @@ def main():          help="size of batch to send",          default=50, type=int) +    sub_import_manifest = subparsers.add_parser('import-orcid') +    sub_import_manifest.set_defaults(func=run_import_orcid) +    sub_import_manifest.add_argument('db_path', +        help="sqlite3 database to import from", +        type=argparse.FileType('r')) +    sub_import_orcid.add_argument('--batch-size', +        help="size of batch to send", +        default=50, type=int) +      sub_health = subparsers.add_parser('health')      sub_health.set_defaults(func=health) diff --git a/python/fatcat/crossref_importer.py b/python/fatcat/crossref_importer.py index 4c68230d..a7166bc3 100644 --- a/python/fatcat/crossref_importer.py +++ b/python/fatcat/crossref_importer.py @@ -8,7 +8,9 @@ from fatcat.importer_common import FatcatImporter  class FatcatCrossrefImporter(FatcatImporter): -    # TODO: overload __init__ to handle create_containers +    def __init__(self, host_url, issn_map_file, create_containers=True): +        super().__init__(host_url, issn_map_file) +        self.create_containers = create_containers      def parse_crossref_dict(self, obj):          """ @@ -19,50 +21,49 @@ class FatcatCrossrefImporter(FatcatImporter):          # contribs          contribs = []          for i, am in enumerate(obj['author']): +            creator_id = None +            if 'ORCID' in am.keys(): +                creator_id = self.lookup_orcid(am['ORCID'].split('/')[-1])              contribs.append(fatcat_client.ReleaseContrib( -                creator_id=None, # TODO: orcid lookup -                index=i, +                creator_id=creator_id, +                index=i+1,                  # Sorry humans :(                  raw="{} {}".format(am['given'], am['family']),                  role="author"))          # container -        # TODO: ISSN vs. ISSN-L          issn = obj.get('ISSN', [None])[0] -        container_id = self.lookup_issnl(issn) +        issnl = self.issn2issnl(issn) +        container_id = None +        if issnl: +            container_id = self.lookup_issnl(issnl) +        publisher = obj['publisher'] -        ## TODO: create containers in-line like this? -        #container = dict( -        #    issn=issn, -        #    name=obj['container-title'][0], -        #    container=container_id, -        #    #sortname=obj['short-container-title'][0]) -        #    publisher=obj['publisher']) -        #if container_id is None and self.create_containers and issn != None: -        #    rv = self.post('/v0/container', data=dict( -        #        issn=container['issn'], -        #        publisher=container['publisher'])) -        #    assert rv.status_code == 201 -        #    container_id = rv.json()['id'] -        #    print("created container: {}".format(issn)) -        #    container['id'] = container_id -        #    self._issn_map[issn] = container_id +        ce = None +        if container_id is None and self.create_containers and issnl != None: +            ce = fatcat_client.ContainerEntity( +                issnl=issnl, +                publisher=publisher, +                name=obj['container-title'][0]) +            print("created container: {}".format(issnl))          # references          refs = []          for i, rm in enumerate(obj.get('reference', [])): +            try: +                year = int(rm.get('year')) +            except: +                year = None              refs.append(fatcat_client.ReleaseRef( -                index=i, +                index=i+1,                  target_release_id=None, # TODO: DOI lookup: rm.get("DOI", None), -                # TODO: all these -                key=None, -                year=None, -                container_title=None, -                title=None, -                locator=None, -                # TODO: how to generate a proper stub here from k/v objdata? -                # TODO: just dump JSON here if we didn't get a match? -                raw="| ".join(rm.values()))) +                # unreliable for crossref: key=rm['key'].split('|')[-1], +                year=year, +                container_title=rm.get('volume-title'), +                title=rm.get('title'), +                locator=rm.get('first-page'), +                # TODO: just dump JSON somewhere here? +                raw=rm.get('unstructured')))          # work          we = fatcat_client.WorkEntity( @@ -73,34 +74,38 @@ class FatcatCrossrefImporter(FatcatImporter):          extra = dict(crossref={              'links': obj.get('link', []),              'subject': obj.get('subject'), -            'crossref-type': obj['type'], +            'type': obj['type'], +            'license': obj.get('license', [dict(URL=None)])[0]['URL'] or None,              'alternative-id': obj.get('alternative-id', [])})          re = fatcat_client.ReleaseEntity( -            work_id='null', # XXX: +            work_id='tbd', # gets set later, I promise!              title=obj['title'][0],              contribs=contribs,              refs=refs,              container_id=container_id,              release_type=obj['type'], -            doi=obj['DOI'], +            doi=obj['DOI'].lower(),              release_date=obj['created']['date-time'], -            #license=obj.get('license', [dict(URL=None)])[0]['URL'] or None,              issue=obj.get('issue'),              volume=obj.get('volume'),              pages=obj.get('page'),              extra=extra) -        return (we, re) +        return (we, re, ce)      def create_row(self, row, editgroup_id=None):          if row is None: -            continue +            return          obj = json.loads(row) -        both = self.parse_crossref_dict(obj) -        if both is not None: -            (we, re) = both +        entities = self.parse_crossref_dict(obj) +        if entities is not None: +            (we, re, ce) = entities              we.editgroup_id = editgroup_id              re.editgroup_id = editgroup_id +            if ce is not None: +                ce.editgroup_id = editgroup_id +                container = self.api.create_container(ce) +                re.container_id = container.ident              created = self.api.create_work(we)              re.work_id = created.ident              self.api.create_release(re) diff --git a/python/fatcat/importer_common.py b/python/fatcat/importer_common.py index 98bfb26e..c24565b4 100644 --- a/python/fatcat/importer_common.py +++ b/python/fatcat/importer_common.py @@ -13,11 +13,15 @@ def grouper(iterable, n, fillvalue=None):  class FatcatImporter: -    def __init__(self, host_url): +    def __init__(self, host_url, issn_map_file=None):          conf = fatcat_client.Configuration()          conf.host = host_url          self.api = fatcat_client.DefaultApi(fatcat_client.ApiClient(conf)) -        self._issnl_map = dict() +        self._issnl_id_map = dict() +        self._orcid_id_map = dict() +        self._issn_issnl_map = None +        if issn_map_file: +            self.read_issn_map_file(issn_map_file)      def process_source(self, source, group_size=100):          """Creates and auto-accepts editgropu every group_size rows""" @@ -40,8 +44,8 @@ class FatcatImporter:      def lookup_issnl(self, issnl):          """Caches calls to the ISSN-L lookup API endpoint in a local dict"""          assert len(issnl) == 9 and issnl[4] == '-' -        if issnl in self._issnl_map: -            return self._issnl_map[issn] +        if issnl in self._issnl_id_map: +            return self._issnl_id_map[issn]          container_id = None          try:              rv = self.api.lookup_container(issnl=issnl) @@ -49,5 +53,35 @@ class FatcatImporter:          except ApiException as ae:              # If anything other than a 404 (not found), something is wrong              assert ae.status == 404 -        self._issnl_map[issnl] = container_id # might be None +        self._issnl_id_map[issnl] = container_id # might be None          return container_id + +    def lookup_orcid(self, orcid): +        """Caches calls to the Orcid lookup API endpoint in a local dict""" +        assert len(orcid) == 19 and orcid[4] == '-' +        if orcid in self._orcid_id_map: +            return self._orcid_id_map[orcid] +        creator_id = None +        try: +            rv = self.api.lookup_creator(orcid=orcid) +            creator_id = rv.ident +        except ApiException as ae: +            # If anything other than a 404 (not found), something is wrong +            assert ae.status == 404 +        self._orcid_id_map[orcid] = creator_id # might be None +        return creator_id + +    def read_issn_map_file(self, issn_map_file): +        self._issn_issnl_map = dict() +        for line in issn_map_file: +            if line.startswith("ISSN") or len(line) == 0: +                continue +            (issn, issnl) = line.split()[0:2] +            self._issn_issnl_map[issn] = issnl +            # double mapping makes lookups easy +            self._issn_issnl_map[issnl] = issnl + +    def issn2issnl(self, issn): +        if issn is None: +            return None +        self._issn_issnl_map.get(issn) diff --git a/python/tests/crossref.py b/python/tests/crossref.py index e72f7d02..402195d7 100644 --- a/python/tests/crossref.py +++ b/python/tests/crossref.py @@ -5,7 +5,8 @@ from fatcat.crossref_importer import FatcatCrossrefImporter  @pytest.fixture(scope="function")  def crossref_importer(): -    yield FatcatCrossrefImporter("http://localhost:9411/v0") +    with open('tests/files/ISSN-to-ISSN-L.snip.txt', 'r') as issn_file: +        yield FatcatCrossrefImporter("http://localhost:9411/v0", issn_file)  def test_crossref_importer_batch(crossref_importer):      with open('tests/files/crossref-works.2018-01-21.badsample.json', 'r') as f: @@ -14,3 +15,8 @@ def test_crossref_importer_batch(crossref_importer):  def test_crossref_importer(crossref_importer):      with open('tests/files/crossref-works.2018-01-21.badsample.json', 'r') as f:          crossref_importer.process_source(f) + +def test_crossref_importer_create(crossref_importer): +    crossref_importer.create_containers = True +    with open('tests/files/crossref-works.2018-01-21.badsample.json', 'r') as f: +        crossref_importer.process_source(f) diff --git a/python/tests/files/ISSN-to-ISSN-L.snip.txt b/python/tests/files/ISSN-to-ISSN-L.snip.txt new file mode 100644 index 00000000..965a49d6 --- /dev/null +++ b/python/tests/files/ISSN-to-ISSN-L.snip.txt @@ -0,0 +1,10 @@ +ISSN	ISSN-L +0000-0019	0000-0019 +0000-0027	0000-0027 +0000-0043	0000-0043 +0000-0051	0000-0051 +0000-006X	0000-006X +0000-0078	0000-0078 +0000-0094	0000-0094 +0000-0108	0000-0108 +0000-0140	0000-0140 diff --git a/python/tests/files/crossref-works.2018-01-21.badsample.json b/python/tests/files/crossref-works.2018-01-21.badsample.json index 143adf3e..84271489 100644 --- a/python/tests/files/crossref-works.2018-01-21.badsample.json +++ b/python/tests/files/crossref-works.2018-01-21.badsample.json @@ -8,3 +8,6 @@  { "_id" : { "$oid" : "5a55165c88a035a45bd7e535" }, "indexed" : { "date-parts" : [ [ 2017, 10, 23 ] ], "date-time" : "2017-10-23T14:27:04Z", "timestamp" : { "$numberLong" : "1508768824539" } }, "reference-count" : 6, "publisher" : "Wiley-Blackwell", "issue" : "24", "license" : [ { "URL" : "http://doi.wiley.com/10.1002/tdm_license_1.1", "start" : { "date-parts" : [ [ 2015, 9, 1 ] ], "date-time" : "2015-09-01T00:00:00Z", "timestamp" : { "$numberLong" : "1441065600000" } }, "delay-in-days" : 5722, "content-version" : "tdm" } ], "content-domain" : { "domain" : [], "crossmark-restriction" : false }, "short-container-title" : [ "Rapid Commun. Mass Spectrom." ], "published-print" : { "date-parts" : [ [ 2000, 12, 30 ] ] }, "DOI" : "10.1002/1097-0231(20001230)14:24<2357::aid-rcm168>3.0.co;2-2", "type" : "journal-article", "created" : { "date-parts" : [ [ 2002, 9, 11 ] ], "date-time" : "2002-09-11T00:24:57Z", "timestamp" : { "$numberLong" : "1031703897000" } }, "page" : "2357-2361", "source" : "Crossref", "is-referenced-by-count" : 2, "title" : [ "Electron impact fragmentation mechanisms of some cyclic esters with helical structures" ], "prefix" : "10.1002", "volume" : "14", "author" : [ { "given" : "Jiangtao", "family" : "He", "affiliation" : [] }, { "given" : "Aihua", "family" : "Nie", "affiliation" : [] }, { "given" : "Meiyu", "family" : "He", "affiliation" : [] }, { "given" : "Xiaoran", "family" : "He", "affiliation" : [] }, { "given" : "Zhenpei", "family" : "Yu", "affiliation" : [] }, { "given" : "Xiulin", "family" : "Ye", "affiliation" : [] }, { "given" : "Qiyi", "family" : "Xing", "affiliation" : [] } ], "member" : "311", "published-online" : { "date-parts" : [ [ 2000 ] ] }, "reference" : [ { "key" : "10.1002/1097-0231(20001230)14:24<2357::AID-RCM168>3.0.CO;2-2-BIB1", "author" : "Nie", "volume" : "8", "first-page" : "141", "year" : "1997", "journal-title" : "Chinese Chem. Lett." }, { "key" : "10.1002/1097-0231(20001230)14:24<2357::AID-RCM168>3.0.CO;2-2-BIB2", "author" : "Chenevert", "first-page" : "782", "year" : "1982", "journal-title" : "Synthesis", "DOI" : "10.1055/s-1982-29945", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/1097-0231(20001230)14:24<2357::AID-RCM168>3.0.CO;2-2-BIB3", "author" : "Porter", "first-page" : "296", "year" : "1985", "unstructured" : "Mass Spectrometry of Heterocyclic Compounds (2nd edn). John Wiley & Sons: New York, 1985; 296.", "volume-title" : "Mass Spectrometry of Heterocyclic Compounds" }, { "key" : "10.1002/1097-0231(20001230)14:24<2357::AID-RCM168>3.0.CO;2-2-BIB4", "author" : "Ková??ik", "volume" : "34", "first-page" : "1322", "year" : "1999", "journal-title" : "J. Mass Spectrom.", "DOI" : "10.1002/(SICI)1096-9888(199912)34:12<1322::AID-JMS888>3.0.CO;2-#", "doi-asserted-by" : "crossref" }, { "key" : "10.1002/1097-0231(20001230)14:24<2357::AID-RCM168>3.0.CO;2-2-BIB5", "author" : "Mclafferty", "year" : "1993", "unstructured" : "Interpretation of Mass Spectra (4th edn). University Science Books: Sansalito, CA, 1993.", "volume-title" : "Interpretation of Mass Spectra" }, { "key" : "10.1002/1097-0231(20001230)14:24<2357::AID-RCM168>3.0.CO;2-2-BIB6", "author" : "Williams", "year" : "1996", "unstructured" : "Spectroscopic Methods in Organic Chemistry (5th edn). McGraw-Hill: London, 1996.", "volume-title" : "Spectroscopic Methods in Organic Chemistry" } ], "container-title" : [ "Rapid Communications in Mass Spectrometry" ], "link" : [ { "URL" : "https://api.wiley.com/onlinelibrary/tdm/v1/articles/10.1002%2F1097-0231(20001230)14:24%3C2357::AID-RCM168%3E3.0.CO;2-2", "content-type" : "unspecified", "content-version" : "vor", "intended-application" : "text-mining" } ], "deposited" : { "date-parts" : [ [ 2017, 7, 31 ] ], "date-time" : "2017-07-31T21:16:20Z", "timestamp" : { "$numberLong" : "1501535780000" } }, "score" : 1, "issued" : { "date-parts" : [ [ 2000 ] ] }, "references-count" : 6, "URL" : "http://dx.doi.org/10.1002/1097-0231(20001230)14:24<2357::aid-rcm168>3.0.co;2-2", "relation" : { "cites" : [] }, "ISSN" : [ "0951-4198", "1097-0231" ], "issn-type" : [ { "value" : "0951-4198", "type" : "print" }, { "value" : "1097-0231", "type" : "electronic" } ], "subject" : [ "Organic Chemistry", "Analytical Chemistry", "Spectroscopy" ] }  { "_id" : { "$oid" : "5a55196988a035a45bda0cb1" }, "indexed" : { "date-parts" : [ [ 2017, 10, 23 ] ], "date-time" : "2017-10-23T14:41:48Z", "timestamp" : { "$numberLong" : "1508769708308" } }, "reference-count" : 44, "publisher" : "Elsevier BV", "issue" : "1", "license" : [ { "URL" : "http://www.elsevier.com/tdm/userlicense/1.0/", "start" : { "date-parts" : [ [ 1998, 11, 1 ] ], "date-time" : "1998-11-01T00:00:00Z", "timestamp" : { "$numberLong" : "909878400000" } }, "delay-in-days" : 0, "content-version" : "tdm" } ], "content-domain" : { "domain" : [], "crossmark-restriction" : false }, "short-container-title" : [ "Toxicology and Applied Pharmacology" ], "published-print" : { "date-parts" : [ [ 1998, 11 ] ] }, "DOI" : "10.1006/taap.1998.8543", "type" : "journal-article", "created" : { "date-parts" : [ [ 2002, 9, 18 ] ], "date-time" : "2002-09-18T22:01:25Z", "timestamp" : { "$numberLong" : "1032386485000" } }, "page" : "102-108", "source" : "Crossref", "is-referenced-by-count" : 44, "title" : [ "Role of CYP1A2 in the Hepatotoxicity of Acetaminophen: Investigations UsingCyp1a2Null Mice" ], "prefix" : "10.1006", "volume" : "153", "author" : [ { "given" : "Robert P.", "family" : "Tonge", "affiliation" : [] }, { "given" : "Edward J.", "family" : "Kelly", "affiliation" : [] }, { "given" : "Sam A.", "family" : "Bruschi", "affiliation" : [] }, { "given" : "Tom", "family" : "Kalhorn", "affiliation" : [] }, { "given" : "David L.", "family" : "Eaton", "affiliation" : [] }, { "given" : "Daniel W.", "family" : "Nebert", "affiliation" : [] }, { "given" : "Sidney D.", "family" : "Nelson", "affiliation" : [] } ], "member" : "78", "container-title" : [ "Toxicology and Applied Pharmacology" ], "link" : [ { "URL" : "http://api.elsevier.com/content/article/PII:S0041008X9898543X?httpAccept=text/xml", "content-type" : "text/xml", "content-version" : "vor", "intended-application" : "text-mining" }, { "URL" : "http://api.elsevier.com/content/article/PII:S0041008X9898543X?httpAccept=text/plain", "content-type" : "text/plain", "content-version" : "vor", "intended-application" : "text-mining" } ], "deposited" : { "date-parts" : [ [ 2017, 6, 14 ] ], "date-time" : "2017-06-14T16:51:33Z", "timestamp" : { "$numberLong" : "1497459093000" } }, "score" : 1, "issued" : { "date-parts" : [ [ 1998, 11 ] ] }, "references-count" : 44, "alternative-id" : [ "S0041008X9898543X" ], "URL" : "http://dx.doi.org/10.1006/taap.1998.8543", "ISSN" : [ "0041-008X" ], "issn-type" : [ { "value" : "0041-008X", "type" : "print" } ], "subject" : [ "Toxicology", "Pharmacology" ] }  { "_id" : { "$oid" : "5a55170088a035a45bd8490d" }, "indexed" : { "date-parts" : [ [ 2017, 10, 23 ] ], "date-time" : "2017-10-23T14:30:12Z", "timestamp" : { "$numberLong" : "1508769012416" } }, "reference-count" : 37, "publisher" : "Wiley-Blackwell", "issue" : "2", "license" : [ { "URL" : "http://doi.wiley.com/10.1002/tdm_license_1.1", "start" : { "date-parts" : [ [ 2015, 9, 1 ] ], "date-time" : "2015-09-01T00:00:00Z", "timestamp" : { "$numberLong" : "1441065600000" } }, "delay-in-days" : 5356, "content-version" : "tdm" } ], "content-domain" : { "domain" : [], "crossmark-restriction" : false }, "short-container-title" : [ "Am. J. Ind. Med." ], "published-print" : { "date-parts" : [ [ 2001, 2 ] ] }, "DOI" : "10.1002/1097-0274(200102)39:2<218::aid-ajim1009>3.0.co;2-4", "type" : "journal-article", "created" : { "date-parts" : [ [ 2002, 8, 25 ] ], "date-time" : "2002-08-25T20:41:50Z", "timestamp" : { "$numberLong" : "1030308110000" } }, "page" : "218-226", "source" : "Crossref", "is-referenced-by-count" : 10, "title" : [ "The work environment impact assessment: A methodologic framework for evaluating health-based interventions" ], "prefix" : "10.1002", "volume" : "39", "author" : [ { "given" : "Beth J.", "family" : "Rosenberg", "affiliation" : [] }, { "given" : "Elizabeth M.", "family" : "Barbeau", "affiliation" : [] }, { "given" : "Rafael", "family" : "Moure-Eraso", "affiliation" : [] }, { "given" : "Charles", "family" : "Levenstein", "affiliation" : [] } ], "member" : "311", "published-online" : { "date-parts" : [ [ 2001 ] ] }, "reference" : [ { "key" : "BIB1", "author" : "Barbeau", "year" : "1998", "unstructured" : "1998. Displaced tobacco workers, public health, and tobacco policy: moving beyond jobs versus health. Doctoral thesis, Department of Work Environment, University of Massachusetts, Lowell." }, { "key" : "BIB2", "author" : "Berberian", "volume" : "37", "first-page" : "126", "year" : "1987", "journal-title" : "J Occup Environ Med" }, { "key" : "BIB3", "author" : "Bignami", "volume" : "80", "first-page" : "265", "year" : "1981", "journal-title" : "Mutat Res", "DOI" : "10.1016/0027-5107(81)90099-3", "doi-asserted-by" : "crossref" }, { "key" : "BIB4", "author" : "Britton", "year" : "1989", "unstructured" : "1989. The post-Alar era dawns chilly for apple growers. Boston Globe. Oct. 25, p. 34." }, { "key" : "BIB5", "author" : "Brusick", "year" : "1976", "unstructured" : "1976. Mutagen and oncogen Study on 1,1-dimethylhydrazine. Prepared for the Aerospace Med. Res. Lab., Aeropsace Med. Div. Airforce Systems Command, Wright- Patterson A.F.B., Dayton OH Litton Bionetics, Inc., Kensington, MD. NTIS AD-A035475." }, { "key" : "BIB6", "author" : "Chemical Marketing Reporter", "year" : "1984", "unstructured" : "Chemical Marketing Reporter. 1984. Uniroyal pesticide to be reviewed by EPA: regulatory action prompted by its toxicity. July 23." }, { "key" : "BIB7", "author" : "Chemical Marketing Reporter", "year" : "1989", "unstructured" : "Chemical Marketing Reporter. 1989. Uniroyal pulls apple pesticide from market, citing controversy. June 5." }, { "key" : "BIB8", "year" : "1990", "unstructured" : "Du Pont Chemical Company. 1990. MSDS No. M0000057, p. 2." }, { "key" : "BIB9", "year" : "1993", "unstructured" : "Farm Chemicals Handbook '93. 1993. Willoughby, OH: Meister.", "volume-title" : "Farm Chemicals Handbook '93" }, { "key" : "BIB10", "year" : "1985", "unstructured" : "Farm Chemicals Handbook '85. 1985. Willoughby, OH: Meister.", "volume-title" : "Farm Chemicals Handbook '85" }, { "key" : "BIB11", "author" : "Federal Register", "year" : "1989", "unstructured" : "Federal Register. 1989. Daminozide: termination of special review of food uses. Vol. 54, No. 216, p. 47482, November 14." }, { "key" : "BIB12", "author" : "Fenske", "first-page" : "729", "year" : "2000", "unstructured" : "2000. Agricultural workers. In: editors. Occupational health: recognizing and preventing work-related disease and injury. 4th ed. Philadelphia: Lippincott Williams and Wilkins, p. 729-748.", "volume-title" : "Occupational health: recognizing and preventing work-related disease and injury" }, { "key" : "BIB13", "author" : "Gibson", "volume" : "5", "first-page" : "24", "year" : "1994", "journal-title" : "New Solutions", "DOI" : "10.2190/NS5.1.g", "doi-asserted-by" : "crossref" }, { "key" : "BIB14", "author" : "Goldenhar", "volume" : "29", "first-page" : "289", "year" : "1996", "journal-title" : "Am J Ind Med", "DOI" : "10.1002/(SICI)1097-0274(199604)29:4<289::AID-AJIM2>3.0.CO;2-K", "doi-asserted-by" : "crossref" }, { "key" : "BIB15", "author" : "Haun", "year" : "1984", "unstructured" : "1984. Inhalation studies of UDMH. Air Force Aerospace Medical Res Lab, TR-85-020." }, { "key" : "BIB16", "author" : "International Agency for Research on Cancer (IARC)", "year" : "1997", "unstructured" : "International Agency for Research on Cancer (IARC). 1997. Evaluation of carcinogen risks to humans: man-made mineral fibres and radon. Lyons, France." }, { "key" : "BIB17", "author" : "Lord", "year" : "1969", "unstructured" : "1969 (May-June). Thoughts on the apple harvest problem. Fruit Notes. U. S. Department of Agriculture, Massachusetts Extension Service." }, { "key" : "BIB18", "author" : "Manning", "first-page" : "34", "year" : "1989", "unstructured" : "Sales Agent for J. P. Sullivan and Co., of Ayer, MA, an apple commission house. In 1989. The post-Alar era dawns chilly for apple growers. Boston Globe Oct. 25 p. 34.", "volume-title" : "The post-Alar era dawns chilly for apple growers" }, { "key" : "BIB19", "author" : "National Cancer Institute", "year" : "1978", "unstructured" : "National Cancer Institute. 1978. Bioassay of daminozide for possible carcinogenicity. Washington, D.C., United State Department of Health, Education and Welfare, Public Health Service (NIC Carcinogenesis Technical Report Series No. 83; DHEW Publication No (NIH 78-1333)." }, { "key" : "BIB20", "author" : "Rogers", "volume" : "89", "first-page" : "321", "year" : "1981", "journal-title" : "Mutat Res", "DOI" : "10.1016/0165-1218(81)90113-0", "doi-asserted-by" : "crossref" }, { "key" : "BIB21", "author" : "Rosenberg", "year" : "1995", "unstructured" : "1995. The best laid bans: the impact of pesticide bans on workers. Doctoral thesis, Department of Work Environment, University of Massachusetts Lowell." }, { "key" : "BIB22", "author" : "Rosenberg", "volume" : "6", "first-page" : "34", "year" : "1996", "journal-title" : "New Solutions: A Journal of Environmental and Occupational Health Policy", "DOI" : "10.2190/NS6.2.d", "doi-asserted-by" : "crossref" }, { "key" : "BIB23", "author" : "Rosenberg", "volume" : "8", "first-page" : "365", "year" : "1998", "journal-title" : "New Solutions Environmental Health Policy", "DOI" : "10.2190/A2A1-CT1X-RY6D-RR3M", "doi-asserted-by" : "crossref" }, { "key" : "BIB24", "author" : "Saunders", "volume" : "29", "first-page" : "409", "year" : "1987", "journal-title" : "J Occup Environ Med" }, { "key" : "BIB25", "author" : "Toth", "volume" : "50", "first-page" : "181", "year" : "1973", "journal-title" : "J Natl Cancer Inst", "DOI" : "10.1093/jnci/50.1.181", "doi-asserted-by" : "crossref" }, { "key" : "BIB26", "author" : "Toth", "volume" : "40", "first-page" : "2427", "year" : "1977a", "journal-title" : "Cancer", "DOI" : "10.1002/1097-0142(197711)40:5+<2427::AID-CNCR2820400906>3.0.CO;2-Y", "doi-asserted-by" : "crossref" }, { "key" : "BIB27", "author" : "Toth", "volume" : "37", "first-page" : "3497", "year" : "1977b", "journal-title" : "Cancer Res" }, { "key" : "BIB28", "author" : "U.S. Environmental Protection Agency", "year" : "1986", "unstructured" : "U.S. Environmental Protection Agency. 1986. Integrated Risk Information System (IRIS). Oxamyl. December 9." }, { "key" : "BIB29", "author" : "U.S. Environmental Protection Agency", "year" : "1986", "unstructured" : "U.S. Environmental Protection Agency. 1986. Chemical Fact Sheet Number 26: Daminozide. Office of Pesticides and Toxic Substances, Washington, DC. 10-169." }, { "key" : "BIB30", "author" : "U.S. Environmental Protection Agency", "year" : "1989", "unstructured" : "U.S. Environmental Protection Agency, Office of Pesticide Programs, Office of Pesticides and Toxic Substances. 1989. Daminozide special review technical support document: Preliminary determination to cancel the food uses of Daminozide. Washington, DC: May." }, { "key" : "BIB31", "author" : "U.S. Environmental Protection Agency", "volume" : "54", "first-page" : "10", "year" : "1989", "journal-title" : "Fed Regist." }, { "key" : "BIB32", "author" : "U.S. Environmental Protection Agency", "year" : "1990", "unstructured" : "U.S. Environmental Protection Agency. 1990. Integrated Risk Information System (IRIS). Propargite. May 1." }, { "key" : "BIB33", "author" : "U.S. Environmental Protection Agency", "volume" : "57", "first-page" : "10", "year" : "1992", "journal-title" : "Fed. Regist." }, { "key" : "BIB34", "author" : "U.S. Environmental Protection Agency", "year" : "1993", "unstructured" : "U.S. Environmental Protection Agency, Office of Prevention, Pesticides and Toxic Substances. 1993. R.E.D. Facts, Document number EPA-738-F-93-007. September." }, { "key" : "BIB35", "author" : "U.S. Department of Agriculture", "year" : "1993", "journal-title" : "New England Agricultural Statistics" }, { "key" : "BIB36", "author" : "Warren", "year" : "1992", "unstructured" : "1992. Unanticipated consequences of banning a chemical: the case of Alar. Unpublished manuscript, Department of Work Environment, University of Massachusetts Lowell." }, { "key" : "BIB37", "author" : "Wood", "year" : "1990", "unstructured" : "1990. Memo to Poverty Lane, West Lebanon, New Hampshire, to members of the Risk Assessment/Risk Management Work Group, Keystone National Policy Dialogue on Food Safety, Oct. 26, 1990, cited in Rosenberg, B. 1996." } ], "container-title" : [ "American Journal of Industrial Medicine" ], "link" : [ { "URL" : "https://api.wiley.com/onlinelibrary/tdm/v1/articles/10.1002%2F1097-0274(200102)39:2%3C218::AID-AJIM1009%3E3.0.CO;2-4", "content-type" : "unspecified", "content-version" : "vor", "intended-application" : "text-mining" } ], "deposited" : { "date-parts" : [ [ 2017, 8, 4 ] ], "date-time" : "2017-08-04T20:22:16Z", "timestamp" : { "$numberLong" : "1501878136000" } }, "score" : 1, "issued" : { "date-parts" : [ [ 2001 ] ] }, "references-count" : 37, "URL" : "http://dx.doi.org/10.1002/1097-0274(200102)39:2<218::aid-ajim1009>3.0.co;2-4", "relation" : { "cites" : [] }, "ISSN" : [ "0271-3586", "1097-0274" ], "issn-type" : [ { "value" : "0271-3586", "type" : "print" }, { "value" : "1097-0274", "type" : "electronic" } ], "subject" : [ "Public Health, Environmental and Occupational Health" ] } +{ "_id" : { "$oid" : "5a553b4388a035a45bf39150" }, "indexed" : { "date-parts" : [ [ 2017, 10, 23 ] ], "date-time" : "2017-10-23T17:10:15Z", "timestamp" : { "$numberLong" : "1508778615346" } }, "reference-count" : 22, "publisher" : "Elsevier BV", "issue" : "4", "license" : [ { "URL" : "http://www.elsevier.com/tdm/userlicense/1.0/", "start" : { "date-parts" : [ [ 2001, 12, 1 ] ], "date-time" : "2001-12-01T00:00:00Z", "timestamp" : { "$numberLong" : "1007164800000" } }, "delay-in-days" : 0, "content-version" : "tdm" } ], "content-domain" : { "domain" : [], "crossmark-restriction" : false }, "short-container-title" : [ "International Journal of Hospitality Management" ], "published-print" : { "date-parts" : [ [ 2001, 12 ] ] }, "DOI" : "10.1016/s0278-4319(01)00020-2", "type" : "journal-article", "created" : { "date-parts" : [ [ 2002, 7, 25 ] ], "date-time" : "2002-07-25T14:28:16Z", "timestamp" : { "$numberLong" : "1027607296000" } }, "page" : "325-338", "source" : "Crossref", "is-referenced-by-count" : 14, "title" : [ "Hotel management style: a study of employee perceptions and preferences" ], "prefix" : "10.1016", "volume" : "20", "author" : [ { "given" : "Margaret", "family" : "Deery", "affiliation" : [] }, { "given" : "Leo K", "family" : "Jago", "affiliation" : [] } ], "member" : "78", "container-title" : [ "International Journal of Hospitality Management" ], "link" : [ { "URL" : "http://api.elsevier.com/content/article/PII:S0278431901000202?httpAccept=text/xml", "content-type" : "text/xml", "content-version" : "vor", "intended-application" : "text-mining" }, { "URL" : "http://api.elsevier.com/content/article/PII:S0278431901000202?httpAccept=text/plain", "content-type" : "text/plain", "content-version" : "vor", "intended-application" : "text-mining" } ], "deposited" : { "date-parts" : [ [ 2017, 6, 14 ] ], "date-time" : "2017-06-14T21:24:09Z", "timestamp" : { "$numberLong" : "1497475449000" } }, "score" : 1, "issued" : { "date-parts" : [ [ 2001, 12 ] ] }, "references-count" : 22, "alternative-id" : [ "S0278431901000202" ], "URL" : "http://dx.doi.org/10.1016/s0278-4319(01)00020-2", "ISSN" : [ "0278-4319" ], "issn-type" : [ { "value" : "0278-4319", "type" : "print" } ], "subject" : [ "Tourism, Leisure and Hospitality Management", "Strategy and Management" ] } +{ "_id" : { "$oid" : "5a55176088a035a45bd8802c" }, "indexed" : { "date-parts" : [ [ 2017, 10, 23 ] ], "date-time" : "2017-10-23T14:31:47Z", "timestamp" : { "$numberLong" : "1508769107897" } }, "reference-count" : 1, "publisher" : "Hindawi Limited", "issue" : "2", "license" : [ { "URL" : "http://creativecommons.org/licenses/by/3.0/", "start" : { "date-parts" : [ [ 2002, 1, 1 ] ], "date-time" : "2002-01-01T00:00:00Z", "timestamp" : { "$numberLong" : "1009843200000" } }, "delay-in-days" : 0, "content-version" : "vor" } ], "content-domain" : { "domain" : [], "crossmark-restriction" : false }, "short-container-title" : [ "Comparative and Functional Genomics" ], "published-print" : { "date-parts" : [ [ 2002 ] ] }, "abstract" : "<jats:p>This brief meeting review summarizes the recommendations of NSF and NPGI funded bioinformaticians concerning the future requirements for plant bioinformatics systems and databases.</jats:p>", "DOI" : "10.1002/cfg.158", "type" : "journal-article", "created" : { "date-parts" : [ [ 2002, 8, 25 ] ], "date-time" : "2002-08-25T23:45:33Z", "timestamp" : { "$numberLong" : "1030319133000" } }, "page" : "176-176", "source" : "Crossref", "is-referenced-by-count" : 4, "title" : [ "Meeting Review: Plant Bioinformatics at the NSF and NPGI (PAMGX Satellite) Meetings" ], "prefix" : "10.1155", "volume" : "3", "author" : [ { "ORCID" : "http://orcid.org/0000-0002-4447-5978", "authenticated-orcid" : true, "given" : "Richard", "family" : "Bruskiewich", "affiliation" : [ { "name" : "International Rice Research Institute (IRRI), Metro Manila DAPO 7777, Philippines" } ] } ], "member" : "98", "reference" : [ { "key" : "10.1002/cfg.158-BIB1", "author" : "Brazma", "volume" : "29", "first-page" : "365", "year" : "2001", "journal-title" : "Nature Genetics", "DOI" : "10.1038/ng1201-365", "doi-asserted-by" : "crossref" } ], "container-title" : [ "Comparative and Functional Genomics" ], "link" : [ { "URL" : "http://downloads.hindawi.com/journals/ijg/2002/250628.pdf", "content-type" : "application/pdf", "content-version" : "vor", "intended-application" : "text-mining" }, { "URL" : "http://downloads.hindawi.com/journals/ijg/2002/250628.pdf", "content-type" : "unspecified", "content-version" : "vor", "intended-application" : "similarity-checking" } ], "deposited" : { "date-parts" : [ [ 2017, 8, 5 ] ], "date-time" : "2017-08-05T06:32:00Z", "timestamp" : { "$numberLong" : "1501914720000" } }, "score" : 1, "issued" : { "date-parts" : [ [ 2002 ] ] }, "references-count" : 1, "alternative-id" : [ "250628" ], "URL" : "http://dx.doi.org/10.1002/cfg.158", "relation" : { "cites" : [] }, "ISSN" : [ "1531-6912", "1532-6268" ], "issn-type" : [ { "value" : "1531-6912", "type" : "print" }, { "value" : "1532-6268", "type" : "electronic" } ], "subject" : [ "Biotechnology", "Genetics", "Molecular Biology" ] } +{ "_id" : { "$oid" : "5a551fbe88a035a45bdf19fd" }, "indexed" : { "date-parts" : [ [ 2017, 10, 23 ] ], "date-time" : "2017-10-23T15:12:12Z", "timestamp" : { "$numberLong" : "1508771532055" } }, "reference-count" : 0, "publisher" : "Springer Nature", "issue" : "11", "content-domain" : { "domain" : [], "crossmark-restriction" : false }, "short-container-title" : [ "Skeletal Radiol" ], "published-print" : { "date-parts" : [ [ 2001, 11 ] ] }, "DOI" : "10.1007/s002560100423", "type" : "journal-article", "created" : { "date-parts" : [ [ 2002, 10, 6 ] ], "date-time" : "2002-10-06T13:44:04Z", "timestamp" : { "$numberLong" : "1033911844000" } }, "page" : "643-647", "source" : "Crossref", "is-referenced-by-count" : 2, "title" : [ "Unilateral osteonecrosis in a patient with bilateral os centrale carpi: imaging findings" ], "prefix" : "10.1007", "volume" : "30", "author" : [ { "given" : "F.", "family" : "Abascal", "affiliation" : [] }, { "given" : "L.", "family" : "Cerezal", "affiliation" : [] }, { "given" : "F.", "family" : "del Piñal", "affiliation" : [] }, { "given" : "R.", "family" : "García-Valtuille", "affiliation" : [] }, { "given" : "A.", "family" : "García-Valtuille", "affiliation" : [] }, { "given" : "A.", "family" : "Canga", "affiliation" : [] }, { "given" : "J.", "family" : "Torcida", "affiliation" : [] } ], "member" : "297", "published-online" : { "date-parts" : [ [ 2001, 9, 14 ] ] }, "container-title" : [ "Skeletal Radiology" ], "link" : [ { "URL" : "http://link.springer.com/content/pdf/10.1007/s002560100423", "content-type" : "unspecified", "content-version" : "vor", "intended-application" : "similarity-checking" } ], "deposited" : { "date-parts" : [ [ 2014, 4, 9 ] ], "date-time" : "2014-04-09T05:21:52Z", "timestamp" : { "$numberLong" : "1397020912000" } }, "score" : 1, "issued" : { "date-parts" : [ [ 2001, 9, 14 ] ] }, "references-count" : 0, "alternative-id" : [ "423" ], "URL" : "http://dx.doi.org/10.1007/s002560100423", "ISSN" : [ "0364-2348", "1432-2161" ], "issn-type" : [ { "value" : "0364-2348", "type" : "print" }, { "value" : "1432-2161", "type" : "electronic" } ], "subject" : [ "Radiology Nuclear Medicine and imaging" ] } | 
