aboutsummaryrefslogtreecommitdiffstats
path: root/mapreduce
diff options
context:
space:
mode:
authorBryan Newbold <bnewbold@archive.org>2018-08-24 12:28:51 -0700
committerBryan Newbold <bnewbold@archive.org>2018-08-24 12:28:51 -0700
commit3782311e29b7e477e1936c89f55ff6483fd02e65 (patch)
treeb4484b9839f24d799d36881dfc85701ad888b94e /mapreduce
parent2a998189ef49976bf01cc95acc1f18a73e1f0ff6 (diff)
downloadsandcrawler-3782311e29b7e477e1936c89f55ff6483fd02e65.tar.gz
sandcrawler-3782311e29b7e477e1936c89f55ff6483fd02e65.zip
rename ./mapreduce to ./python
Diffstat (limited to 'mapreduce')
-rw-r--r--mapreduce/.coveragerc3
-rw-r--r--mapreduce/.pylintrc10
-rw-r--r--mapreduce/Pipfile30
-rw-r--r--mapreduce/Pipfile.lock1142
-rw-r--r--mapreduce/README.md74
-rw-r--r--mapreduce/TODO4
-rwxr-xr-xmapreduce/backfill_hbase_from_cdx.py88
-rw-r--r--mapreduce/common.py73
-rwxr-xr-xmapreduce/extraction_cdx_grobid.py275
-rwxr-xr-xmapreduce/grobid2json.py146
-rw-r--r--mapreduce/mrjob.conf16
-rw-r--r--mapreduce/pytest.ini8
-rw-r--r--mapreduce/tests/files/23b29ea36382680716be08fc71aa81bd226e8a85.xml2004
-rw-r--r--mapreduce/tests/files/example.cdx20
-rw-r--r--mapreduce/tests/files/small.json43
-rw-r--r--mapreduce/tests/files/small.xml110
-rw-r--r--mapreduce/tests/test_backfill_hbase_from_cdx.py74
-rw-r--r--mapreduce/tests/test_common.py40
-rw-r--r--mapreduce/tests/test_extraction_cdx_grobid.py319
-rw-r--r--mapreduce/tests/test_grobid2json.py22
-rw-r--r--mapreduce/xml2json.py7
21 files changed, 0 insertions, 4508 deletions
diff --git a/mapreduce/.coveragerc b/mapreduce/.coveragerc
deleted file mode 100644
index 6235f57..0000000
--- a/mapreduce/.coveragerc
+++ /dev/null
@@ -1,3 +0,0 @@
-[run]
-omit = tests/*
-source = .
diff --git a/mapreduce/.pylintrc b/mapreduce/.pylintrc
deleted file mode 100644
index 78e9e7f..0000000
--- a/mapreduce/.pylintrc
+++ /dev/null
@@ -1,10 +0,0 @@
-[MESSAGES CONTROL]
-disable=C0323,W0142,C0301,C0103,C0111,E0213,C0302,C0203,W0703,R0201,W0223,bad-continuation,arguments-differ,unidiomatic-typecheck
-
-[REPORTS]
-output-format=colorized
-include-ids=yes
-
-[MISCELLANEOUS]
-# List of note tags to take in consideration, separated by a comma.
-notes=FIXME,XXX,DELETEME
diff --git a/mapreduce/Pipfile b/mapreduce/Pipfile
deleted file mode 100644
index 129b23e..0000000
--- a/mapreduce/Pipfile
+++ /dev/null
@@ -1,30 +0,0 @@
-[[source]]
-name = "ia"
-url = "https://devpi.archive.org/wb/prod"
-verify_ssl = true
-
-[[source]]
-name = "pypi"
-url = "https://pypi.python.org/simple"
-verify_ssl = true
-
-[dev-packages]
-ipython = "*"
-happybase-mock = "*"
-pytest = "*"
-pytest-pythonpath = "*"
-responses = "*"
-pytest-cov = "*"
-pylint = "*"
-
-[packages]
-globalwayback = {version=">=0.3", index="ia"}
-happybase = "*"
-mrjob = "*"
-requests = "*"
-wayback = {version=">=0.2.1.2", index="ia"}
-xmltodict = "*"
-raven = "*"
-
-[requires]
-python_version = "3.5"
diff --git a/mapreduce/Pipfile.lock b/mapreduce/Pipfile.lock
deleted file mode 100644
index f21e01b..0000000
--- a/mapreduce/Pipfile.lock
+++ /dev/null
@@ -1,1142 +0,0 @@
-{
- "_meta": {
- "hash": {
- "sha256": "d28f89355ce6520af7e275ad7bbc944acff5946d3701d3336bb268f4a5e82980"
- },
- "pipfile-spec": 6,
- "requires": {
- "python_version": "3.5"
- },
- "sources": [
- {
- "name": "ia",
- "url": "https://devpi.archive.org/wb/prod",
- "verify_ssl": true
- },
- {
- "name": "pypi",
- "url": "https://pypi.python.org/simple",
- "verify_ssl": true
- }
- ]
- },
- "default": {
- "boto3": {
- "hashes": [
- "sha256:13ad5f64a247d655a27dca83274588e9d14cba61b38d3d4fd2b011b7197d88dd",
- "sha256:a56b21efbc994580fc9cef454f0f949745c152326f939aed6609d1c47b2a0f8f"
- ],
- "version": "==1.7.4"
- },
- "botocore": {
- "hashes": [
- "sha256:5602738392ecde5c02a06a3b02de07171f440a44cdfef0aadff4b59567359607",
- "sha256:77f2869b8c27afbab78b72ce6b74c75923421f364c7a0153ac1a38858c59cd91"
- ],
- "version": "==1.10.4"
- },
- "cachetools": {
- "hashes": [
- "sha256:4319bbb78172e7bcf99423e1ecd6914b32336ccfe97d2058ffe62e641a7f3abe",
- "sha256:ede01f2d3cbd6ddc9e35e16c2b0ce011d8bb70ce0dbaf282f5b4df24b213bc5d"
- ],
- "version": "==2.0.1"
- },
- "certifi": {
- "hashes": [
- "sha256:13e698f54293db9f89122b0581843a782ad0934a4fe0172d2a980ba77fc61bb7",
- "sha256:9fa520c1bacfb634fa7af20a76bcbd3d5fb390481724c597da32c719a7dca4b0"
- ],
- "version": "==2018.4.16"
- },
- "chardet": {
- "hashes": [
- "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae",
- "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691"
- ],
- "version": "==3.0.4"
- },
- "click": {
- "hashes": [
- "sha256:29f99fc6125fbc931b758dc053b3114e55c77a6e4c6c3a2674a2dc986016381d",
- "sha256:f15516df478d5a56180fbf80e68f206010e6d160fc39fa508b65e035fd75130b"
- ],
- "version": "==6.7"
- },
- "crawllib": {
- "hashes": [
- "sha256:e24fa61cab91e0e7f461ff6173c2395fede3d4fbab565704622f5252028bdef3"
- ],
- "version": "==0.1.4"
- },
- "dawg": {
- "hashes": [
- "sha256:111aec946fc6045776e8a977f8be841b099769f3c8ab041dba4773ffeda21ad5",
- "sha256:30d5da3e48b8cbe5ec94c5a202d2962780d3895ba0883123e6788565f71b2953",
- "sha256:3a5ea13d5a424542d1a7fa908db974e712be90ccdd86cec9e24c6b20794f5f5e",
- "sha256:402659e3044a5fb79dadefeaabb15ba9c0ef56c844bb4bcde6b102afbf4788f8",
- "sha256:7accbfe484a353e1f02a947f84f817846f30738d1170d4e855f536d5708632a3",
- "sha256:9c7321d4f2a580506e06c29ed276ae50df9eb153470e8e980e79409e12b18e55",
- "sha256:ad0fdd2f6ed0a0155f00e7f61f3649898dabf7e344eb87732b34414f34cc31d9",
- "sha256:b1f9c72bb3eca530f78fcf82f2d60ff41298f10e1c9f018b402af0ecbe246171",
- "sha256:d6d5f9e4a37bf9b2c4fec504eaf8cfc30d7f994635c35a6f14ced5f41a72e2f9"
- ],
- "version": "==0.7.8"
- },
- "dill": {
- "hashes": [
- "sha256:97fd758f5fe742d42b11ec8318ecfcff8776bccacbfcec05dfd6276f5d450f73"
- ],
- "version": "==0.2.7.1"
- },
- "docutils": {
- "hashes": [
- "sha256:02aec4bd92ab067f6ff27a38a38a41173bf01bed8f89157768c1573f53e474a6",
- "sha256:51e64ef2ebfb29cae1faa133b3710143496eca21c530f3f71424d77687764274",
- "sha256:7a4bd47eaf6596e1295ecb11361139febe29b084a87bf005bf899f9a42edc3c6"
- ],
- "version": "==0.14"
- },
- "dogpile.cache": {
- "hashes": [
- "sha256:631197e78b4471bb0e93d0a86264c45736bc9ae43b4205d581dcc34fbe9b5f31"
- ],
- "version": "==0.6.5"
- },
- "elasticsearch": {
- "hashes": [
- "sha256:2e6dcdf9cb62377e0d6b82d2931ebc67b5a549081bbb531aa3be60ece33257b2",
- "sha256:8539e30c33fa0ad09617893a458056a35a654c92226390c30a07a3776bb8a94f"
- ],
- "version": "==5.5.2"
- },
- "flask": {
- "hashes": [
- "sha256:0749df235e3ff61ac108f69ac178c9770caeaccad2509cb762ce1f65570a8856",
- "sha256:49f44461237b69ecd901cc7ce66feea0319b9158743dd27a2899962ab214dac1"
- ],
- "version": "==0.12.2"
- },
- "future": {
- "hashes": [
- "sha256:e39ced1ab767b5936646cedba8bcce582398233d6a627067d4c6a454c90cfedb"
- ],
- "version": "==0.16.0"
- },
- "gapic-google-cloud-datastore-v1": {
- "hashes": [
- "sha256:d5d0e6f7b4996a8dd5f4f5ad27cd389a5d7bedd07e6e9b9f3a4a3c3ea56d9053"
- ],
- "version": "==0.15.3"
- },
- "gapic-google-cloud-error-reporting-v1beta1": {
- "hashes": [
- "sha256:39f3f8e974441fb57ea98d0be0f4cdedd18cda9a628aec31e1f0841affab6f16"
- ],
- "version": "==0.15.3"
- },
- "gapic-google-cloud-logging-v2": {
- "hashes": [
- "sha256:b0b87bf56c50e4617fb539e5c36f2e286ba87c67a9b1ef5c9ec854d6d7b10023"
- ],
- "version": "==0.91.3"
- },
- "globalwayback": {
- "hashes": [
- "sha256:74fb668e94528228d30040654fb5cc1cb7978da3982fa7e4e6bc36bafa4685be"
- ],
- "index": "ia",
- "version": "==0.3.10.9"
- },
- "google-api-core": {
- "hashes": [
- "sha256:0144d467083ed54d2e8ccb4212d42c3724fe0b844b7d3a0ff85aea54b7ae8347",
- "sha256:1698e4af4edd2a8ec22d678fd9abe99c926c3a154b2232f32807946ca49e3da1"
- ],
- "version": "==0.1.4"
- },
- "google-auth": {
- "hashes": [
- "sha256:34088434cb2a2409360b8f3cbc04195a465df1fb2aafad71ebbded77cbf08803",
- "sha256:9051802d3dae256036cca9e34633a32c0ed1427730d4ebc513dff91ec8b6dd45"
- ],
- "version": "==1.4.1"
- },
- "google-cloud": {
- "hashes": [
- "sha256:21a11ad63cc29cfd4e4b6426947bdc2cbefe080f87ad68fa432cf2ac108cb87d",
- "sha256:a99ee610e058c2af84ca1da710afe80fca022d2572c4bce78f6fdecac6b32d07"
- ],
- "version": "==0.32.0"
- },
- "google-cloud-bigquery": {
- "hashes": [
- "sha256:1c5a42332b43b58d6039fbca697a88c230487212afb6b4a6cbe0d5f3d5685785",
- "sha256:511f27e5e398f8bb4dcad914596e32fe5bcb111257f032d93956a2dcced4a00f"
- ],
- "version": "==0.28.0"
- },
- "google-cloud-bigquery-datatransfer": {
- "hashes": [
- "sha256:c0a290f9456b52c633cf966c73311038eb2d3fd5a61b40059edad966a434e4f9",
- "sha256:f5b5d0de43805fa9ebb620c58e1d27e6d32d2fc8e9a2f954ee170f7a026c8757"
- ],
- "version": "==0.1.1"
- },
- "google-cloud-bigtable": {
- "hashes": [
- "sha256:22c7148dc339be791d2bf4616c87e523507618570356148375c631de412f551b",
- "sha256:7f86d2c8d7f22670da98fd67bcdc17cab793f7400725c8148b05ad829c02b95e"
- ],
- "version": "==0.28.1"
- },
- "google-cloud-container": {
- "hashes": [
- "sha256:275de3032de5696cd976459966e911abd3a1b624c7a918a8137a0308898e4f90",
- "sha256:a89afcb1fe96bc9361c231c223c3bbe19fa3787caeb4697cd5778990e1077270"
- ],
- "version": "==0.1.1"
- },
- "google-cloud-core": {
- "hashes": [
- "sha256:0090df83dbc5cb2405fa90844366d13176d1c0b48181c1807ab15f53be403f73",
- "sha256:89e8140a288acec20c5e56159461d3afa4073570c9758c05d4e6cb7f2f8cc440"
- ],
- "version": "==0.28.1"
- },
- "google-cloud-dataproc": {
- "hashes": [
- "sha256:1096534affe51b2e54b7c57f429b83c4566f92ed42fdee6613a001649c61c3d5",
- "sha256:8537b0de721ec4524cb580572f44f88d2b22a1f5c56968448003ca9023ecb951"
- ],
- "version": "==0.1.0"
- },
- "google-cloud-datastore": {
- "hashes": [
- "sha256:3094b38df19a0a6663b614122d97efcfeab35baf770070e960f6792522307997",
- "sha256:7cc7a48945dd0ec8aea2d8a169f8a3dfd84608392b00b514b4421b5a716b3263"
- ],
- "version": "==1.4.0"
- },
- "google-cloud-dns": {
- "hashes": [
- "sha256:2edcb33ea0025545746962839373ff6d314a5fac779fd7f7ddd0e592196fbb14",
- "sha256:5db79c21a2ee72854609db88d5a4ae897c32bf77bf6b51b3290e013b2db49e07"
- ],
- "version": "==0.28.0"
- },
- "google-cloud-error-reporting": {
- "hashes": [
- "sha256:6398c5963599f834d2ba2effbca4f67dbd21034252d33d0f367d1a7c868cfb98",
- "sha256:d4bdc20b5704afddc12a464622153c250be62a9d38a57d0f9371a0a3f3e43c71"
- ],
- "version": "==0.28.0"
- },
- "google-cloud-firestore": {
- "hashes": [
- "sha256:91b1373faf1c763ce9cda915a82655918035e4d09e8d2399170122f94274c977",
- "sha256:c12fe5a017a56c8d617bdf83ace3970afba886c09fc0d6c0d24f36f8644dc178"
- ],
- "version": "==0.28.0"
- },
- "google-cloud-language": {
- "hashes": [
- "sha256:59e7c3ed0dcf54d17943cad29ececb41adbbfc1b56c9ba278c13fd17aea54188",
- "sha256:b5c3073697b9c51b8f1a4a619f7b3b6744e88efe0e235958ff411ee17e825c61"
- ],
- "version": "==1.0.1"
- },
- "google-cloud-logging": {
- "hashes": [
- "sha256:81ff672f3b4c6f2a182282aae68f7c3dafbbfc8dc7dcc0db8dc90cd288adc3b8",
- "sha256:a1567aa858fbe223973c698f12198e5828fa66f3d42dac27e81b246ff385cd70"
- ],
- "version": "==1.4.0"
- },
- "google-cloud-monitoring": {
- "hashes": [
- "sha256:534d66d97611c9c6e08823532f5144f6786d3a6103a6d5ed6411ac465faa5341",
- "sha256:c7a336a469cf186e3621fe36bf0e4f291ea43a76b4a532b744a167d756a8170d"
- ],
- "version": "==0.28.1"
- },
- "google-cloud-pubsub": {
- "hashes": [
- "sha256:059dcd1862e07a47920474b0fe38d40508d8c4881929f17696a3aba834b11027",
- "sha256:ff6e74390dfa097e3cee7d5f323aeed37a23dfb1faa762d9efced09f972415a4"
- ],
- "version": "==0.30.1"
- },
- "google-cloud-resource-manager": {
- "hashes": [
- "sha256:ed4eaab40164614db77496986fb2900d93cb1daa7e1a23fd20be7bd46705a8f3",
- "sha256:fc29c11dcbe9208261d377185a1ae5331bab43f2a592222a25c8aca9c8031308"
- ],
- "version": "==0.28.1"
- },
- "google-cloud-runtimeconfig": {
- "hashes": [
- "sha256:095a1dab0d7b8e02dff06bee7844bb283a1c2c6f2e7333eb9896419a30143d82",
- "sha256:f441fbc22e2d0871ecb390854aa352cf467d2751cbc0dac7578274ead813519e"
- ],
- "version": "==0.28.1"
- },
- "google-cloud-spanner": {
- "hashes": [
- "sha256:39707e37e2399df0a6ea7f5b636fc06858359a70af92ac485bbba9bf810a43e7",
- "sha256:bc4c6269b07d0982289d4ecd9b88da943e097ab2104c79ce18e4966766bb877b"
- ],
- "version": "==0.29.0"
- },
- "google-cloud-speech": {
- "hashes": [
- "sha256:76e42ffdea4bb9790cac34d5a4cdb2e2d47a0e254a27dbbaf40fbd10fdb04e31",
- "sha256:ea920710b2fa74175bacc1f90a2eb326038eeaf3ce364c29a40e7eb70c7c7132"
- ],
- "version": "==0.30.0"
- },
- "google-cloud-storage": {
- "hashes": [
- "sha256:5db85fa905f85377c5ea9ea0fb4c5602343d2ecc09395aa2efbf9a21d27233fc",
- "sha256:939266b7d5c6df6d45a1aee2c47a09313f813e87790335f00c57708b49480054"
- ],
- "version": "==1.6.0"
- },
- "google-cloud-trace": {
- "hashes": [
- "sha256:b45bc7934ee459e83f1a4b04ba7a0de1be9fe004bcf494b9ff2f75e18414642c",
- "sha256:c926f55c141caf9fd0e29991caaba03a6364fe997384e2f48c34051f0f690186"
- ],
- "version": "==0.17.0"
- },
- "google-cloud-translate": {
- "hashes": [
- "sha256:4420f5b320145bf097ca9a12b18ec27c067886e2832d181f268c46c3bcb0d2e4",
- "sha256:7706814d8ee1be9668b5c204852d44e7f6c51d44a2822df772b7b2fa3fb7c6bb"
- ],
- "version": "==1.3.1"
- },
- "google-cloud-videointelligence": {
- "hashes": [
- "sha256:5c18e64bf41fc5f8203d3b4f7a88921ff8d6a09b8ce343da866274fa375dcb82",
- "sha256:d46b94f8d37da565a90fb282a4053ee1379b4cbe1e2b51dfef75444fd5422e5d"
- ],
- "version": "==1.0.1"
- },
- "google-cloud-vision": {
- "hashes": [
- "sha256:9442d3456935654920f002efa846271dc68b19f5a0b3e2c314a9edd9f34f30a3",
- "sha256:a4cd3f64ac2c2586a56ea00d27c58306465e3277873cc9bfce3677e9ccb2b039"
- ],
- "version": "==0.29.0"
- },
- "google-gax": {
- "hashes": [
- "sha256:518e8d5eb90774af2041080d242f4bcec4c6e653226c693901eaf82eda8a395c",
- "sha256:bc60cdfed5c657ea8542ba8102fb43862a1c4809d98ca5aa1fcc92f9d4f7403d"
- ],
- "version": "==0.15.16"
- },
- "google-resumable-media": {
- "hashes": [
- "sha256:116de90b9cd483b17c53618ee6a5a20f33e741c648140c8cc9c2141e07616ff1",
- "sha256:97de518f8166d442cc0b61fab308bcd319dbb970981e667ec8ded44f5ce49836"
- ],
- "version": "==0.3.1"
- },
- "googleapis-common-protos": {
- "hashes": [
- "sha256:c075eddaa2628ab519e01b7d75b76e66c40eaa50fc52758d8225f84708950ef2"
- ],
- "version": "==1.5.3"
- },
- "grpc-google-iam-v1": {
- "hashes": [
- "sha256:5009e831dcec22f3ff00e89405249d6a838d1449a46ac8224907aa5b0e0b1aec"
- ],
- "version": "==0.11.4"
- },
- "grpcio": {
- "hashes": [
- "sha256:03522ca2b80cc83c407d6d5fa0f532fc5b0160f5861ab6628ae418218022f339",
- "sha256:0c07fc5a9fa73832bca228d9004dc0a511d1f1a890c8ff0fb6e78f7fa1b96d58",
- "sha256:5487948a33ded0577035fb9ad5c542463fabdb356d27fb6cf3eed0bed78f5228",
- "sha256:592b14bab2cf8a5ac6e0b1e763b10828dda55ae74e4a476102897a25d033d0b8",
- "sha256:6727633444344e14d499f81e41e87de29f42653a0c048c0fce780b29e2ffe563",
- "sha256:7aaa523dd5e91acb61d41232eef96192a66b1e8d85d79a55a204093dce50b696",
- "sha256:7e81d2cd63fbc77782b140d728a5444c09a7ef1ea99957c490b722e416671921",
- "sha256:89b96cb00db3e4c2f612ddff81b27afd2406bf697f0654dcd5ba7bed3d5b9322",
- "sha256:a26d32bdc1479c3983194ad380e4cc4bad379729fac4d4acbbda209658d65610",
- "sha256:b092361aed6a5ab201e750ccc2fc59250448107cb958c63194455fd5161f3dcc",
- "sha256:bef5ce5cfe622830da8b92420748e7f5719d208198d750eb497a74fa20da5907",
- "sha256:c0232401d096d9beb06d1af42cf3d65bcc790557712c8b0226809c27401dd455",
- "sha256:cf6e88dc0fc06e446c689304bae6cc15df0517f02ee2ac52bcef0cb893b3e9ba",
- "sha256:cfc2595325ac3bbd170293050a3ff0b5c8e3846d8498d9b2dedcd3063460c007",
- "sha256:d4d4eb072fa2c44a8fe22475874c13c2cc786dba587f633cd47720fb8fec922e",
- "sha256:d78d29295723493327c68aa39407ec44ed7a4ed326dde413cce57e2409683f68",
- "sha256:d829735b1862687074ef9df15f6c4fc1f3b27c0c80d4890ef985c039cdb256c6",
- "sha256:db2430e38a268e64c980e34a62b7f50365a4401172a2f5202ad05eb156e418da",
- "sha256:df3f75f88431da28b1c60a043f2a4f2e359287249baf317f4eda20626b34ce5d",
- "sha256:e1a648519db0de7bab3583dc2471f4c12ee3fc8a8c459e75da9e05ae70cf9ce7",
- "sha256:e35e4c0e5fe5f0fd8914a1630443f7272a752fb9d39c96771799a32056b06ab5",
- "sha256:e9b09fbae7bcc1b1791168665c29bcf37253f54d9d5e6bc8a533a9917912f1f6",
- "sha256:e9b9e67059c81f5b232991c573601856065562f010b655b3afd7ab38459ac321",
- "sha256:e9cf01192ed663a277b64bc559066b07a1355cd85b74cbca9353a25e8bd45544",
- "sha256:ef886f8c845ce7c011b2c154fd2b7998f920d145a2dfa121459e8df5b562a879",
- "sha256:efcf5ea73af68e110c375173495f36d9ed1e50bc88eeae1314f5573f750eecb9",
- "sha256:fc4deee5b4402c4bd37b3c7dbcde8903be89b9026af0f5777f63ae24069cafec"
- ],
- "version": "==1.11.0"
- },
- "happybase": {
- "hashes": [
- "sha256:e20376e2e32291798d2226502994134c1c4e175136d8375b3c517a234fa22481"
- ],
- "index": "ia",
- "version": "==1.1.0"
- },
- "httplib2": {
- "hashes": [
- "sha256:e71daed9a0e6373642db61166fa70beecc9bf04383477f84671348c02a04cbdf"
- ],
- "version": "==0.11.3"
- },
- "ialib": {
- "hashes": [
- "sha256:6ec318ec7ce6aeb326984bb259dcbe0c0907e648b41ad6c0bba1a7c6eb285ef2"
- ],
- "version": "==0.1.1"
- },
- "idna": {
- "hashes": [
- "sha256:2c6a5de3089009e3da7c5dde64a141dbc8551d5b7f6cf4ed7c2568d0cc520a8f",
- "sha256:8c7309c718f94b3a625cb648ace320157ad16ff131ae0af362c9f21b80ef6ec4"
- ],
- "version": "==2.6"
- },
- "itsdangerous": {
- "hashes": [
- "sha256:cbb3fcf8d3e33df861709ecaf89d9e6629cff0a217bc2848f1b41cd30d360519"
- ],
- "version": "==0.24"
- },
- "jinja2": {
- "hashes": [
- "sha256:74c935a1b8bb9a3947c50a54766a969d4846290e1e788ea44c1392163723c3bd",
- "sha256:f84be1bb0040caca4cea721fcbbbbd61f9be9464ca236387158b0feea01914a4"
- ],
- "version": "==2.10"
- },
- "jmespath": {
- "hashes": [
- "sha256:6a81d4c9aa62caf061cb517b4d9ad1dd300374cd4706997aff9cd6aedd61fc64",
- "sha256:f11b4461f425740a1d908e9a3f7365c3d2e569f6ca68a2ff8bc5bcd9676edd63"
- ],
- "version": "==0.9.3"
- },
- "markupsafe": {
- "hashes": [
- "sha256:a6be69091dac236ea9c6bc7d012beab42010fa914c459791d627dad4910eb665"
- ],
- "version": "==1.0"
- },
- "mrjob": {
- "hashes": [
- "sha256:669a98afe53f4e4ad9373445f91a8c26e86e30f1acc50c7fd274a42e1ea846d8",
- "sha256:6ec1aca9b376c98249a324dd7837cc76e676d48ba10b2b6cbef246eba0ee52e9"
- ],
- "index": "ia",
- "version": "==0.6.2"
- },
- "oauth2client": {
- "hashes": [
- "sha256:5b5b056ec6f2304e7920b632885bd157fa71d1a7f3ddd00a43b1541a8d1a2460"
- ],
- "version": "==3.0.0"
- },
- "pillow": {
- "hashes": [
- "sha256:02d2ae1d7c311e6fa038abda0843683ae652c9292d723270c85deeb04a1001a8",
- "sha256:1263e38b91ca0132c77d5ae5a4d396bce7e7b1d13427b5d2982ac8f5bfbef62b",
- "sha256:1937c9e17f685fe6c360dd96ddb8f93f159ac721939ccbfc91a62d8124a29945",
- "sha256:1ce73edaeb49af9ebeacfb8c58428ae39592839d3a7a16ef3926773f1c8ff8ee",
- "sha256:2052f0372123c98497ee3294f4e20347d87b9f70d9c65ce2fc520b9339aa8465",
- "sha256:2602c7152e26f5bece294edb97af40345409ae55f8ad2a6d5da4380f4178defe",
- "sha256:26b4a2bcdf0e674505fcd2f1a882f29a99339ac3b5a8e7997b90ede2995434e2",
- "sha256:282e069f92e43047b34bbd995a8800669af11d038db571758708ebcd96462964",
- "sha256:2ee30463cbc8e60cba92722a3a64881a0d3df534a047e299a9bcf62ea34fd061",
- "sha256:3183b19cdd6fb5c68498334601eba770bc7abd44977b4119e4fa49d45e12845b",
- "sha256:3c6133d928643167af35a1dd012889e6ff2e407895d7e16c2425cdab1ab1d608",
- "sha256:412f4999794a80c9153cd2156f040b8e570b145d2edf5830854578ffb0b27cac",
- "sha256:4678857a6dd0834a77ad6b5eb75a6d79753aa1a13f54f1c47fdb1e9bca63f389",
- "sha256:4756b77682c7335751a2cfc0e9e6d96945d88ffd315420d9010235021ddfc64c",
- "sha256:486f4ccddee09429cb1c63ea56c02894aecf9d69acdcaf006c53835df2549fff",
- "sha256:502275e7a83872e62e0cd0be4da575a53a1f9703341aba814527dacdda3660a8",
- "sha256:520dfe2ed09ea90a82d6876e87e82c82ba390d2b2936a95d8e9997eca281546f",
- "sha256:5bcea0df97fe0b911a6629aab0997b98e8811561c27167266758a7ede173123e",
- "sha256:61cb7e1ff212293d74155397fad008b052bc9633efdf9caa4271c316cd25b99f",
- "sha256:68e45ed91531d3b05a17a356fd4cb928603a00259916e057730a024b029d6b51",
- "sha256:69c3cc797a66241ed2fa61ff6f52c73e7bd3e738d80d64abb3500e6fbdec30a3",
- "sha256:69ec2f0effe8b395e55929bb4d9a3ca8ff0c40f85d61d00e1e5b1e504d28b5e2",
- "sha256:6a06f165dcec5789fd98a5d4fe542619ffd3b86b9bf616d1a54d824e9428c6d3",
- "sha256:77eac8ee2b400be84618ab5876b0e59fe98e32fc4d99aaa34bf413e125361a05",
- "sha256:82351254350d9212bccf71d387efae8ad8f6f4b904d095546a77852a6b16e05b",
- "sha256:95236f64904157256254b6cc8e29feecd9ee6985732dcb36c9f58d7dabe081d0",
- "sha256:95bd8811ad4ece9df7b8cb9a1eef6184b80b6b8b8c199751ab0a5fb48ae82f64",
- "sha256:9992d8f4b4ad53467ea76e6b796c18e22ec948dcee064be07fb43c155472e1d7",
- "sha256:9c116c9784689685ee0c2a6bf74d9bb7a8c8134a93e96d12039eead2065f6842",
- "sha256:9e274583a0eab0b6d227139146e28f74488cfbc0d262c4ba2e5c0998b9c498d2",
- "sha256:a0b7eeee0346ca67cdd9b23a613de3fe71a4c46419c37bdfef69b82dd32a9a0a",
- "sha256:a10befeb7b9975d7c3d2ca3eaf0cb505db98fe50874130e182c2a6f7a606591f",
- "sha256:a47f8b12541ffc219a0f26030daee2a57d1251cfd76a9101cbea74674909d5a3",
- "sha256:b55f62882d8db466fcf2228422bf3147617744888bf0cf6dffb3254a52eb316b",
- "sha256:bf83901c158ad92e77e990f51531434e5a96c6aef805a84b6e3bfe825f4d4d0c",
- "sha256:c32f99a0c7c5313b2df78399ef908563b319de23bec0cc89f1d04c37be19eb2d",
- "sha256:c34d10dda36d64cecf78bc4689758eca1e79b1e88f6e1d8c7cf207e6b9e7c984",
- "sha256:cf4b3c634b317ee247c3add4375b0a6bdc45eb0c12a5d7fbf9bfd47ec10b020f",
- "sha256:d7cf28e14b55e2f8848fb5e37655ffe13a0d5846cccc6ba46e031d0cf21879a3",
- "sha256:ddef2a522ba13348ecec354d6c4d2e24bd68fba2605d7c32682bc0140d9c4e9c",
- "sha256:e04df3808d6202dd552c837c824796899c09ff0ff9c335607904e31f9d387110",
- "sha256:e496387e51fec8d8b98312be0d4332dcffecbd60b42ddfa834baaea62cbddfcb",
- "sha256:e784b1a9fc54ae88a7171aef60a38c2ec0dc463f066691765d11748e014ce2a0",
- "sha256:eae3711a7916eb5ec800dfb6963da09db0ada63c0481639dd0ddc0b505883a02",
- "sha256:f040b4709cba8922f60de441684b3d061fedb61c6ca50d231df8a4d55e45943c",
- "sha256:f336019509df1a042b7d6bed69a0cb6c52108b6327ce936c2870145dc18f1394"
- ],
- "version": "==3.1.1"
- },
- "ply": {
- "hashes": [
- "sha256:e7d1bdff026beb159c9942f7a17e102c375638d9478a7ecd4cc0c76afd8de0b8"
- ],
- "version": "==3.8"
- },
- "proto-google-cloud-datastore-v1": {
- "hashes": [
- "sha256:a431bb6a286107900c9ce3c48d316378867293c50a4d8a6c7393264600e916f9"
- ],
- "version": "==0.90.4"
- },
- "proto-google-cloud-error-reporting-v1beta1": {
- "hashes": [
- "sha256:526f49ae84dec16aa4740415c86a919d48206001d116d12df5badc5b2b051b82"
- ],
- "version": "==0.15.3"
- },
- "proto-google-cloud-logging-v2": {
- "hashes": [
- "sha256:e0538745f0f33760ffd5116f33385113835a3b2042a6c914923be0539e5280ce"
- ],
- "version": "==0.91.3"
- },
- "protobuf": {
- "hashes": [
- "sha256:01ccd6d03449ae75b779fb5bf4ed62177d61afe3c5e6465ccf3f8b2e1a84afbe",
- "sha256:1d92cc30b0b46cced33adde5853d920179eb5ea8eecdee9552502a7f29cc3f21",
- "sha256:242e4c7ae565267a8bc8b92d707177f915607ea4bd73244bec6cbf4a49b96661",
- "sha256:3b60685732bd0cbdc802dfcb6071efbcf5d927ce3127c13c33ea1a8efae3aa76",
- "sha256:3f655e1f99c3e14d56ca900af1b9a4715b691319a295cc38939d7f77eabd5e7c",
- "sha256:560a38e692a69957a70ba0e5839aa67430efd63072bf91b0539dac19055694cd",
- "sha256:5c1c8f6a0a68a874e3beff89255959dd80fad45870e96c88944a1b81a22dd5f5",
- "sha256:628a3bf0794a8b3cabb18db11eb67cc10e0cc6e5525d557ae7b682bb73fa2018",
- "sha256:7222d6616108b33ad6cbeff8117062a73c43cdc8fa8f64f6a322ebeb663e710e",
- "sha256:76ef6ca3c50e4cfd044861586d5f1b352e0fe7f17f883df6c165bad5b4d0e10a",
- "sha256:7c193e6964e752bd056735594826c5b03274ceb8f07349d3ae47d9766250ba96",
- "sha256:869e12bcfb5759e683f53ec1dd6155b7be034065431da289f0cb4510040a0799",
- "sha256:905414e5ea6cdb78d8730f66335755152b46685fcb9fc2f2134024e3ea9e8dcc",
- "sha256:ac0067e3c60737865ed72bb7416e02297d229d960902802d874c0e167128c809",
- "sha256:adf716a89c9cc1891ead79a861c427071ef59172f0e11967b00565a9547b3bd0",
- "sha256:bcfa99f5a82f5eaaf6e5cee5bfdca5a1670f5740aec1d93dae170645ed1a16b0",
- "sha256:cc94079ae6cbcea5ae194464a30f3223f075e06a0446f52bca9ddbeb6e9f412a",
- "sha256:d5d9edfdc5a3a01d06062d677b121081629782edf0e05ca1be14f15bb947eeee",
- "sha256:e269ab7a50bf0fa6fe6a88ea7dcc7a1079ae9450d9ab9b7730ac32916d55508b",
- "sha256:e7fd33a3474cbe18fd5b5620784a0fa21fcae3e402b1806e29c6b450c7f61706"
- ],
- "version": "==3.5.2.post1"
- },
- "psutil": {
- "hashes": [
- "sha256:325c334596ad2d8a178d0e7b4eecc91748096a87489b3701ee16986173000aaa",
- "sha256:33384065f0014351fa70187548e3e95952c4df4bc5c38648bd0e647d21eaaf01",
- "sha256:51e12aa74509832443862373a2655052b20c83cad7322f49d217452500b9a405",
- "sha256:52a91ba928a5e86e0249b4932d6e36972a72d1ad8dcc5b7f753a2ae14825a4ba",
- "sha256:99029b6af386b22882f0b6d537ffed5a9c3d5ff31782974aeaa1d683262d8543",
- "sha256:b10703a109cc9225cd588c207f7f93480a420ade35c13515ea8f20063b42a392",
- "sha256:ddba952ed256151844d82fb13c8fb1019fe11ecaeacbd659d67ba5661ae73d0d",
- "sha256:ebe293be36bb24b95cdefc5131635496e88b17fabbcf1e4bc9b5c01f5e489cfe",
- "sha256:f24cd52bafa06917935fe1b68c5a45593abe1f3097dc35b2dfc4718236795890"
- ],
- "version": "==5.4.5"
- },
- "publicsuffix": {
- "hashes": [
- "sha256:99a3a06d6eb19c57057d17560908b757995396ad76e6513c9d17e6a7a1266c91",
- "sha256:ae77593d269e1e5131723259cc1142c25690c20c59f2e98f67e227228028bda9"
- ],
- "version": "==1.1.0"
- },
- "pyasn1": {
- "hashes": [
- "sha256:0d7f6e959fe53f3960a23d73f35e1fce61348b30915b6664309ca756de7c1f89",
- "sha256:5a0db897b311d265cde49615cf783f1c78613138605cdd0f907ecfa5b2aba3ee",
- "sha256:758cb50abddc03e4563fd9e7f03db56e3e87b58c0bd01247360326e5c0c7ffa5",
- "sha256:7d626683e3d792cccc608da02498aff37ab4f3dafd8905d6bf755d11f9b26b43",
- "sha256:a7efe807c4b83a859e2735c692b92ed7b567cfddc4163763412920041d876c2b",
- "sha256:b5a9ca48055b9a20f6d1b3d68e38692e5431c86a0f99ea602e61294e891fee5b",
- "sha256:c07d6e587b2f928366b1f67c09bda026a3e6fcc99e80a744dc67f8fca3895626",
- "sha256:d258b0a71994f7770599835249cece1caef3c70def868c4915e6e5ca49b67d15",
- "sha256:d5cd6ed995dba16fad0c521cfe31cd2d68400b53fcc2bce93326829be73ab6d1",
- "sha256:d84c2aea3cf43780e9e6a19f4e4dddee9f6976519020e64e47c57e5c7a8c3dd2",
- "sha256:e85895087905c65b5b594eb91f7522664c85545b147d5f4d4e7b1b07da8dcbdc",
- "sha256:f81c96761fca60d64b1c9b79ec2e40cf9495a745cf570613079ef324aeb9672b"
- ],
- "version": "==0.4.2"
- },
- "pyasn1-modules": {
- "hashes": [
- "sha256:041e9fbafac548d095f5b6c3b328b80792f006196e15a232b731a83c93d59493",
- "sha256:0cdca76a68dcb701fff58c397de0ef9922b472b1cb3ea9695ca19d03f1869787",
- "sha256:0cea139045c38f84abaa803bcb4b5e8775ea12a42af10019d942f227acc426c3",
- "sha256:0f2e50d20bc670be170966638fa0ae603f0bc9ed6ebe8e97a6d1d4cef30cc889",
- "sha256:47fb6757ab78fe966e7c58b2030b546854f78416d653163f0ce9290cf2278e8b",
- "sha256:598a6004ec26a8ab40a39ea955068cf2a3949ad9c0030da970f2e1ca4c9f1cc9",
- "sha256:72fd8b0c11191da088147c6e4678ec53e573923ecf60b57eeac9e97433e09fc2",
- "sha256:854700bbdd01394e2ada9c1bfbd0ed9f5d0c551350dbbd023e88b11d2771ae06",
- "sha256:af00ea8f2022b6287dc375b2c70f31ab5af83989fc6fe9eacd4976ce26cd7ccc",
- "sha256:b1f395cae2d669e0830cb023aa86f9f283b7a9aa32317d7f80d8e78aa2745812",
- "sha256:c6747146e95d2b14cc2a8399b2b0bde3f93778f8f9ec704690d2b589c376c137",
- "sha256:f53fe5bcebdf318f51399b250fe8325ef3a26d927f012cc0c8e0f9e9af7f9deb"
- ],
- "version": "==0.2.1"
- },
- "pylru": {
- "hashes": [
- "sha256:71376192671f0ad1690b2a7427d39a29b1df994c8469a9b46b03ed7e28c0172c"
- ],
- "version": "==1.0.9"
- },
- "pymysql": {
- "hashes": [
- "sha256:04fa19fad017fdb21394fad2878c1d6bd346959d4fbfd1b66050a09fc636a321",
- "sha256:32da4a66397077d42908e449688f2ec71c2b18892a6cd04f03ab2aa828a70f40"
- ],
- "version": "==0.8.0"
- },
- "python-dateutil": {
- "hashes": [
- "sha256:891c38b2a02f5bb1be3e4793866c8df49c7d19baabf9c1bad62547e0b4866aca",
- "sha256:95511bae634d69bc7329ba55e646499a842bc4ec342ad54a8cdb65645a0aad3c"
- ],
- "version": "==2.6.1"
- },
- "pytz": {
- "hashes": [
- "sha256:65ae0c8101309c45772196b21b74c46b2e5d11b6275c45d251b150d5da334555",
- "sha256:c06425302f2cf668f1bba7a0a03f3c1d34d4ebeef2c72003da308b3947c7f749"
- ],
- "version": "==2018.4"
- },
- "pyyaml": {
- "hashes": [
- "sha256:0c507b7f74b3d2dd4d1322ec8a94794927305ab4cebbe89cc47fe5e81541e6e8",
- "sha256:0d8116e53b63bd0c50335d5cf151b0001bd8152e540365c515d77ed067964ffd",
- "sha256:16b20e970597e051997d90dc2cddc713a2876c47e3d92d59ee198700c5427736",
- "sha256:3262c96a1ca437e7e4763e2843746588a965426550f3797a79fca9c6199c431f",
- "sha256:326420cbb492172dec84b0f65c80942de6cedb5233c413dd824483989c000608",
- "sha256:4474f8ea030b5127225b8894d626bb66c01cda098d47a2b0d3429b6700af9fd8",
- "sha256:592766c6303207a20efc445587778322d7f73b161bd994f227adaa341ba212ab",
- "sha256:5ac82e411044fb129bae5cfbeb3ba626acb2af31a8d17d175004b70862a741a7",
- "sha256:5f84523c076ad14ff5e6c037fe1c89a7f73a3e04cf0377cb4d017014976433f3",
- "sha256:827dc04b8fa7d07c44de11fabbc888e627fa8293b695e0f99cb544fdfa1bf0d1",
- "sha256:b4c423ab23291d3945ac61346feeb9a0dc4184999ede5e7c43e1ffb975130ae6",
- "sha256:bc6bced57f826ca7cb5125a10b23fd0f2fff3b7c4701d64c439a300ce665fff8",
- "sha256:c01b880ec30b5a6e6aa67b09a2fe3fb30473008c85cd6a67359a1b15ed6d83a4",
- "sha256:ca233c64c6e40eaa6c66ef97058cdc80e8d0157a443655baa1b2966e812807ca",
- "sha256:e863072cdf4c72eebf179342c94e6989c67185842d9997960b3e69290b2fa269"
- ],
- "version": "==3.12"
- },
- "raven": {
- "hashes": [
- "sha256:738a52019d01955d5b44b49d67c9f2f4cedb1b4f70d4fb0b493931174d00e044",
- "sha256:92bf4c4819472ed20f1b9905eeeafe1bc6fe5f273d7c14506fdb8fb3a6ab2074"
- ],
- "index": "ia",
- "version": "==6.6.0"
- },
- "redis": {
- "hashes": [
- "sha256:8a1900a9f2a0a44ecf6e8b5eb3e967a9909dfed219ad66df094f27f7d6f330fb",
- "sha256:a22ca993cea2962dbb588f9f30d0015ac4afcc45bee27d3978c0dbe9e97c6c0f"
- ],
- "version": "==2.10.6"
- },
- "requests": {
- "hashes": [
- "sha256:6a1b267aa90cac58ac3a765d067950e7dbbf75b1da07e895d1f594193a40a38b",
- "sha256:9c443e7324ba5b85070c4a818ade28bfabedf16ea10206da1132edaa6dda237e"
- ],
- "index": "ia",
- "version": "==2.18.4"
- },
- "requests-file": {
- "hashes": [
- "sha256:75c175eed739270aec3c5279ffd74e6527dada275c5c0d76b5817e9c86bb7dea",
- "sha256:8f04aa6201bacda0567e7ac7f677f1499b0fc76b22140c54bc06edf1ba92e2fa"
- ],
- "version": "==1.4.3"
- },
- "robotexclusionrulesparser": {
- "hashes": [
- "sha256:d23aa14ae8145c13c95612d696736bad52a4bd0819ce8c9437ee745098fb8388"
- ],
- "version": "==1.7.1"
- },
- "rsa": {
- "hashes": [
- "sha256:25df4e10c263fb88b5ace923dd84bf9aa7f5019687b5e55382ffcdb8bede9db5",
- "sha256:43f682fea81c452c98d09fc316aae12de6d30c4b5c84226642cf8f8fd1c93abd"
- ],
- "version": "==3.4.2"
- },
- "s3transfer": {
- "hashes": [
- "sha256:90dc18e028989c609146e241ea153250be451e05ecc0c2832565231dacdf59c1",
- "sha256:c7a9ec356982d5e9ab2d4b46391a7d6a950e2b04c472419f5fdec70cc0ada72f"
- ],
- "version": "==0.1.13"
- },
- "schedule": {
- "hashes": [
- "sha256:1003a07c2dce12828c25a03a611a7371cedfa956e5f1b4abc32bcc94eb5a335b",
- "sha256:a24e75fc5e5acbd204049d55329e39a2a9a3479bca2e34c7fde81386c9d8d2fa"
- ],
- "version": "==0.5.0"
- },
- "six": {
- "hashes": [
- "sha256:70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9",
- "sha256:832dc0e10feb1aa2c68dcc57dbb658f1c7e65b9b61af69048abc87a2db00a0eb"
- ],
- "version": "==1.11.0"
- },
- "sqlalchemy": {
- "hashes": [
- "sha256:7cb00cc9b9f92ef8b4391c8a2051f81eeafefe32d63c6b395fd51401e9a39edb"
- ],
- "version": "==1.2.6"
- },
- "surt": {
- "hashes": [
- "sha256:1e6a2f3e626b45d6c2aa278f7d5b176e8a06586870453045e6f5f2cfe5cc62a3"
- ],
- "version": "==0.3.0"
- },
- "thriftpy": {
- "hashes": [
- "sha256:309e57d97b5bfa01601393ad4f245451e989d6206a59279e56866b264a99796d",
- "sha256:6baceabd40f0934186ebcfd1f559d34a9f165b65ac5d396a39ef7f61e44d9156"
- ],
- "version": "==0.3.9"
- },
- "tldextract": {
- "hashes": [
- "sha256:29797125db1f2e72ce2ee51f7a764ec8b1e6588812520795ffeae93bcd46bab4",
- "sha256:84a0b275c262e34df7506e10767e357e8b5a755a3a620cdc2cfe035061f7806d"
- ],
- "version": "==2.2.0"
- },
- "twitter": {
- "hashes": [
- "sha256:52545fd3b70d3d3807d3ce62d1a256727856d784d1630d64dedcc643aaf0b908",
- "sha256:acdc85e5beea752967bb64c63bde8b915c49a31a01db1b2fecccf9f2c1d5c44d"
- ],
- "version": "==1.18.0"
- },
- "urllib3": {
- "hashes": [
- "sha256:06330f386d6e4b195fbfc736b297f58c5a892e4440e54d294d7004e3a9bbea1b",
- "sha256:cc44da8e1145637334317feebd728bd869a35285b93cbb4cca2577da7e62db4f"
- ],
- "version": "==1.22"
- },
- "warctools": {
- "hashes": [
- "sha256:ce0c6e274db8ac8810f7c97b3943e8e8deadbc3f5c982db77cddaae2d2ae6170"
- ],
- "version": "==4.10.0"
- },
- "wayback": {
- "hashes": [
- "sha256:4ba5d6a48de9b73171df6c2c0378954fd08a2b55b7fecb9224dd48a87281efbe"
- ],
- "index": "ia",
- "version": "==0.2.7.4"
- },
- "wayback-esp": {
- "hashes": [
- "sha256:e24a692f805adc87124cedccafaa37b450ab47b5bda409beae57bcf57ef77f89"
- ],
- "version": "==0.1.2.1"
- },
- "wayback-search-js": {
- "hashes": [
- "sha256:afe198a56ca86eb0e6e78e54ad1efaa16976163f153e6e45f6c44c1d280889db"
- ],
- "version": "==1.4.11"
- },
- "wbex-client": {
- "hashes": [
- "sha256:447611c3df85175854c063ed784bb928f03262ad9a50fab2d74531c59200d94c"
- ],
- "version": "==0.1.5"
- },
- "werkzeug": {
- "hashes": [
- "sha256:c3fd7a7d41976d9f44db327260e263132466836cef6f91512889ed60ad26557c",
- "sha256:d5da73735293558eb1651ee2fddc4d0dedcfa06538b8813a2e20011583c9e49b"
- ],
- "version": "==0.14.1"
- },
- "xmltodict": {
- "hashes": [
- "sha256:8f8d7d40aa28d83f4109a7e8aa86e67a4df202d9538be40c0cb1d70da527b0df",
- "sha256:add07d92089ff611badec526912747cf87afd4f9447af6661aca074eeaf32615"
- ],
- "index": "ia",
- "version": "==0.11.0"
- }
- },
- "develop": {
- "astroid": {
- "hashes": [
- "sha256:35cfae47aac19c7b407b7095410e895e836f2285ccf1220336afba744cc4c5f2",
- "sha256:38186e481b65877fd8b1f9acc33e922109e983eb7b6e487bd4c71002134ad331"
- ],
- "version": "==1.6.3"
- },
- "attrs": {
- "hashes": [
- "sha256:1c7960ccfd6a005cd9f7ba884e6316b5e430a3f1a6c37c5f87d8b43f83b54ec9",
- "sha256:a17a9573a6f475c99b551c0e0a812707ddda1ec9653bed04c13841404ed6f450"
- ],
- "version": "==17.4.0"
- },
- "backcall": {
- "hashes": [
- "sha256:38ecd85be2c1e78f77fd91700c76e14667dc21e2713b63876c0eb901196e01e4",
- "sha256:bbbf4b1e5cd2bdb08f915895b51081c041bac22394fdfcfdfbe9f14b77c08bf2"
- ],
- "version": "==0.1.0"
- },
- "certifi": {
- "hashes": [
- "sha256:13e698f54293db9f89122b0581843a782ad0934a4fe0172d2a980ba77fc61bb7",
- "sha256:9fa520c1bacfb634fa7af20a76bcbd3d5fb390481724c597da32c719a7dca4b0"
- ],
- "version": "==2018.4.16"
- },
- "chardet": {
- "hashes": [
- "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae",
- "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691"
- ],
- "version": "==3.0.4"
- },
- "cookies": {
- "hashes": [
- "sha256:15bee753002dff684987b8df8c235288eb8d45f8191ae056254812dfd42c81d3",
- "sha256:d6b698788cae4cfa4e62ef8643a9ca332b79bd96cb314294b864ae8d7eb3ee8e"
- ],
- "version": "==2.2.1"
- },
- "coverage": {
- "hashes": [
- "sha256:03481e81d558d30d230bc12999e3edffe392d244349a90f4ef9b88425fac74ba",
- "sha256:0b136648de27201056c1869a6c0d4e23f464750fd9a9ba9750b8336a244429ed",
- "sha256:104ab3934abaf5be871a583541e8829d6c19ce7bde2923b2751e0d3ca44db60a",
- "sha256:15b111b6a0f46ee1a485414a52a7ad1d703bdf984e9ed3c288a4414d3871dcbd",
- "sha256:198626739a79b09fa0a2f06e083ffd12eb55449b5f8bfdbeed1df4910b2ca640",
- "sha256:1c383d2ef13ade2acc636556fd544dba6e14fa30755f26812f54300e401f98f2",
- "sha256:28b2191e7283f4f3568962e373b47ef7f0392993bb6660d079c62bd50fe9d162",
- "sha256:2eb564bbf7816a9d68dd3369a510be3327f1c618d2357fa6b1216994c2e3d508",
- "sha256:337ded681dd2ef9ca04ef5d93cfc87e52e09db2594c296b4a0a3662cb1b41249",
- "sha256:3a2184c6d797a125dca8367878d3b9a178b6fdd05fdc2d35d758c3006a1cd694",
- "sha256:3c79a6f7b95751cdebcd9037e4d06f8d5a9b60e4ed0cd231342aa8ad7124882a",
- "sha256:3d72c20bd105022d29b14a7d628462ebdc61de2f303322c0212a054352f3b287",
- "sha256:3eb42bf89a6be7deb64116dd1cc4b08171734d721e7a7e57ad64cc4ef29ed2f1",
- "sha256:4635a184d0bbe537aa185a34193898eee409332a8ccb27eea36f262566585000",
- "sha256:56e448f051a201c5ebbaa86a5efd0ca90d327204d8b059ab25ad0f35fbfd79f1",
- "sha256:5a13ea7911ff5e1796b6d5e4fbbf6952381a611209b736d48e675c2756f3f74e",
- "sha256:69bf008a06b76619d3c3f3b1983f5145c75a305a0fea513aca094cae5c40a8f5",
- "sha256:6bc583dc18d5979dc0f6cec26a8603129de0304d5ae1f17e57a12834e7235062",
- "sha256:701cd6093d63e6b8ad7009d8a92425428bc4d6e7ab8d75efbb665c806c1d79ba",
- "sha256:7608a3dd5d73cb06c531b8925e0ef8d3de31fed2544a7de6c63960a1e73ea4bc",
- "sha256:76ecd006d1d8f739430ec50cc872889af1f9c1b6b8f48e29941814b09b0fd3cc",
- "sha256:7aa36d2b844a3e4a4b356708d79fd2c260281a7390d678a10b91ca595ddc9e99",
- "sha256:7d3f553904b0c5c016d1dad058a7554c7ac4c91a789fca496e7d8347ad040653",
- "sha256:7e1fe19bd6dce69d9fd159d8e4a80a8f52101380d5d3a4d374b6d3eae0e5de9c",
- "sha256:8c3cb8c35ec4d9506979b4cf90ee9918bc2e49f84189d9bf5c36c0c1119c6558",
- "sha256:9d6dd10d49e01571bf6e147d3b505141ffc093a06756c60b053a859cb2128b1f",
- "sha256:9e112fcbe0148a6fa4f0a02e8d58e94470fc6cb82a5481618fea901699bf34c4",
- "sha256:ac4fef68da01116a5c117eba4dd46f2e06847a497de5ed1d64bb99a5fda1ef91",
- "sha256:b8815995e050764c8610dbc82641807d196927c3dbed207f0a079833ffcf588d",
- "sha256:be6cfcd8053d13f5f5eeb284aa8a814220c3da1b0078fa859011c7fffd86dab9",
- "sha256:c1bb572fab8208c400adaf06a8133ac0712179a334c09224fb11393e920abcdd",
- "sha256:de4418dadaa1c01d497e539210cb6baa015965526ff5afc078c57ca69160108d",
- "sha256:e05cb4d9aad6233d67e0541caa7e511fa4047ed7750ec2510d466e806e0255d6",
- "sha256:e4d96c07229f58cb686120f168276e434660e4358cc9cf3b0464210b04913e77",
- "sha256:f3f501f345f24383c0000395b26b726e46758b71393267aeae0bd36f8b3ade80",
- "sha256:f8a923a85cb099422ad5a2e345fe877bbc89a8a8b23235824a93488150e45f6e"
- ],
- "version": "==4.5.1"
- },
- "decorator": {
- "hashes": [
- "sha256:2c51dff8ef3c447388fe5e4453d24a2bf128d3a4c32af3fabef1f01c6851ab82",
- "sha256:c39efa13fbdeb4506c476c9b3babf6a718da943dab7811c206005a4a956c080c"
- ],
- "version": "==4.3.0"
- },
- "happybase-mock": {
- "hashes": [
- "sha256:327203ff63171a83c9fab34b249636b6a55550041273d2acddc0723433bdf260",
- "sha256:bd4583551f40e8b7f622ffd462f8e7ed1d34d14d73fa1758f0a5f413b1949f50"
- ],
- "index": "ia",
- "version": "==0.9.0"
- },
- "idna": {
- "hashes": [
- "sha256:2c6a5de3089009e3da7c5dde64a141dbc8551d5b7f6cf4ed7c2568d0cc520a8f",
- "sha256:8c7309c718f94b3a625cb648ace320157ad16ff131ae0af362c9f21b80ef6ec4"
- ],
- "version": "==2.6"
- },
- "ipython": {
- "hashes": [
- "sha256:85882f97d75122ff8cdfe129215a408085a26039527110c8d4a2b8a5e45b7639",
- "sha256:a6ac981381b3f5f604b37a293369963485200e3639fb0404fa76092383c10c41"
- ],
- "index": "ia",
- "version": "==6.3.1"
- },
- "ipython-genutils": {
- "hashes": [
- "sha256:72dd37233799e619666c9f639a9da83c34013a73e8bbc79a7a6348d93c61fab8",
- "sha256:eb2e116e75ecef9d4d228fdc66af54269afa26ab4463042e33785b887c628ba8"
- ],
- "version": "==0.2.0"
- },
- "isort": {
- "hashes": [
- "sha256:1153601da39a25b14ddc54955dbbacbb6b2d19135386699e2ad58517953b34af",
- "sha256:b9c40e9750f3d77e6e4d441d8b0266cf555e7cdabdcff33c4fd06366ca761ef8",
- "sha256:ec9ef8f4a9bc6f71eec99e1806bfa2de401650d996c59330782b89a5555c1497"
- ],
- "version": "==4.3.4"
- },
- "jedi": {
- "hashes": [
- "sha256:1972f694c6bc66a2fac8718299e2ab73011d653a6d8059790c3476d2353b99ad",
- "sha256:5861f6dc0c16e024cbb0044999f9cf8013b292c05f287df06d3d991a87a4eb89"
- ],
- "version": "==0.12.0"
- },
- "lazy-object-proxy": {
- "hashes": [
- "sha256:0ce34342b419bd8f018e6666bfef729aec3edf62345a53b537a4dcc115746a33",
- "sha256:1b668120716eb7ee21d8a38815e5eb3bb8211117d9a90b0f8e21722c0758cc39",
- "sha256:209615b0fe4624d79e50220ce3310ca1a9445fd8e6d3572a896e7f9146bbf019",
- "sha256:27bf62cb2b1a2068d443ff7097ee33393f8483b570b475db8ebf7e1cba64f088",
- "sha256:27ea6fd1c02dcc78172a82fc37fcc0992a94e4cecf53cb6d73f11749825bd98b",
- "sha256:2c1b21b44ac9beb0fc848d3993924147ba45c4ebc24be19825e57aabbe74a99e",
- "sha256:2df72ab12046a3496a92476020a1a0abf78b2a7db9ff4dc2036b8dd980203ae6",
- "sha256:320ffd3de9699d3892048baee45ebfbbf9388a7d65d832d7e580243ade426d2b",
- "sha256:50e3b9a464d5d08cc5227413db0d1c4707b6172e4d4d915c1c70e4de0bbff1f5",
- "sha256:5276db7ff62bb7b52f77f1f51ed58850e315154249aceb42e7f4c611f0f847ff",
- "sha256:61a6cf00dcb1a7f0c773ed4acc509cb636af2d6337a08f362413c76b2b47a8dd",
- "sha256:6ae6c4cb59f199d8827c5a07546b2ab7e85d262acaccaacd49b62f53f7c456f7",
- "sha256:7661d401d60d8bf15bb5da39e4dd72f5d764c5aff5a86ef52a042506e3e970ff",
- "sha256:7bd527f36a605c914efca5d3d014170b2cb184723e423d26b1fb2fd9108e264d",
- "sha256:7cb54db3535c8686ea12e9535eb087d32421184eacc6939ef15ef50f83a5e7e2",
- "sha256:7f3a2d740291f7f2c111d86a1c4851b70fb000a6c8883a59660d95ad57b9df35",
- "sha256:81304b7d8e9c824d058087dcb89144842c8e0dea6d281c031f59f0acf66963d4",
- "sha256:933947e8b4fbe617a51528b09851685138b49d511af0b6c0da2539115d6d4514",
- "sha256:94223d7f060301b3a8c09c9b3bc3294b56b2188e7d8179c762a1cda72c979252",
- "sha256:ab3ca49afcb47058393b0122428358d2fbe0408cf99f1b58b295cfeb4ed39109",
- "sha256:bd6292f565ca46dee4e737ebcc20742e3b5be2b01556dafe169f6c65d088875f",
- "sha256:cb924aa3e4a3fb644d0c463cad5bc2572649a6a3f68a7f8e4fbe44aaa6d77e4c",
- "sha256:d0fc7a286feac9077ec52a927fc9fe8fe2fabab95426722be4c953c9a8bede92",
- "sha256:ddc34786490a6e4ec0a855d401034cbd1242ef186c20d79d2166d6a4bd449577",
- "sha256:e34b155e36fa9da7e1b7c738ed7767fc9491a62ec6af70fe9da4a057759edc2d",
- "sha256:e5b9e8f6bda48460b7b143c3821b21b452cb3a835e6bbd5dd33aa0c8d3f5137d",
- "sha256:e81ebf6c5ee9684be8f2c87563880f93eedd56dd2b6146d8a725b50b7e5adb0f",
- "sha256:eb91be369f945f10d3a49f5f9be8b3d0b93a4c2be8f8a5b83b0571b8123e0a7a",
- "sha256:f460d1ceb0e4a5dcb2a652db0904224f367c9b3c1470d5a7683c0480e582468b"
- ],
- "version": "==1.3.1"
- },
- "mccabe": {
- "hashes": [
- "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42",
- "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"
- ],
- "version": "==0.6.1"
- },
- "more-itertools": {
- "hashes": [
- "sha256:0dd8f72eeab0d2c3bd489025bb2f6a1b8342f9b198f6fc37b52d15cfa4531fea",
- "sha256:11a625025954c20145b37ff6309cd54e39ca94f72f6bb9576d1195db6fa2442e",
- "sha256:c9ce7eccdcb901a2c75d326ea134e0886abfbea5f93e91cc95de9507c0816c44"
- ],
- "version": "==4.1.0"
- },
- "parso": {
- "hashes": [
- "sha256:62bd6bf7f04ab5c817704ff513ef175328676471bdef3629d4bdd46626f75551",
- "sha256:a75a304d7090d2c67bd298091c14ef9d3d560e3c53de1c239617889f61d1d307"
- ],
- "version": "==0.2.0"
- },
- "pexpect": {
- "hashes": [
- "sha256:9783f4644a3ef8528a6f20374eeb434431a650c797ca6d8df0d81e30fffdfa24",
- "sha256:9f8eb3277716a01faafaba553d629d3d60a1a624c7cf45daa600d2148c30020c"
- ],
- "markers": "sys_platform != 'win32'",
- "version": "==4.5.0"
- },
- "pickleshare": {
- "hashes": [
- "sha256:84a9257227dfdd6fe1b4be1319096c20eb85ff1e82c7932f36efccfe1b09737b",
- "sha256:c9a2541f25aeabc070f12f452e1f2a8eae2abd51e1cd19e8430402bdf4c1d8b5"
- ],
- "version": "==0.7.4"
- },
- "pluggy": {
- "hashes": [
- "sha256:7f8ae7f5bdf75671a718d2daf0a64b7885f74510bcd98b1a0bb420eb9a9d0cff",
- "sha256:d345c8fe681115900d6da8d048ba67c25df42973bda370783cd58826442dcd7c",
- "sha256:e160a7fcf25762bb60efc7e171d4497ff1d8d2d75a3d0df7a21b76821ecbf5c5"
- ],
- "version": "==0.6.0"
- },
- "prompt-toolkit": {
- "hashes": [
- "sha256:1df952620eccb399c53ebb359cc7d9a8d3a9538cb34c5a1344bdbeb29fbcc381",
- "sha256:3f473ae040ddaa52b52f97f6b4a493cfa9f5920c255a12dc56a7d34397a398a4",
- "sha256:858588f1983ca497f1cf4ffde01d978a3ea02b01c8a26a8bbc5cd2e66d816917"
- ],
- "version": "==1.0.15"
- },
- "ptyprocess": {
- "hashes": [
- "sha256:e64193f0047ad603b71f202332ab5527c5e52aa7c8b609704fc28c0dc20c4365",
- "sha256:e8c43b5eee76b2083a9badde89fd1bbce6c8942d1045146e100b7b5e014f4f1a"
- ],
- "version": "==0.5.2"
- },
- "py": {
- "hashes": [
- "sha256:29c9fab495d7528e80ba1e343b958684f4ace687327e6f789a94bf3d1915f881",
- "sha256:983f77f3331356039fdd792e9220b7b8ee1aa6bd2b25f567a963ff1de5a64f6a"
- ],
- "version": "==1.5.3"
- },
- "pygments": {
- "hashes": [
- "sha256:78f3f434bcc5d6ee09020f92ba487f95ba50f1e3ef83ae96b9d5ffa1bab25c5d",
- "sha256:dbae1046def0efb574852fab9e90209b23f556367b5a320c0bcb871c77c3e8cc"
- ],
- "version": "==2.2.0"
- },
- "pylint": {
- "hashes": [
- "sha256:0b7e6b5d9f1d4e0b554b5d948f14ed7969e8cdf9a0120853e6e5af60813b18ab",
- "sha256:34738a82ab33cbd3bb6cd4cef823dbcabdd2b6b48a4e3a3054a2bbbf0c712be9"
- ],
- "index": "ia",
- "version": "==1.8.4"
- },
- "pytest": {
- "hashes": [
- "sha256:6266f87ab64692112e5477eba395cfedda53b1933ccd29478e671e73b420c19c",
- "sha256:fae491d1874f199537fd5872b5e1f0e74a009b979df9d53d1553fd03da1703e1"
- ],
- "index": "ia",
- "version": "==3.5.0"
- },
- "pytest-cov": {
- "hashes": [
- "sha256:03aa752cf11db41d281ea1d807d954c4eda35cfa1b21d6971966cc041bbf6e2d",
- "sha256:890fe5565400902b0c78b5357004aab1c814115894f4f21370e2433256a3eeec"
- ],
- "index": "ia",
- "version": "==2.5.1"
- },
- "pytest-pythonpath": {
- "hashes": [
- "sha256:f3d46b0a8276e856f7dc4f70ca97b88be6fbcf52d57ce36e35057d502388265e"
- ],
- "index": "ia",
- "version": "==0.7.2"
- },
- "requests": {
- "hashes": [
- "sha256:6a1b267aa90cac58ac3a765d067950e7dbbf75b1da07e895d1f594193a40a38b",
- "sha256:9c443e7324ba5b85070c4a818ade28bfabedf16ea10206da1132edaa6dda237e"
- ],
- "index": "ia",
- "version": "==2.18.4"
- },
- "responses": {
- "hashes": [
- "sha256:c6082710f4abfb60793899ca5f21e7ceb25aabf321560cc0726f8b59006811c9",
- "sha256:f23a29dca18b815d9d64a516b4a0abb1fbdccff6141d988ad8100facb81cf7b3"
- ],
- "index": "ia",
- "version": "==0.9.0"
- },
- "simplegeneric": {
- "hashes": [
- "sha256:dc972e06094b9af5b855b3df4a646395e43d1c9d0d39ed345b7393560d0b9173"
- ],
- "version": "==0.8.1"
- },
- "six": {
- "hashes": [
- "sha256:70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9",
- "sha256:832dc0e10feb1aa2c68dcc57dbb658f1c7e65b9b61af69048abc87a2db00a0eb"
- ],
- "version": "==1.11.0"
- },
- "traitlets": {
- "hashes": [
- "sha256:9c4bd2d267b7153df9152698efb1050a5d84982d3384a37b2c1f7723ba3e7835",
- "sha256:c6cb5e6f57c5a9bdaa40fa71ce7b4af30298fbab9ece9815b5d995ab6217c7d9"
- ],
- "version": "==4.3.2"
- },
- "urllib3": {
- "hashes": [
- "sha256:06330f386d6e4b195fbfc736b297f58c5a892e4440e54d294d7004e3a9bbea1b",
- "sha256:cc44da8e1145637334317feebd728bd869a35285b93cbb4cca2577da7e62db4f"
- ],
- "version": "==1.22"
- },
- "wcwidth": {
- "hashes": [
- "sha256:3df37372226d6e63e1b1e1eda15c594bca98a22d33a23832a90998faa96bc65e",
- "sha256:f4ebe71925af7b40a864553f761ed559b43544f8f71746c2d756c7fe788ade7c"
- ],
- "version": "==0.1.7"
- },
- "wrapt": {
- "hashes": [
- "sha256:d4d560d479f2c21e1b5443bbd15fe7ec4b37fe7e53d335d3b9b0a7b1226fe3c6"
- ],
- "version": "==1.10.11"
- }
- }
-}
diff --git a/mapreduce/README.md b/mapreduce/README.md
deleted file mode 100644
index aebc160..0000000
--- a/mapreduce/README.md
+++ /dev/null
@@ -1,74 +0,0 @@
-
-Hadoop streaming map/reduce jobs written in python using the mrjob library.
-
-## Development and Testing
-
-System dependencies in addition to `../README.md`:
-
-- `libjpeg-dev` (for wayback libraries)
-
-Run the tests with:
-
- pipenv run pytest
-
-Check test coverage with:
-
- pytest --cov --cov-report html
- # open ./htmlcov/index.html in a browser
-
-TODO: Persistant GROBID and HBase during development? Or just use live
-resources?
-
-## Extraction Task
-
-An example actually connecting to HBase from a local machine, with thrift
-running on a devbox and GROBID running on a dedicated machine:
-
- ./extraction_cdx_grobid.py \
- --hbase-table wbgrp-journal-extract-0-qa \
- --hbase-host wbgrp-svc263.us.archive.org \
- --grobid-uri http://wbgrp-svc096.us.archive.org:8070 \
- tests/files/example.cdx
-
-Running from the cluster:
-
- # Create tarball of virtualenv
- export PIPENV_VENV_IN_PROJECT=1
- pipenv shell
- export VENVSHORT=`basename $VIRTUAL_ENV`
- tar -czf $VENVSHORT.tar.gz -C /home/bnewbold/.local/share/virtualenvs/$VENVSHORT .
-
- ./extraction_cdx_grobid.py \
- --hbase-table wbgrp-journal-extract-0-qa \
- --hbase-host wbgrp-svc263.us.archive.org \
- --grobid-uri http://wbgrp-svc096.us.archive.org:8070 \
- -r hadoop \
- -c mrjob.conf \
- --archive $VENVSHORT.tar.gz#venv \
- hdfs:///user/bnewbold/journal_crawl_cdx/citeseerx_crawl_2017.cdx
-
-## Backfill Task
-
-An example actually connecting to HBase from a local machine, with thrift
-running on a devbox:
-
- ./backfill_hbase_from_cdx.py \
- --hbase-table wbgrp-journal-extract-0-qa \
- --hbase-host wbgrp-svc263.us.archive.org \
- tests/files/example.cdx
-
-Actual invocation to run on Hadoop cluster (running on an IA devbox, where
-hadoop environment is configured):
-
- # Create tarball of virtualenv
- export PIPENV_VENV_IN_PROJECT=1
- pipenv install --deploy
- tar -czf venv-current.tar.gz -C .venv .
-
- ./backfill_hbase_from_cdx.py \
- --hbase-host wbgrp-svc263.us.archive.org \
- --hbase-table wbgrp-journal-extract-0-qa \
- -r hadoop \
- -c mrjob.conf \
- --archive $VENVSHORT.tar.gz#venv \
- hdfs:///user/bnewbold/journal_crawl_cdx/citeseerx_crawl_2017.cdx
diff --git a/mapreduce/TODO b/mapreduce/TODO
deleted file mode 100644
index 4f4db16..0000000
--- a/mapreduce/TODO
+++ /dev/null
@@ -1,4 +0,0 @@
-- quality scoring (of JSON output)
-- use pre-mapper `grep` command to filter down, eg, by status?
-- automation/docs for bundling virtualenv along
-- think about speedups
diff --git a/mapreduce/backfill_hbase_from_cdx.py b/mapreduce/backfill_hbase_from_cdx.py
deleted file mode 100755
index 6b2ec0b..0000000
--- a/mapreduce/backfill_hbase_from_cdx.py
+++ /dev/null
@@ -1,88 +0,0 @@
-#!/usr/bin/env python3
-"""
-Streaming Hadoop script to import CDX metadata into the HBase fulltext table,
-primarily for URL-agnostic crawl de-duplication. Takes only "fulltext" file
-formats.
-
-Requires:
-- happybase
-- mrjob
-"""
-
-import json
-import happybase
-import mrjob
-from mrjob.job import MRJob
-from common import parse_cdx_line
-
-
-class MRCDXBackfillHBase(MRJob):
-
- # CDX lines in; JSON status out
- INPUT_PROTOCOL = mrjob.protocol.RawValueProtocol
- OUTPUT_PROTOCOL = mrjob.protocol.JSONValueProtocol
-
- def configure_args(self):
- super(MRCDXBackfillHBase, self).configure_args()
-
- self.add_passthru_arg('--hbase-table',
- type=str,
- default='wbgrp-journal-extract-0-qa',
- help='HBase table to backfill into (must exist)')
- self.add_passthru_arg('--hbase-host',
- type=str,
- default='localhost',
- help='HBase thrift API host to connect to')
-
- def __init__(self, *args, **kwargs):
- super(MRCDXBackfillHBase, self).__init__(*args, **kwargs)
- self.mime_filter = ['application/pdf']
- self.hb_table = None
-
- def mapper_init(self):
-
- if self.hb_table:
- return
-
- try:
- host = self.options.hbase_host
- # TODO: make these configs accessible from... mrconf.cfg?
- hb_conn = happybase.Connection(host=host, transport="framed",
- protocol="compact")
- except Exception:
- raise Exception("Couldn't connect to HBase using host: {}".format(host))
- self.hb_table = hb_conn.table(self.options.hbase_table)
-
- def mapper(self, _, raw_cdx):
-
- self.increment_counter('lines', 'total')
-
- if (raw_cdx.startswith(' ') or raw_cdx.startswith('filedesc') or
- raw_cdx.startswith('#')):
- self.increment_counter('lines', 'invalid')
- yield _, dict(status="invalid", reason="line prefix")
- return
-
- info = parse_cdx_line(raw_cdx)
- if info is None:
- self.increment_counter('lines', 'invalid')
- yield _, dict(status="invalid")
- return
-
- if info['file:mime'] not in self.mime_filter:
- self.increment_counter('lines', 'skip')
- yield _, dict(status="skip", reason="unwanted mimetype")
- return
-
- key = info.pop('key')
- info['f:c'] = json.dumps(info['f:c'], sort_keys=True, indent=None)
- info['file:cdx'] = json.dumps(info['file:cdx'],
- sort_keys=True, indent=None)
-
- self.hb_table.put(key, info)
- self.increment_counter('lines', 'success')
-
- yield _, dict(status="success")
-
-if __name__ == '__main__': # pragma: no cover
- MRCDXBackfillHBase.run()
diff --git a/mapreduce/common.py b/mapreduce/common.py
deleted file mode 100644
index 6710044..0000000
--- a/mapreduce/common.py
+++ /dev/null
@@ -1,73 +0,0 @@
-
-from datetime import datetime
-
-NORMAL_MIME = (
- 'application/pdf',
- 'application/postscript',
- 'text/html',
- 'text/xml',
-)
-
-def normalize_mime(raw):
- raw = raw.lower()
- for norm in NORMAL_MIME:
- if raw.startswith(norm):
- return norm
-
- # Special cases
- if raw.startswith('application/xml'):
- return 'text/xml'
- if raw.startswith('application/x-pdf'):
- return 'application/pdf'
- return None
-
-
-def test_normalize_mime():
- assert normalize_mime("asdf") is None
- assert normalize_mime("application/pdf") == "application/pdf"
- assert normalize_mime("application/pdf+journal") == "application/pdf"
- assert normalize_mime("Application/PDF") == "application/pdf"
- assert normalize_mime("application/p") is None
- assert normalize_mime("application/xml+stuff") == "text/xml"
- assert normalize_mime("application/x-pdf") == "application/pdf"
- assert normalize_mime("application/x-html") is None
-
-
-def parse_cdx_line(raw_cdx):
-
- cdx = raw_cdx.split()
- if len(cdx) < 11:
- return None
-
- surt = cdx[0]
- dt = cdx[1]
- url = cdx[2]
- mime = normalize_mime(cdx[3])
- http_status = cdx[4]
- key = cdx[5]
- c_size = cdx[8]
- offset = cdx[9]
- warc = cdx[10]
-
- if not (key.isalnum() and c_size.isdigit() and offset.isdigit()
- and http_status == "200" and len(key) == 32 and dt.isdigit()
- and mime != None):
- return None
-
- if '-' in (surt, dt, url, mime, http_status, key, c_size, offset, warc):
- return None
-
- key = "sha1:{}".format(key)
-
- info = dict(surt=surt, dt=dt, url=url, c_size=int(c_size),
- offset=int(offset), warc=warc)
-
- warc_file = warc.split('/')[-1]
- try:
- dt_iso = datetime.strptime(dt, "%Y%m%d%H%M%S").isoformat()
- except Exception:
- return None
-
- # 'i' intentionally not set
- heritrix = dict(u=url, d=dt_iso, f=warc_file, o=int(offset), c=1)
- return {'key': key, 'file:mime': mime, 'file:cdx': info, 'f:c': heritrix}
diff --git a/mapreduce/extraction_cdx_grobid.py b/mapreduce/extraction_cdx_grobid.py
deleted file mode 100755
index 040538c..0000000
--- a/mapreduce/extraction_cdx_grobid.py
+++ /dev/null
@@ -1,275 +0,0 @@
-#!/usr/bin/env python3
-"""
-Streaming Hadoop script to import extract metadata and body from fulltext (eg,
-PDF) files using GROBID. Input is a CDX file; results primarly go to HBase,
-with status written to configurable output stream.
-
-Fulltext files are loaded directly from WARC files in petabox, instead of going
-through the wayback replay.
-
-Requires:
-- happybase
-- mrjob
-- wayback/GWB libraries
-"""
-
-# XXX: some broken MRO thing going on in here due to python3 object wrangling
-# in `wayback` library. Means we can't run pylint.
-# pylint: skip-file
-
-import xml
-import json
-import raven
-import struct
-import requests
-import happybase
-import mrjob
-from mrjob.job import MRJob
-import wayback.exception
-from wayback.resource import Resource
-from wayback.resource import ArcResource
-from wayback.resourcestore import ResourceStore
-from gwb.loader import CDXLoaderFactory
-from common import parse_cdx_line
-from grobid2json import teixml2json
-
-# Yep, a global. Gets DSN from `SENTRY_DSN` environment variable
-sentry_client = raven.Client()
-
-# Specific poison-pill rows we should skip
-KEY_BLACKLIST = (
- 'sha1:DLCCSMMVTCCIR6LRXHEQLZ4PWO6NG2YT', # "failed to guess ARC header format"
-)
-
-class MRExtractCdxGrobid(MRJob):
-
- # CDX lines in; JSON status out
- #HADOOP_INPUT_FORMAT = 'org.apache.hadoop.mapred.lib.NLineInputFormat'
- #INPUT_PROTOCOL = mrjob.protocol.RawProtocol
- INPUT_PROTOCOL = mrjob.protocol.RawValueProtocol
- OUTPUT_PROTOCOL = mrjob.protocol.JSONValueProtocol
-
- def configure_args(self):
- super(MRExtractCdxGrobid, self).configure_args()
-
- self.add_passthru_arg('--hbase-table',
- type=str,
- default='wbgrp-journal-extract-0-qa',
- help='HBase table to backfill into (must exist)')
- self.add_passthru_arg('--hbase-host',
- type=str,
- default='localhost',
- help='HBase thrift API host to connect to')
- self.add_passthru_arg('--grobid-uri',
- type=str,
- default='http://localhost:8070',
- help='URI of GROBID API Server')
- self.add_passthru_arg('--warc-uri-prefix',
- type=str,
- default='https://archive.org/serve/',
- help='URI where WARCs can be found')
- self.add_passthru_arg('--force-existing',
- action="store_true",
- help='Re-processes (with GROBID) existing lines')
-
- def __init__(self, *args, **kwargs):
- super(MRExtractCdxGrobid, self).__init__(*args, **kwargs)
- self.mime_filter = ['application/pdf']
- self.hb_table = None
-
- def grobid_process_fulltext(self, content):
- r = requests.post(self.options.grobid_uri + "/api/processFulltextDocument",
- files={'input': content})
- return r
-
- def mapper_init(self):
-
- if self.hb_table:
- return
-
- sentry_client.tags_context(dict(hbase_table=self.options.hbase_table))
- try:
- host = self.options.hbase_host
- # TODO: make these configs accessible from... mrconf.cfg?
- hb_conn = happybase.Connection(host=host, transport="framed",
- protocol="compact")
- except Exception:
- raise Exception("Couldn't connect to HBase using host: {}".format(host))
- self.hb_table = hb_conn.table(self.options.hbase_table)
-
- def parse_line(self, raw_cdx):
-
- if (raw_cdx.startswith(' ') or raw_cdx.startswith('filedesc') or
- raw_cdx.startswith('#')):
- return None, dict(status="invalid", reason="line prefix")
-
- info = parse_cdx_line(raw_cdx)
- if info is None:
- return None, dict(status="invalid", reason="CDX parse")
-
- if info['file:mime'] not in self.mime_filter:
- return None, dict(status="skip", reason="mimetype")
-
- # If warc is not item/file.(w)arc.gz form, skip it
- if len(info['file:cdx']['warc'].split('/')) != 2:
- return None, dict(status="skip", reason="WARC path not petabox item/file")
-
- return info, None
-
- def fetch_warc_content(self, warc_path, offset, c_size):
- warc_uri = self.options.warc_uri_prefix + warc_path
- try:
- rstore = ResourceStore(loaderfactory=CDXLoaderFactory())
- gwb_record = rstore.load_resource(warc_uri, offset, c_size)
- except wayback.exception.ResourceUnavailable:
- return None, dict(status="error",
- reason="failed to load file contents from wayback/petabox")
-
- if gwb_record.get_status()[0] != 200:
- return None, dict(status="error",
- reason="archived HTTP response (WARC) was not 200",
- warc_status=gwb_record.get_status()[0])
- return gwb_record.open_raw_content().read(), None
-
- def extract(self, info):
-
- # Fetch data from WARCs in petabox
- original_content, status = self.fetch_warc_content(
- info['file:cdx']['warc'],
- info['file:cdx']['offset'],
- info['file:cdx']['c_size'])
- if status:
- return None, status
-
- info['file:size'] = len(original_content)
-
- # Submit to GROBID
- try:
- grobid_response = self.grobid_process_fulltext(original_content)
- except requests.exceptions.ConnectionError:
- return None, dict(status="error", reason="connection to GROBID worker")
-
- info['grobid0:status_code'] = grobid_response.status_code
-
- # 4 MByte XML size limit; don't record GROBID status on this path
- if len(grobid_response.content) > 4000000:
- info['grobid0:status'] = {'status': 'oversize'}
- return info, dict(status="oversize", reason="TEI response was too large")
-
- if grobid_response.status_code != 200:
- # response.text is .content decoded as utf-8
- info['grobid0:status'] = dict(status='error', description=grobid_response.text)
- return info, dict(status="error", reason="non-200 GROBID HTTP status",
- extra=grobid_response.text)
-
- info['grobid0:status'] = {'status': 'partial'}
- info['grobid0:tei_xml'] = grobid_response.content
-
- # Convert TEI XML to JSON
- try:
- info['grobid0:tei_json'] = teixml2json(info['grobid0:tei_xml'], encumbered=True)
- except xml.etree.ElementTree.ParseError:
- info['grobid0:status'] = dict(status="fail", reason="GROBID 200 XML parse error")
- return info, info['grobid0:status']
- except ValueError:
- info['grobid0:status'] = dict(status="fail", reason="GROBID 200 XML non-TEI content")
- return info, info['grobid0:status']
-
- tei_metadata = info['grobid0:tei_json'].copy()
- for k in ('body', 'annex'):
- # Remove fulltext (copywritted) content
- tei_metadata.pop(k, None)
- info['grobid0:metadata'] = tei_metadata
-
- # Determine extraction "quality"
- # TODO:
-
- info['grobid0:quality'] = None
- info['grobid0:status'] = {'status': 'success'}
-
- return info, None
-
- @sentry_client.capture_exceptions
- def mapper(self, _, raw_cdx):
- """
- 1. parse CDX line
- 2. check what is already in hbase
- 3. fetch data from wayback
- 4. submit to GROBID
- 5. convert GROBID response to JSON (and metadata)
- 6. determine "quality"
- 7. push results to hbase
- """
-
- self.increment_counter('lines', 'total')
-
- # Parse line and filter down
- info, status = self.parse_line(raw_cdx)
- if info is None:
- self.increment_counter('lines', status['status'])
- yield _, status
- return
- key = info['key']
- if key in KEY_BLACKLIST:
- self.increment_counter('lines', 'blacklist')
- yield _, dict(status='blacklist', key=key)
- return
-
- # Note: this may not get "cleared" correctly
- sentry_client.extra_context(dict(row_key=key))
-
- # Check if we've already processed this line
- oldrow = self.hb_table.row(key,
- columns=[b'f:c', b'file', b'grobid0:status_code'])
- if (oldrow.get(b'grobid0:status_code', None) != None
- and not self.options.force_existing):
- # This file has already been processed; skip it
- self.increment_counter('lines', 'existing')
- yield _, dict(status="existing", key=key)
- return
-
- # Do the extraction
- info, status = self.extract(info)
- if info is None:
- self.increment_counter('lines', status['status'])
- status['key'] = key
- yield _, status
- return
- extraction_status = status
-
- # Decide what to bother inserting back into HBase
- # Particularly: ('f:c', 'file:mime', 'file:size', 'file:cdx')
- grobid_status_code = info.get('grobid0:status_code', None)
- for k in list(info.keys()):
- if k.encode('utf-8') in oldrow:
- info.pop(k)
-
- # Convert fields to binary
- for k in list(info.keys()):
- if info[k] is None:
- info.pop(k)
- elif k in ('f:c', 'file:cdx', 'grobid0:status', 'grobid0:tei_json',
- 'grobid0:metadata'):
- assert type(info[k]) == dict
- info[k] = json.dumps(info[k], sort_keys=True, indent=None)
- elif k in ('file:size', 'grobid0:status_code'):
- # encode as int64 in network byte order
- if info[k] != {} and info[k] != None:
- info[k] = struct.pack('!q', info[k])
-
- key = info.pop('key')
- self.hb_table.put(key, info)
- self.increment_counter('lines', 'success')
-
- if extraction_status is not None:
- yield _, dict(status="partial", key=key,
- grobid_status_code=grobid_status_code,
- reason=extraction_status['reason'])
- else:
- yield _, dict(status="success",
- grobid_status_code=grobid_status_code, key=key,
- extra=extraction_status)
-
-
-if __name__ == '__main__': # pragma: no cover
- MRExtractCdxGrobid.run()
diff --git a/mapreduce/grobid2json.py b/mapreduce/grobid2json.py
deleted file mode 100755
index ca460f8..0000000
--- a/mapreduce/grobid2json.py
+++ /dev/null
@@ -1,146 +0,0 @@
-#!/usr/bin/env python3
-
-"""
-NB: adapted to work as a library for PDF extraction. Will probably be
-re-written eventually to be correct, complete, and robust; this is just a
-first iteration.
-
-This script tries to extract everything from a GROBID TEI XML fulltext dump:
-
-- header metadata
-- affiliations
-- references (with context)
-- abstract
-- fulltext
-- tables, figures, equations
-
-A flag can be specified to disable copyright encumbered bits (--no-emcumbered):
-
-- abstract
-- fulltext
-- tables, figures, equations
-
-Prints JSON to stdout, errors to stderr
-"""
-
-import io
-import json
-import argparse
-import xml.etree.ElementTree as ET
-
-ns = "http://www.tei-c.org/ns/1.0"
-
-def all_authors(elem):
- names = [' '.join([e.findtext('./{%s}forename' % ns) or '', e.findtext('./{%s}surname' % ns) or '']).strip()
- for e in elem.findall('.//{%s}author/{%s}persName' % (ns, ns))]
- return [dict(name=n) for n in names]
-
-
-def journal_info(elem):
- journal = dict()
- journal['name'] = elem.findtext('.//{%s}monogr/{%s}title' % (ns, ns))
- journal['publisher'] = elem.findtext('.//{%s}publicationStmt/{%s}publisher' % (ns, ns))
- if journal['publisher'] == '':
- journal['publisher'] = None
- journal['issn'] = elem.findtext('.//{%s}idno[@type="ISSN"]' % ns)
- journal['eissn'] = elem.findtext('.//{%s}idno[@type="eISSN"]' % ns)
- journal['volume'] = elem.findtext('.//{%s}biblScope[@unit="volume"]' % ns)
- journal['issue'] = elem.findtext('.//{%s}biblScope[@unit="issue"]' % ns)
- return journal
-
-
-def biblio_info(elem):
- ref = dict()
- ref['id'] = elem.attrib.get('{http://www.w3.org/XML/1998/namespace}id')
- # Title stuff is messy in references...
- ref['title'] = elem.findtext('.//{%s}analytic/{%s}title' % (ns, ns))
- other_title = elem.findtext('.//{%s}monogr/{%s}title' % (ns, ns))
- if other_title:
- if ref['title']:
- ref['journal'] = other_title
- else:
- ref['journal'] = None
- ref['title'] = other_title
- ref['authors'] = all_authors(elem)
- ref['publisher'] = elem.findtext('.//{%s}publicationStmt/{%s}publisher' % (ns, ns))
- if ref['publisher'] == '':
- ref['publisher'] = None
- date = elem.find('.//{%s}date[@type="published"]' % ns)
- ref['date'] = (date != None) and date.attrib.get('when')
- ref['volume'] = elem.findtext('.//{%s}biblScope[@unit="volume"]' % ns)
- ref['issue'] = elem.findtext('.//{%s}biblScope[@unit="issue"]' % ns)
- el = elem.find('.//{%s}ptr[@target]' % ns)
- if el is not None:
- ref['url'] = el.attrib['target']
- # Hand correction
- if ref['url'].endswith(".Lastaccessed"):
- ref['url'] = ref['url'].replace(".Lastaccessed", "")
- else:
- ref['url'] = None
- return ref
-
-
-def teixml2json(content, encumbered=True):
-
- if type(content) == str:
- content = io.StringIO(content)
- elif type(content) == bytes:
- content = io.BytesIO(content)
-
- info = dict()
-
- #print(content)
- #print(content.getvalue())
- tree = ET.parse(content)
- tei = tree.getroot()
-
- header = tei.find('.//{%s}teiHeader' % ns)
- if header is None:
- raise ValueError("XML does not look like TEI format")
- info['title'] = header.findtext('.//{%s}analytic/{%s}title' % (ns, ns))
- info['authors'] = all_authors(header.find('.//{%s}sourceDesc/{%s}biblStruct' % (ns, ns)))
- info['journal'] = journal_info(header)
- date = header.find('.//{%s}date[@type="published"]' % ns)
- info['date'] = (date != None) and date.attrib.get('when')
- info['doi'] = header.findtext('.//{%s}idno[@type="DOI"]' % ns)
- if info['doi']:
- info['doi'] = info['doi'].lower()
-
- refs = []
- for (i, bs) in enumerate(tei.findall('.//{%s}listBibl/{%s}biblStruct' % (ns, ns))):
- ref = biblio_info(bs)
- ref['index'] = i
- refs.append(ref)
- info['citations'] = refs
-
- if encumbered:
- el = tei.find('.//{%s}profileDesc/{%s}abstract' % (ns, ns))
- info['abstract'] = (el or None) and " ".join(el.itertext()).strip()
- el = tei.find('.//{%s}text/{%s}body' % (ns, ns))
- info['body'] = (el or None) and " ".join(el.itertext()).strip()
- el = tei.find('.//{%s}back/{%s}div[@type="acknowledgement"]' % (ns, ns))
- info['acknowledgement'] = (el or None) and " ".join(el.itertext()).strip()
- el = tei.find('.//{%s}back/{%s}div[@type="annex"]' % (ns, ns))
- info['annex'] = (el or None) and " ".join(el.itertext()).strip()
-
- return info
-
-def main(): # pragma no cover
- parser = argparse.ArgumentParser(
- description="GROBID TEI XML to JSON",
- usage="%(prog)s [options] <teifile>...")
- parser.add_argument("--no-encumbered",
- action="store_true",
- help="ignore errors loading individual WARC files")
- parser.add_argument("teifiles", nargs='+')
-
- args = parser.parse_args()
-
- for filename in args.teifiles:
- content = open(filename, 'r')
- print(json.dumps(
- teixml2json(content,
- encumbered=(not args.no_encumbered))))
-
-if __name__=='__main__': # pragma no cover
- main()
diff --git a/mapreduce/mrjob.conf b/mapreduce/mrjob.conf
deleted file mode 100644
index 6f36196..0000000
--- a/mapreduce/mrjob.conf
+++ /dev/null
@@ -1,16 +0,0 @@
-runners:
- local:
- upload_files:
- - common.py
- - grobid2json.py
- setup:
- - export PYTHONPATH=$PYTHONPATH:venv/lib/python3.5/site-packages/
- hadoop:
- no_output: true
- upload_files:
- - common.py
- - grobid2json.py
- setup:
- - export PYTHONPATH=$PYTHONPATH:venv/lib/python3.5/site-packages/
- cmdenv:
- SENTRY_DSN: https://6ab6ad080d034280b863f294e07cc5c6:414ebf0b68634f669d2dc00d7c935699@books-sentry.us.archive.org/9
diff --git a/mapreduce/pytest.ini b/mapreduce/pytest.ini
deleted file mode 100644
index 0a5e921..0000000
--- a/mapreduce/pytest.ini
+++ /dev/null
@@ -1,8 +0,0 @@
-
-[pytest]
-
-# allow imports from files in current directory
-python_paths = .
-
-# search for 'test_*' functions in all python files, not just under tests
-python_files = *.py
diff --git a/mapreduce/tests/files/23b29ea36382680716be08fc71aa81bd226e8a85.xml b/mapreduce/tests/files/23b29ea36382680716be08fc71aa81bd226e8a85.xml
deleted file mode 100644
index dbc8be5..0000000
--- a/mapreduce/tests/files/23b29ea36382680716be08fc71aa81bd226e8a85.xml
+++ /dev/null
@@ -1,2004 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<TEI xmlns="http://www.tei-c.org/ns/1.0"
-xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-xsi:schemaLocation="http://www.tei-c.org/ns/1.0 /srv/grobid/grobid-0.5.1/grobid-home/schemas/xsd/Grobid.xsd"
- xmlns:xlink="http://www.w3.org/1999/xlink">
- <teiHeader xml:lang="en">
- <encodingDesc>
- <appInfo>
- <application version="0.5.1-SNAPSHOT" ident="GROBID" when="2018-04-02T00:31+0000">
- <ref target="https://github.com/kermitt2/grobid">GROBID - A machine learning software for extracting information from scholarly documents</ref>
- </application>
- </appInfo>
- </encodingDesc>
- <fileDesc>
- <titleStmt>
- <title level="a" type="main">DYNAMICS OF RAILWAY FREIGHT VEHICLES</title>
- </titleStmt>
- <publicationStmt>
- <publisher/>
- <availability status="unknown"><licence/></availability>
- <date type="published" when="2015">2015</date>
- </publicationStmt>
- <sourceDesc>
- <biblStruct>
- <analytic>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">S</forename><surname>Original Citation Iwnicki</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">S</forename><surname>Stichel</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">A</forename><surname>Orlova</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">M</forename><surname>Hecht</surname></persName>
- </author>
- <author>
- <affiliation key="aff0">
- <orgName type="institution">University of Huddersfield Repository</orgName>
- </affiliation>
- </author>
- <title level="a" type="main">DYNAMICS OF RAILWAY FREIGHT VEHICLES</title>
- </analytic>
- <monogr>
- <title level="m">Dynamics of railway freight vehicles. Vehicle System Dynamics. pp. 1­39. ISSN 0042­3114</title>
- <imprint>
- <date type="published" when="2015">2015</date>
- </imprint>
- </monogr>
- <note>Dynamics of railway freight vehicles</note>
- </biblStruct>
- </sourceDesc>
- </fileDesc>
- <profileDesc>
- <textClass>
- <keywords>
- <term>Freight wagon</term>
- <term>Vehicle dynamics</term>
- <term>Computer simulation</term>
- <term>Rail Freight</term>
- <term>Running Gear Design</term>
- <term>Freight Bogies</term>
- </keywords>
- </textClass>
- <abstract>
- <p>This paper summarises the historical development of railway freight vehicles and how vehicle designers have tackled the difficult challenges of producing running gear which can accommodate the very high tare to laden mass of typical freight wagons whilst maintaining stable running at the maximum required speed and good curving performance. The most common current freight bogies are described in detail and recent improvements in techniques used to simulate the dynamic behaviour of railway vehicles are summarised and examples of how these have been used to improve freight vehicle dynamic behaviour are included. A number of recent developments and innovative components and sub systems are outlined and finally two new developments are presented in more detail: the LEILA bogie and the SUSTRAIL bogie.</p>
- </abstract>
- </profileDesc>
- </teiHeader>
- <text xml:lang="en">
- <body>
-<div xmlns="http://www.tei-c.org/ns/1.0"><head>DYNAMICS OF RAILWAY FREIGHT VEHICLES</head><p>Iwnicki S.D. 1 , Stichel S. <ref type="bibr" target="#b1">2</ref> , Orlova A. 3 , Hecht M. <ref type="bibr" target="#b3">4</ref> </p></div>
-<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1">Introduction</head><p>From their inception railways have been predominant in the carriage of bulk goods and railway wagons have been designed to allow this to be effected efficiently on different types of railway infrastructure. In more recent times with changes in industrial needs and competition from road and air transport railways have carried an ever declining share of freight. Although there is some evidence in some countries that this trend has started to change recently due to road congestion there is still not yet a widespread evidence of a major modal shift from road to rail which politicians have indicated is desirable. For example the European Transport White paper 2011 <ref type="bibr" target="#b0">[1]</ref> sets a target for modal shift of 30% by 2030 and 50% by 2050 from road freight to other modes such as rail or waterborne transport for distances over 300 km.</p><p>The barriers to this increased modal shift from road to rail seem to be largely due to the requirements from modern shippers for shorter end-to-end times but even more the demand is for high reliability of service and for additional features such as tracking and tracing of shipments, security and temperature control. As Hecht <ref type="bibr" target="#b1">[2]</ref> points out the lower speeds for rail freight compared with passenger services are not mainly related to lower vehicle speed capability but are more due to the fact that freight trains often travel on lower speed lines or are held for passenger traffic to pass and due to complex and lengthy shunting and handling operations and motive power and crew changes.</p><p>Nevertheless if freight vehicle speeds and acceleration and braking capabilities could allow them to be fully integrated with passenger traffic this would bring a step change in end to end freight train speeds as well as overall system capacity. A key factor in obtaining this increased speed is to ensure that the dynamic performance of freight vehicles can allow safe and reliable operation on track with different levels of irregularities and support conditions. Running gear has evolved with the experience of operation on different railways and more recently the use of computer simulation tools and several standardised designs are now ubiquitous. Several research projects and teams have recently been trying to advance from this position using innovative designs adapted from passenger vehicles or using other novel techniques. The use of computer simulations is now established for design of running gear and is also becoming accepted as part of the vehicle acceptance processes in many countries.</p></div>
-<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2">Early developments of freight wagons</head></div>
-<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.1">Background</head><p>Designers of freight vehicle running gear face many challenges but not least of these is the fact that the ratio of the laden to tare mass of a freight vehicle can be as much as 5:1 compared with a more manageable 1.5:1 for typical passenger vehicles. This effectively means that the suspension system has to be designed for two different vehicles (and every stage in between). A number of clever designs have evolved over the years and the most successful of these are now summarised.</p></div>
-<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.2">UIC double link</head><p>Freight wagons with link type suspensions have existed for more than 100 years, as can be seen in <ref type="figure" target="#fig_0">figure 1</ref>, and the link suspension is probably still the most common suspension type for two axle freight wagons in Europe today. As early as 1890 the principle of the link suspension was defined as a standard. A review of freight wagons with link suspension can be found in <ref type="bibr" target="#b2">[3]</ref>. After World War II the UIC double link suspension was defined as a standard <ref type="bibr" target="#b4">[5]</ref>. In the beginning of the 1980s a number of improvements were made. The axle load was increased to 22.5 tonnes and the parabolic leaf spring was introduced as standard component <ref type="bibr" target="#b5">[6]</ref>, <ref type="bibr" target="#b6">[7]</ref>. The UIC double link suspension in figure 2 mainly consists of three parts: Leaf springs, links and axle guards. The vehicle is connected to the parabolic or leaf spring by double links. The leaf spring rests on the axle box. This arrangement allows the axle box to move in both the longitudinal and lateral direction relative to the wagon body. The axle guard restricts the horizontal motion of the axle box. The principle of the suspension is that of a pendulum. In the longitudinal direction the suspension links are inclined, whereas in the lateral direction they are in a vertical plane when the vehicle body is in nominal position <ref type="bibr" target="#b0">[1]</ref>, <ref type="bibr" target="#b7">[8]</ref>, <ref type="bibr" target="#b8">[9]</ref>, <ref type="bibr" target="#b9">[10]</ref>. The characteristics of the double-link suspension are quite complex. The main components are shown in <ref type="figure">Figure 3</ref>. One of the main advantages of the link running gear is that it is simple, robust and cheap and also takes up little space in both lateral and vertical directions. Both stiffness and damping are provided by one system and are load dependent. The quasistatic curving performance of the single axle running gear with link suspension is good. For a typical two-axle freight wagon with a wheelbase of 9m on dry rails good steering performance down to 300 m curve radius can be achieved <ref type="bibr" target="#b9">[10]</ref>.</p><p>The running behaviour of two-axle freight wagons with link suspension can be rather poor mainly due to vehicle hunting. The amount of damping provided in the horizontal plane is often not sufficient. Additionally the characteristics of the suspension change during the life of the vehicle, due to suspension wear, and with the running conditions <ref type="bibr" target="#b9">[10]</ref>. The link suspension takes quite a lot of longitudinal space and is a poor isolator for sound and vibration.</p></div>
-<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.3">Link suspension bogies</head><p>The leaf spring and link suspension of the single-axle running gear has also been used on bogies since about 1925 <ref type="bibr" target="#b0">[1]</ref>. More recently it has been standardised with for example bogie type 931 (figure 4), developed in the 1950s by Deutsche Bahn with a wheelbase of 2000 mm and a wheel diameter of 1000 mm. This bogie was developed to run at 100 km/h with an axle load of 20 t and was the first bogie standardised by UIC <ref type="bibr" target="#b5">[6]</ref>, <ref type="bibr" target="#b6">[7]</ref>. In the beginning of the 1980s DB bogie type 665 was introduced with new features like parabolic leaf springs, 22.5 t permissible axle load and shorter links as shown in figure 5 <ref type="bibr" target="#b6">[7]</ref>. The bogie frame is a welded steel design but in some places forged components are used. The frame is connected to parabolic or trapezoidal leaf springs, that rest on the axlebox, being connected by swing links. Nominally the suspension links are positioned in a longitudinal vertical plane and inclined in this plane. During vehicle operation the links swing in that plane and also laterally <ref type="bibr" target="#b0">[1]</ref>, <ref type="bibr" target="#b5">[6]</ref>, <ref type="bibr" target="#b6">[7]</ref>, <ref type="bibr" target="#b10">[11]</ref>. A spherical centre-pivot and two side bearers connect the bogie frame and the wagon body. The side bearers can be either rigid or vertically suspended and have three functions:</p><p> to act as static support for the carbody.  to act as roll stiffness.  to provide friction damping between carbody and bogie The quasistatic curving performance of a bogie with link suspension is generally very good due to:</p><p> the short wheelset distance in the bogie of 1.8 m.  the soft longitudinal primary suspension.</p></div>
-<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.4">The Y25 Standard Bogie</head><p>Most railway vehicles have bogies or trucks which allow longer vehicles supported on two bogies while still keeping attack angles between wheels and rail in curves to reasonable levels. This arrangement also allows two stages of suspension with the 'primary' suspension between wheelset and bogie and secondary suspension between bogie and coach or wagon body. The primary suspension can isolate the bogie from short wavelength irregularities while the secondary suspension deals with the longer wavelength, lower frequency excitations.</p><p>As previously mentioned, a specific challenge for designers of freight vehicle running gear is the large difference between tare and laden vehicle mass. In the Y25 bogie progressive damping with vertical load is effected by the use of 'Lenoir links' which take part of the vertical load through an angled link and a pusher onto a vertical friction surface. This gives a level of damping which is broadly proportional to the vehicle mass. The Y25 bogie design originated in France in 1948 and was standardised by the ORE steering committee in 1967. It is shown in <ref type="figure">figure 6</ref>.</p></div>
-<div xmlns="http://www.tei-c.org/ns/1.0"><head>Figure 6: A Y25 type bogie</head><p>The design has been hugely successful and Y25 type bogies are the most predominant freight bogie in Europe.</p></div>
-<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.5">'three-piece' Freight Bogies</head><p>The three-piece bogies were first developed in 1930s and seemed to originate simultaneously in the USA (Barber bogie) and the Soviet Union (Hanin bogie). Now the three-piece bogie and its more sophisticated descendents are the most common suspension for freight wagons across North and South Americas, CIS countries, China, Africa, India and Australia. Maximum axle loads range between 7 and 36 t. The most common standards for three-piece bogies are AAR <ref type="bibr" target="#b12">[13]</ref> for 1435 mm gauge and GOST <ref type="bibr" target="#b13">[14]</ref> for 1520 mm gauge. A review of three-piece bogies can be found in <ref type="bibr" target="#b14">[15]</ref>.</p><p>The Russian model 18-100 bogie shown in <ref type="figure">figure 7</ref> is a good example of an early type of three-piece bogie. The term 'three-piece' refers to the design of the bogie frame which consists of three interconnected parts: two side frames and one bolster. The frame parts are usually cast.</p><p>The bogie is equipped with central suspension between the side frames and the bolster that consists of a set of springs and wedge friction dampers working in vertical and lateral direction and keeping the frame square. The side frames with their flat surfaces rest on the axle-boxes (or bearing adapters). The size of the opening in the side frame provides clearances in longitudinal and lateral direction within which the axle-box moves resisted by dry friction forces. The car body rests on the flat center bowl, its roll motion relative to the bolster is limited by side bearers which are usually stiff vertical stops including clearance when the wagon body is in the central position. The three-piece bogie is a very robust design with the advantage of being low cost in production, operation and repair. The following items are considered as disadvantages of traditional three-piece bogie and attempts have been made to address these in its further developments <ref type="bibr" target="#b14">[15]</ref>, <ref type="bibr" target="#b15">[16]</ref>, <ref type="bibr" target="#b16">[17]</ref>:</p><p> Limited critical speed of the empty wagon )with sway oscillation of car body being the major loss of stability mode);  Wheel flange contact in curves produced by warping between side frames and bolster;  Side frames adding to the unsprung mass and thus increasing track impact on short wavelength irregularities;  Deterioration of ride performance with wear of friction wedges and other friction surfaces.</p></div>
-<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3">Computer simulation</head><p>Computer simulation of freight vehicles is not at all as common as for passenger vehicles. Since many of the European freight vehicles are standardized very little new development has been carried out and the manufacturers do in general not perform a simulation analysis of the running behaviour of freight wagon. However, in several research groups at universities and research institutes and at some consulting companies computer simulation of freight vehicles is now performed.</p><p>Since manufacturers do not usually build simulation models of freight vehicles themselves one of the main challenges in modelling a freight wagon is to obtain all the input parameters required. Another aspect is that most suspension elements are strongly non-linear and in many cases even mathematically non-smooth. This makes it very difficult to build up simulation models that provide good results compared to measurement results. Some of the phenomena observed during simulation of freight vehicles will be discussed below.</p><p>Further, as described in Section 3.1, the characteristics of the suspension elements can vary during operation due to wear or environmental effects such as for example surface contamination changing the friction coefficient in sliding surfaces.</p><p>The main purpose of simulation studies of freight vehicles is very often a stability analysis (see Section 3.2) or an investigation of the curving behaviour of the freight wagon (see Section 3.3). Since the axle loads of freight wagons are usually high, the investigation of wheel or rail wear and rolling contact fatigue is often the primary reason for a simulation study in curves.</p></div>
-<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.1">Suspension components</head><p>The suspension in most freight vehicles relies on friction damping. Friction elements are low cost, require little maintenance and are usually load dependent. This means that the level of friction damping changes with axle load, an important feature in freight wagons due to the high tare to laden ratio already mentioned. Surveys of modelling of friction components in freight wagon can be found for example in <ref type="bibr" target="#b17">[18]</ref>- <ref type="bibr" target="#b21">[22]</ref>. Papers <ref type="bibr" target="#b17">[18]</ref> and <ref type="bibr" target="#b18">[19]</ref> are general reviews of rail vehicle suspension components, while <ref type="bibr" target="#b19">[20]</ref> is focused on freight vehicles and also discusses issues such as stability and curving of freight vehicles. Papers <ref type="bibr" target="#b20">[21]</ref> and <ref type="bibr" target="#b21">[22]</ref> are focussed on modelling friction wedges of three-piece bogies. Also in the proceedings from the Euromech 500 colloquium <ref type="bibr" target="#b22">[23]</ref> many valuable contributions on the topic of non-smooth suspension elements can be found. Various arrangements of suspension elements to simulate vehicle suspensions are documented in <ref type="bibr" target="#b23">[24]</ref>, <ref type="bibr" target="#b24">[25]</ref>.</p></div>
-<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.1.1">Friction damping</head><p>In most freight vehicle simulation models friction is modelled as dry Coulomb friction, where the friction force is proportional to the normal load. The friction coefficient is assumed to be constant, see force-deflection curve in <ref type="figure">figure 8</ref>, left. The disadvantage of the Coulomb model is that it is non-smooth, i.e. multi-valued and non-differentiable. Another way to model friction is with a linear spring in series with a friction slider as in <ref type="figure" target="#fig_8">figure 9</ref> with the resulting force-displacement characteristic in <ref type="figure">figure 8</ref>, right. Since most friction damper arrangements have a finite flexibility, such models could also be regarded as more realistic. Note, however that the model with a spring in series is still non-smooth. To avoid the difficulties mentioned above regularization methods are often applied, see for example <ref type="bibr" target="#b25">[26]</ref>, <ref type="bibr" target="#b26">[27]</ref> and <ref type="bibr" target="#b27">[28]</ref>. Piotrowski developed a non-smooth rheological model <ref type="bibr" target="#b28">[29]</ref>, <ref type="bibr" target="#b29">[30]</ref>, which employs the notion of the differential succession involving a contingent derivative of the non- smooth, multi-valued characteristics of Coulomb friction. Tan and Rogers <ref type="bibr" target="#b30">[31]</ref> proposed equivalent viscous damping models to avoid the numerical problems of Coulomb friction. They claim that this substitution works very well for cases where sliding motions predominate.</p><p>In many running gear arrangements two-dimensional friction elements are needed, e.g. in the Y25 and in the three-piece bogie. In these designs motions in two directions tangential to the friction surfaces are possible. Two-dimensional Coulomb friction models can be found e.g. in <ref type="bibr" target="#b31">[32]</ref>, <ref type="bibr" target="#b32">[33]</ref>.</p><p>Another phenomenon that is important to take into account is stochastic excitations that smooth the dry friction damping. Also mid frequency excitation generated in the wheel rail contact - often called dither - can smoothen dry friction and therefore have a significant influence on the simulation results, see for example <ref type="bibr" target="#b29">[30]</ref>, <ref type="bibr" target="#b32">[33]</ref>.</p><p>True and Asmund <ref type="bibr" target="#b32">[33]</ref> investigated the effects of dry friction in the suspension of a simple freight vehicle. They used a relatively simple model of dry friction and found that the stable behaviour for the system with friction exhibited a laterally oscillating motion which makes the system sensitive to external periodic forcing. </p></div>
-<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.1.2">Wagons with link suspension</head></div>
-<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.1.2.1">Basic model of leaf spring and link suspension</head><p>Leaf springs are often used as vertical suspension. In multibody simulation models they are usually regarded as rigid in both the longitudinal and lateral directions. For dynamic displacements around a static equilibrium position leaf springs are characterized by a relatively high stiffness for small displacements and a significantly lower stiffness for larger displacement, (figure 10). Leaf springs are described in the ORE reports <ref type="bibr" target="#b33">[34]</ref>, <ref type="bibr" target="#b34">[35]</ref>. Since link suspensions show very similar characteristics they are often modelled in a similar way to leaf springs, at least for the lateral link behaviour. The initial higher stiffness k 1 in leaf springs is caused by friction, i.e. the leaves of a leaf spring stick together for small displacements and start to slide on each other for larger displacements. In the same way the link rolls in the end bearing as long as there is no sliding in the contact area. The lower stiffness k 2 is the value for sliding in the leaf spring or the so called pendulum stiffness of a link. The force F d determines the amount of damping in the hysteresis. A commonly used model to represent the two different stiffness values with the hysteresis is to use a linear spring and a friction element in series, in parallel with another linear spring, as shown in <ref type="figure" target="#fig_0">figure 11</ref>. It should be taken into account that the characteristics of leaf springs vary due to wear in running or deterioration or lubrication state.</p><p>The three parameters in the model described above can be derived from measurements. This model, however, is simplified since the shape of the hysteresis curve is usually rounded as shown in <ref type="figure" target="#fig_0">figure 10</ref>. Measurement results and more detailed descriptions of link suspensions can be found in <ref type="bibr" target="#b33">[34]</ref>- <ref type="bibr" target="#b47">[48]</ref>. </p></div>
-<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.1.2.2">Advanced simulation models</head><p>For lateral displacements of a double-link all four joints are assumed to start to slide at the same time; therefore the model in <ref type="figure" target="#fig_0">figure 11</ref> is sufficient. In the longitudinal direction, however, it is more likely that the joints start to slide at different displacements as shown e.g. by Piotrowski <ref type="bibr" target="#b28">[29]</ref>. He uses a set of four sliders and spring elements with different breakout forces in parallel to describe these characteristics. Also in a model used by Stiepel several elements in parallel are used <ref type="bibr" target="#b43">[44]</ref>.</p><p>To give a better representation of the rounded shape of the hysteresis curves, Fancher developed a model for truck leaf springs <ref type="bibr" target="#b44">[45]</ref>, <ref type="bibr" target="#b45">[46]</ref> using exponential expressions. Jönsson <ref type="bibr" target="#b41">[42]</ref> used a similar approach, where the total force over the suspension component is separated into piece-wise elastic and friction forces. The model is used for both leaf springs and double-links.</p><p>Another possibility to describe hysteresis with rounded shape for link suspensions is to use rolling contact theory, which has been proposed by <ref type="bibr">Piotrowski [33]</ref>. Based on the slip velocity the creepage in the contact is calculated.</p></div>
-<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.1.3">Modelling the three-piece bogie</head></div>
-<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.1.3.1">Models of the central suspension</head><p>Most of the research in modelling three-piece bogies, such as <ref type="bibr" target="#b20">[21]</ref>, <ref type="bibr" target="#b21">[22]</ref>, is focussed on the central suspension element of the three-piece truck that provides damping with friction wedges. Early models of friction wedge suspensions recognized only vertical load-dependent friction force, later models included two-dimensional friction in the vertical and lateral directions <ref type="bibr" target="#b45">[46]</ref>, <ref type="bibr" target="#b49">[50]</ref>.</p><p>The first approach to account for possible angular and longitudinal displacements of bolster relative to the side frames is to introduce warping and longitudinal nonlinear resistance characteristics into the model, as it is done in <ref type="bibr" target="#b14">[15]</ref>, <ref type="bibr" target="#b16">[17]</ref>. In such case the wedges are not modelled as separate bodies, but the equivalent force against displacement characteristics are introduced accounting for wedge parameters, such as inclination angle, width of the vertical surface, width of the inclined surface, friction coefficients on inclined and vertical surfaces, etc.</p><p>The second approach to account for all possible degrees of freedom between side frame and bolster is to introduce multiple contact points mapped along the edges of the wedge with two-dimensional friction force elements in each of them. Such an approach was used by Ballew et al <ref type="bibr" target="#b45">[46]</ref>, it is implemented in simulation tools such as VAMPIRE <ref type="bibr" target="#b51">[52]</ref>, and the Universal Mechanism software <ref type="bibr" target="#b51">[52]</ref>. Numerous contact elements require an efficient numerical simulation algorithm to be implemented into the software that provides fast solution to resulting stiff system of equations, such as the one developed by Pogorelov <ref type="bibr" target="#b56">[57]</ref>. The wedges are treated as massless. Contact type models allow the study of such complicated phenomenon as uneven distribution of contact forces over the wedge surfaces, implementation of resilient pads on wedge surfaces, jamming and wedging <ref type="bibr" target="#b53">[54]</ref>. In paper <ref type="bibr" target="#b55">[56]</ref> the authors included the mass of the wedge into consideration to study its dynamic properties.</p></div>
-<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.1.3.2">Models of the axle to side frame interaction</head><p>In the first approach similar to friction wedges the axle to side frame interaction can be described by nonlinear equivalent characteristics as in <ref type="bibr" target="#b14">[15]</ref>, <ref type="bibr" target="#b16">[17]</ref>. The dry friction interaction between the axle box crown and the side frame pedestal is modelled by two dimensional dry friction element in parallel with another nonlinear element that describes bumpstops in longitudinal and lateral dimension. A typical characteristic of the bumpstop element is presented in <ref type="figure" target="#fig_0">figure 12</ref>. To improve numerical integration the transition from clearance to bumpstop is often smoothed.</p><p>If the interaction between the crown and pedestal is a flat surface, then its width can result in roll stiffness that is produced by gravity. Such stiffness can be introduced into the model depending on the axle load. The second approach is to introduce multiple contact points on the edges of the crown with two-dimensional friction elements in them. The bumpstops are then also the contact elements between the axle box or adapter and the stops in the side frame jaws. Such approach is used in <ref type="bibr" target="#b56">[57]</ref> as well as in Universal Mechanism software <ref type="bibr" target="#b51">[52]</ref>.</p></div>
-<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.1.3.3">Models of the centre bowl and side bearers</head><p>The same approaches can be applied to models of the centre bowl to centre plate interaction and at the side bearers.</p><p>In the first approach, see <ref type="bibr" target="#b14">[15]</ref>, <ref type="bibr" target="#b16">[17]</ref>, centre plate to centre bowl interaction works simultaneously as one dimensional yaw friction and nonlinear roll and pitch torque with soft characteristics as shown in <ref type="figure" target="#fig_0">figure 13</ref>. Knowing the clearance in the side bearers the nonlinear roll characteristic can be linearized. The second approach is to introduce multiple contact points on the edges of the centre plate with two-dimensional friction elements in them. The interaction with the centre bowl rim is then also the contact elements. Such an approach is used in <ref type="bibr" target="#b56">[57]</ref> as well as in Universal Mechanism software <ref type="bibr" target="#b51">[52]</ref>.</p></div>
-<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.2">Stability</head><p>Freight vehicles in most cases operate at much lower speeds than passenger vehicles. Typical running speeds are at around 100 km/h. This suggests that stability investigations are not as important as for faster passenger vehicles. On the other hand freight vehicles often are much less damped than passenger vehicles and stability investigations are therefore necessary. Several of the wagon types introduced above can - in unfavourable running conditions - show significant hunting behaviour at speeds as low as 70 km/h.</p><p>In a bogie vehicle basically three types of hunting motion can arise:</p><p> Wheelset hunting where one wheelset performs the hunting motion.</p><formula xml:id="formula_0"> M 0  M   c Mg  </formula><p> Bogie hunting where a whole bogie is taking over the hunting motion.  Carbody hunting where the carbody performs a yaw motion and the two bogies mainly follow the carbody with lateral motions, i.e. the whole vehicle takes over the hunting motion.</p><p>Carbody hunting is often a type of resonance phenomenon, where the Klingel hunting frequency given mainly by vehicle speed and conicity in the contact coincides with the yaw eigenfrequency of the carbody.</p><p>Hunting motion with a non-zero limit cycle depends on the wheel-rail geometry, the suspension and the masses and inertias of the vehicle. Since the mass and inertia, and in most cases the suspension stiffness and damping of the freight wagon will significantly change with load, the type of hunting motion observed usually differs between an empty and a loaded wagon. Since the stiffness values between axlebox and bogie frame (in a bogie vehicle) are lower in an unloaded vehicle, the risk for wheelset or bogie hunting is higher. In loaded vehicles, vehicle hunting can often be observed. Since the frequency of wheelset hunting is usually low (typically between 1 and 2 Hz) the wheel rail forces induced are relatively low and in most cases below the limit values stipulated in standards. Therefore, the vehicle design in reality allows for the carbody instability to happen in some conditions. Otherwise the suspension needs to be so stiff that the curving performance would suffer, and the amount of wear and RCF would increase significantly. The risk of carbody hunting can vary with the type of load since this can influence the yaw eigenfrequency of the carbody.</p><p>Due to the significant inherent non-linearity and non-smoothness of the suspension elements linearization of the models is usually not realistic. It is therefore necessary to perform time steppig integration with the full non-linear model. The task is in general to find the non-linear critical speed v B of the wagon as can be seen in the generic bifurcation diagram in figure 14.</p></div>
-<div xmlns="http://www.tei-c.org/ns/1.0"><head>Figure 14: Generic bifurcation diagram</head><p>In complex models it is very difficult to find the exact critical speed, for example with a path following method <ref type="bibr" target="#b57">[58]</ref>. Therefore other engineering methods are used. One possibility that has been suggested e.g. by <ref type="bibr">Polach [59]</ref> is to excite the vehicle with an initial disturbance that can either be deterministic or stochastic. After the initial disturbance the vehicle is run on ideal smooth track. If the oscillation vanishes the vehicle is regarded as stable. The simulations have to be repeated with increasing speed until the oscillations do not disappear. In that case the non-linear critical speed v b ( <ref type="figure" target="#fig_0">figure 15</ref>) is reached. A risk with this method is that the initial disturbance is not high enough to initiate a limit cycle oscillation and that the critical speed detected is higher than the real non-linear critical speed.</p><p>Another method to detect the non-linear critical speed is start the simulations at a very high speed to be sure that the vehicle has reached the non-zero attractor (limit cycle). Then the speed is continuously reduced until the limit cycle behaviour disappears. Polach also describes this method. It has been used for example by Boronenko et al <ref type="bibr" target="#b14">[15]</ref> to tune the suspension of three-piece bogies.</p><p>A similar method, shown in <ref type="figure" target="#fig_0">figure 15</ref>, is suggested in <ref type="bibr" target="#b59">[60]</ref> to determine the so-called non-linear critical speed. The difference to the method introduced above is that the speed is not reduced continuously but in discrete steps as suggested by True <ref type="bibr" target="#b98">[98]</ref>. <ref type="figure" target="#fig_0">Figure 16</ref> shows the bifurcation diagram for a loaded two-axle vehicle calculated with this method. It can be observed that only the stable branches of the bifurcation diagram can be determined, not the unstable part. The zero solution is also possible at least up to a speed of 120 km/h (bold solid line). This was simulated using the procedure above, starting from low speed and increasing the speed stepwise. Hoffman also investigated the stability of a two-axle wagon with link suspension <ref type="bibr" target="#b42">[43]</ref>, <ref type="bibr" target="#b60">[61]</ref>. He uses the link model developed by Piotrowski <ref type="bibr" target="#b28">[29]</ref>. The leaf springs model is based on Fancher et al <ref type="bibr" target="#b45">[46]</ref>. Gialleonardo et al <ref type="bibr" target="#b61">[62]</ref> extended this type of stability analysis for a two-axle wagon with link suspension on curved track. As can be seen in <ref type="figure" target="#fig_0">figure 18</ref>. the leading wheelset (y lw )</p><p>shows much smaller oscillation amplitudes than the trailing wheelset (y tw ) and the carbody. This is because the outer wheel of the leading wheelset experiences flange contact. In general the results show the presence of large periodic oscillations in narrow curves at commercial operating speeds. It is also shown in the paper that the coupling forces between wagon assemblies significantly reduce the oscillation amplitudes. Zhai et al <ref type="bibr" target="#b62">[63]</ref> extended the stability analysis for a freight wagon with three-piece bogies to also include a visoelastic track structure. The stability analysis is performed according to the methodology suggested by Polach, which is explained above. The authors found that a lower critical hunting speed is obtained on elastic track compared with the rigid track case. The difference in the critical hunting speeds between the elastic track base and the rigid track base is 4.4% for the loaded freight car.</p></div>
-<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.3">Curving</head><p>As indicated above simulations of the running behaviour of freight wagons in curves are often performed to investigate the risk of wheel wear and Rolling Contact Fatigue (RCF).</p><p>For passenger vehicles curving simulations are often performed on ideal track, i.e. the stochastic track irregularities are neglected. Authors are in this case interested in the quasistatic behaviour of the vehicle, i.e. the mean wheelset attack angles or the mean energy dissipation in the contact points. For freight vehicles with non-linear and non- smooth suspension this can lead to significant mistakes as shown in the example from Jönsson <ref type="bibr" target="#b41">[42]</ref>. On ideal track the friction surfaces might stick together and force the wheelset into a more unfavourable position. Track irregularities help to get relative motion in the friction surfaces, which usually leads to better - and more realistic - steering behaviour of the vehicle. As seen in <ref type="figure" target="#fig_0">figure 19</ref>, the energy dissipation as a measure for the amount of wear or RCF, is much lower when simulating running with track irregularities. In one of their numerous studies on three-piece bogies Boronenko et al <ref type="bibr" target="#b14">[15]</ref> investigate the reason for excessive flange wear in some of the Russian wagons. One conclusion is that the main reason for flange wear is the unstable behaviour of the bogies in curves (rutting mode) <ref type="bibr" target="#b15">[16]</ref>, when the bogie is flanging with a two-point contact situation instead of negotiating the curve using the wheel conicity. The flanging is the result of bogie warping, which increases the angle of attack compared to a radial position. In the article a number of different designs are discussed. Among others it is concluded that a bogie design with radial arms significantly reduces the angle of attack and the wear number in curves, see <ref type="figure" target="#fig_1">figure 20</ref>. Berghuvud [64] investigated the curving behaviour of different types of three-piece bogie with and without braking. He concluded that the influence of braking on the curving behaviour is complex. Braking can have a positive effect on the angle of attack of the wheelsets in a curve since it helps to overcome the static friction in the primary suspension. It can also increase the angle of attack if large longitudinal forces push the wheelset longitudinally towards the limit of the play and thus lock the wheelset in an unfavourable position.</p></div>
-<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.3.1">Vehicle Resistance</head><p>Radially steering bogies do not only reduce flange wear in curves but also reduce the required traction energy. The inner leading wheel is less affected and the trailing wheelset has much smaller values. With radial steering, ( <ref type="figure" target="#fig_1">figure 22</ref>) the leading axle also has very small creepages. This results in lower wear and running resistance. As a result on track with tight curves more than 20% of the overall running resistance can be reduced with similar levels of energy saving <ref type="bibr" target="#b65">[66]</ref>.</p><p>Of course radial steering may affect running stability on straight track. Therefore bogie designs with cross anchors such as the TVP 2007 or the Leila bogie have an advantage over individual radial steering axles as in the swing hanger bogie.</p></div>
-<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.3.2">Influence of curving on wheel and rail damage phenomena</head><p>As mentioned in the introduction to this section the curving performance of a freight wagon is very important for the level of wheel and rail damage. This means in turn that the vehicle track interaction in curves determines to a large extent the maintenance cost for the whole system. In <ref type="bibr" target="#b65">[66]</ref> Fröhling discusses the influence of, among others, bogie design, bogie maintenance and the wheel/rail interface in heavy haul operation on different damage phenomena on wheels and rails. In a later publication Fergusson et al <ref type="bibr" target="#b67">[67]</ref> present an analysis of wheel wear as a function of the relationship between the lateral and longitudinal primary suspension stiffness and the coefficient of friction at the centre plate between the wagon body and the bolster to minimise the wheel wear rate of a self-steering three-piece bogie without compromising vehicle stability. Simulation results indicate that wheel wear is theoretically the lowest for low lateral and longitudinal primary suspension stiffness and no friction at the centre plate. Casanueva et al <ref type="bibr" target="#b68">[68]</ref> extend the wear prediction methodology for freight wagons to also include switches and crossings. It is concluded that wear on some parts of the wheel profile can only be explained with running through switches.</p><p>Tunna and Urban <ref type="bibr" target="#b69">[69]</ref> carried out a parametric study to quantify the effects of various freight vehicle parameters on the generation of RCF. Three different freight suspensions wer considered: an enhanced three-piece bogie, a rigid-frame bogie with primary suspension, and a two-axle vehicle with leaf springs. Simulations were performed for track curvature ranging from 400 to 10 000 m. To judge the generation of RCF the Tgamma model from Burstow <ref type="bibr" target="#b70">[70]</ref> was used. It is stated that parameters that clearly need to be considered when evaluating rail surface damage are curve distribution, track quality, conicity, vehicle type and loading state of the wagon. Since several parameters are line dependent it is concluded that a route based analysis is necessary.</p><p>In <ref type="bibr" target="#b71">[71]</ref> a simulation model of an iron ore wagon with three-piece bogie is developed to investigate the risk of RCF on the Swedish and Norwegian iron ore line. 43 load cases with various conditions were used as inputs. The risk for RCF was estimated with the so-called shakedown map. The wear number, which is the product of creepages and creep forces, was calculated to estimate where initiated cracks develop or are worn away. In <ref type="figure" target="#fig_1">figure 23</ref> areas on the wheel profile with high risk of RCF can be seen. The area on the wheel tread coincides very well with field observations of RCF but the areas in the flange root and on the flange did not show RCF damage. It can be concluded that the energy dissipation is high enough to wear away initiated cracks. It seems that simulation of the curving behaviour of freight wagons can provide valuable information about the risk of wheel damage for specific operating conditions.</p><p>In <ref type="bibr" target="#b71">[71]</ref> a simulation by Dukkipati and Dong examine the effects of a freight wagon running over a dipped joint. In a very recent paper Wang and Gao investigate the wheel wear of a freight vehicle with three-piece bogie in curves <ref type="bibr" target="#b99">[99]</ref>. It is shown that wear is most severe on the outer leading wheel in the bogie. </p></div>
-<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.4">Parameter identification</head><p>The establishment of the correct parameters for use in computer models is clearly of great importance. Some parameters can easily be measured or provided by the manufacturers but others are very difficult to establish. Ren et el <ref type="bibr" target="#b74">[74]</ref> demonstrate the use of a test rig with a sliding plate underneath one wheelset to establish key parameters. The sliding plate is moved with actuators and forces measured to allow the lateral, shear and warp stiffness to be established as well as the friction characteristics of the bogie.</p></div>
-<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4">Modern Developments</head></div>
-<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.1">The British Rail HSF Bogies</head><p>Wickens and colleagues at British Rail Research carried out theoretical and practical work aimed at understanding the dynamic performance of two axle freight vehicles <ref type="bibr" target="#b75">[75]</ref>, <ref type="bibr" target="#b76">[76]</ref>. The aim was to increase the operating speed of freight vehicles and reduce the rate of derailments. A series of experimental two axle vehicles were constructed to confirm the results of the analysis. They included coil springs and viscous dampers and longitudinal rods to control yaw motion and were initially tested on a full size roller rig.</p><p>Computer simulations of curving and stability were carried out with various damper configurations and on-track tests of several prototypes were undertaken</p><p>The result of this work was the prototype 'HSFV.4' high speed freight vehicle with viscous damping ( <ref type="figure" target="#fig_1">figure 24)</ref> which was tested at speeds of up to 120 km/h and proved to run without hunting for a wide range of effective conicity values. </p></div>
-<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.2">The Unitruck running gear</head><p>The Unitruck single-axle running gear with lateral "swing hangers" was first developed for the American market and in the 1990's adjusted to suit European conditions. Vehicles with Unitruck running gear <ref type="bibr" target="#b76">[76]</ref> are today used both in North America and Europe. They have only one stage suspension, which also includes friction damping. As in the Y25 bogie, the vertical force in the primary suspension is used to preload the different friction components via an inclined surface. <ref type="figure" target="#fig_1">Figure 25</ref> left shows the wedge element, which is in series with one of the coil springs and in contact with the carbody via an inclined friction surface; the vertical surface in contact with the saddle is also a friction surface. Newer designs have substituted the inclined friction surface by a roller (figure 25 left) <ref type="bibr" target="#b77">[77]</ref>, thus enabling the displacement in the longitudinal direction, but reducing longitudinal damping. Also, adding a coupling plate in the centre of the coil springs increases longitudinal stiffness <ref type="figure" target="#fig_1">(Figure 25</ref> right), which improves critical speed compared to the running gear with rollers and classic coil springs. The 'Swing Motion' bogie ( <ref type="figure" target="#fig_1">figure 26</ref>) is a variant of the three-piece freight bogie and was originally developed for heavy haul operations in North America. In the Swing Motion design an additional cross member or transom is included which connects the two side frames together via pivots at the base of the secondary spring pack. The bolster still sits on the top of the spring packs and is damped through friction wedges. A pivot between the axle boxes and the side frames is also included so that the side frames can pivot or swing to accommodate lateral motion of the bolster. The swing motion gives increased lateral stability at speeds up to 176 km/h and is claimed to reduce wheel and rail wear, reduce rolling resistance and forces on track and vehicle body compared with standard three-piece bogies.</p></div>
-<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.4">The 'LTF' bogie</head><p>In the 1980s British Rail Research in the UK developed a novel, track friendly bogie using passenger vehicle technology. The LTF25bogie is shown in <ref type="figure" target="#fig_1">figure 27</ref> and is described in <ref type="bibr" target="#b79">[79]</ref>.</p></div>
-<div xmlns="http://www.tei-c.org/ns/1.0"><head>Figure 27: The 'LTF25' bogie</head><p>The LTF25 bogie was specifically designed to reduce dynamic track forces and as part of this effort was made to reduce the unsprung mass. Small wheels (813 mm diameter) were used and inside axle boxes giving a 30% reduction in wheelset mass although this necessitated the use of on-board hotbox detectors.</p><p>Primary suspension is through steel coil springs and secondary suspension is through rubber spring elements and hydraulic dampers.</p><p>The high cost of the LTF25 bogie and concerns about axle fatigue with inboard axle boxes militated against its adoption but Powell Duffryn produced a modified version of the bogies known as the TF25 bogie (shown in <ref type="figure" target="#fig_1">figure 28</ref>) which has achieved considerable production success. </p></div>
-<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.5">The 'Gigabox' bogie</head><p>The 'Gigabox'bogie uses pedestal units containing progressive rubber springs with integral hydraulic damping as shown in figures 29 and 30). The system was developed by ContiTec and SKF and is claimed not to require maintenance for up to 1million km and to provide good noise and vibration isolation. A reduction of up to 20% in lateral forces is claimed as well as a 2 dB reduction in noise. </p></div>
-<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.6">The Double Rubber Ring Spring (DRRS) bogie</head><p>Originally designed by Talbot the DRRS bogie uses double rubber torroidal ring springs with load proportional friction damping as shown in <ref type="figure" target="#fig_0">figure 31</ref>. Container wagons with DRRS bogies entered service with the DB 'Inter Cargo Express- System'. Maximum axle-load ranges from 22.5 t at 100 km/h to 18.375 t at 160 km/h. </p></div>
-<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.7">Advances in three-piece bogies</head><p>The major drivers for advances of AAR three-piece bogies were tightening ride performance and track impact standards, such as M-1001 <ref type="bibr" target="#b79">[79]</ref> and M-976 <ref type="bibr" target="#b80">[80]</ref>, since 2000.</p><p>An overview of improvements in the suspensions is given in <ref type="bibr" target="#b82">[81]</ref>. Suspension springs tend to increase the deflection. Using higher control springs under the wedges increases friction under the empty wagon thus providing its better stability, and makes damping less dependent on the wear of wedges themselves. Different height of the inner and outer springs allows having lower lateral stiffness of the suspension under the empty wagon, thus improving its running performance. Using the set of 9 double springs per each side of the bogie increases warping resistance.</p><p>The innovative designs of the wedges are shown in <ref type="figure" target="#fig_1">figure 32</ref>. Both designs aim to increasing the warping resistance of the bogie. The split wedge consists of two symmetric parts inclined towards each other and interacts with the spatial insert in the bolster pocket. In the spatial wedge the surfaces are inclined in the other direction and they are wider than the vertical surface, which gives the same effect. In the interaction between the side frame and the wheelset axle various elastic components are introduced to reduce unsprung mass as well as to reduce resistance to wheelset displacement in plane, thus reducing the lateral track forces. Some of the designs of elastic shear pads are shown in <ref type="figure">figure 33</ref>. The rigid side bearings with clearances have transformed in modern three-piece bogies into constant contact side bearings, incorporating the elastic element compressed by the weight of the car body, <ref type="bibr" target="#b83">[82]</ref>. Examples of the design are shown in <ref type="figure" target="#fig_3">figure 34</ref>. Constant contact side bearings provide yaw damping for the bogies on straight track, as well as additional car body roll resistance for better curving performance. The rollers positioned with a clearance provide rigid bumpstop that limits the elastic element deflection without increasing the yaw resistance. There are several devices used to increase warping stiffness of three-piece bogies, the most common of which is using cross-braces between the side frames shown in <ref type="figure" target="#fig_4">figure 35</ref>.</p></div>
-<div xmlns="http://www.tei-c.org/ns/1.0"><head>Cap</head></div>
-<div xmlns="http://www.tei-c.org/ns/1.0"><head>Elastic element</head><p>Cage Wear resistant element</p></div>
-<div xmlns="http://www.tei-c.org/ns/1.0"><head>Insert</head></div>
-<div xmlns="http://www.tei-c.org/ns/1.0"><head>Roller</head></div>
-<div xmlns="http://www.tei-c.org/ns/1.0"><head>Cap</head></div>
-<div xmlns="http://www.tei-c.org/ns/1.0"><head>Elastic element</head><p>Cage 1 - top brace; 2 - bottom brace; 3 - bolt; 4 - washer; 5 - nut; 6 - fastening unit; 7 - rings; 8 - locking plate; 9 - washer; 10 - bolt; 11 - elastic pad; 12 - safety wire; 13, 14 - bracket; 15, 16, 17 - plate; 18 - key <ref type="figure" target="#fig_4">Figure 35</ref> Cross-braces between side frames.</p><p>Using the concept of shear and bending stiffness of the bogie Scheffel <ref type="bibr" target="#b84">[83]</ref>, developed several novel designs of three-piece bogies (figure 36). At first the horizontal motion of the frame is decoupled from the wheelsets by horizontally soft primary suspension. Then the axle boxes are interconnected through sub-frames or arms by elastic elements that support their radial position in curves, but resist in-phase yaw <ref type="bibr" target="#b85">[84]</ref>. Scheffel bogies having the axle load of 32 t provide mileage between wheel turning of up to 1.5 million kilometres thus proving the high efficiency of the design to reduce track forces.</p></div>
-<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.8">The Lenoir pusher spring</head><p>Various alternatives to the double Lenoir linkage have been explored with the aim of providing reduced longitudinal stiffness at low cost. One example is the 'Lenoir pusher spring' which consists of a plunger and washer springs mounted opposite the Lenoir pusher ( <ref type="figure" target="#fig_32">figure 37</ref>). This allows more longitudinal motion than the conventional Piotrowski <ref type="bibr" target="#b87">[86]</ref> reports how this arrangement has been shown to give good performance in a prototype vehicle with significant reductions in wheel wear.</p></div>
-<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.9">The RC25NT Bogie</head><p>Eisenbahn Laufwerke Halle (Germany) has developed the RC25NT self-steering three- piece bogie with direct inter-axle linkages which was presented at the Innotrans exhibition in 2010) <ref type="bibr">[87]</ref> ( <ref type="figure" target="#fig_2">figure 38</ref>). The bogie has horizontally soft rubber bushes in the primary suspension and flexicoil dual rate springs with friction damping in the secondary suspension. The bogie is equipped with disk brakes. The aim of the development was to build a bogie capable of stable running up to 120 km/h, keeping low noise criteria and negotiating curves with minimum of wear. The bogie is designed to replace the Y25 type bogie without changes to the wagon body.</p><p>Simulations have shown that the RC25NT provides better stability on straight track than the Y25 (figure 39) and less wheel and rail wear in curves ( <ref type="figure" target="#fig_3">figure 40</ref>). The bogie was tested according to the UIC 518 standard in Sweden in 2010 for speeds up to 160 km/h. The RC25NT demonstrates that direct inter-axle linkages can allow freight car bogies to run at 120 km/h with proper steering and low wear in curves. </p></div>
-<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.10">The 'LEILA' Bogie</head><p>The LEILA bogie ('LEIchtes und LärmArmes GüterwagenDrehGestell' with the meaning of light and low noise freight bogie) is a passive radial steering bogie with a maximum axle load of 22.5 t and was developed between 2000 and 2005 during a German and Swiss research project <ref type="bibr" target="#b88">[88]</ref>. The Institute of Rail Vehicles of the Technische Universität Berlin was one of the involved partner. The aim to develop this bogie was:</p><p> to reduce the noise emissions of freight wagons;  to reduce the mass of a bogie to be under 4 t and  to reduce significantly wear and running resistance.</p><p>In addition:</p><p> the reliability and availability of freight wagons;  transparency in the transport chain;  the active and passive safety of the freight traffic and;  the transport velocity should be similarly increased <ref type="bibr" target="#b89">[89]</ref>. The primary layer consists of rubber springs and the load dependent stiffness characteristics are separated in vertical and horizontal working components. The bogie has passive radial steering technology of the wheelsets. Wheelsets are able to rotate about the vertical axis without any external energy but only by the roll radius difference between the inner and outer wheel. Both wheelsets are connected with cross anchors; mounted on opposite axle boxes. The secondary layer is defined UIC centre of pivot and side bearer (latter guarantees the exchangeability to Y25 bogies). In addition, the centre of pivot has an elastically bearing using a secondary rubber spring. The LEILA bogie prototype was examined during various field tests where it demonstrated its advantages compared to a Y25 bogie. The noise emissions were reduced up to 18 dB(A) compared to a Y25 bogie with cast iron brake blocks and up to 8 dB(A) compared to a Y25 bogie with composite blocks (k- blocks). But the bogie failed at that time to enter the market. During the very good ongoing homologation process the producer of the bogie decided to stop the production of new freight wagons and bogies. Therefore the homologation was stopped and not finished just for commercial reasons. Right now as more and more EMUs are produced with inner bearings it is expected that the acceptability of inner bearing bogies with the advantages less weight and lower forces at the axles in curves will be more acceptable. As with the Leila bogie the cross anchor couples the two axles so that they turn with a phase shift of 180°. This stabilizes the radial steering effect even when the wheel-rail contact is not perfect and the second very important effect is dynamic stabilisation without yaw dampers for high speed straight track running. On curvy track significant flange and running surface wear reduction and also significant reduction of the running resistance occur.</p></div>
-<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.12">The SUSTRAIL Bogie</head><p>The aim of the SUSTRAIL project is to promote modal shift of freight in Europe from road to rail. The SUSTRAIL project intends to provide the approach, structure, and technical content to support this modal shift through improvements in the railway freight system including innovations in rolling stock in track components. The project includes workpackages focused on market research, vehicles, infrastructure and assessment of cost benefits. The work described here is part of workpackage 3: 'The freight vehicle of the future'.</p><p>The main scientific and technological innovations being considered for the SUSTRAIL freight vehicle are:</p><p> The development of advanced vehicle dynamics concepts based on new wheel profiles and improvements in suspension design responding to the needs of a mixed traffic railway;  Developments in the traction and braking systems for high speed low impact freight operation;  Novel designs and materials for lightweight high performance freight wagon body vehicles and bogie structures;  Advanced condition based predictive maintenance tools for critical components of both railway vehicles and the track;  Identification of performance based design principles to move towards the zero maintenance ideal for the vehicle/track system.</p><p>Partners in the project have carried out a technology review to identify the potential innovative technologies to meet the above requirements and the results have been ranked and two concept vehicles are being designed. The 'Conventional' vehicle will use optimised existing technology and a demonstrator for this is being built as part of the project. The 'Futuristic' vehicle will utilise technology which has not yet been proven in the railway field but has potential to make greater improvements.</p><p>Simulations have been carried out of the dynamic behaviour of the concept design vehicles running on typical track in tare, part laden and fully laden cases. In line with the target of a 50% reduction in lateral forces on the track and stable running at 140 km/h a suspension using double Lenoir linkages, longitudinal linkages between axle boxes and centre pivot suspension has been selected. Computer simulation has been used to optimise the suspension and to select suitable parameters for the various components. Assessment of the results is based on:</p><p> Stability: stable running on typical European track at the design speed of 140km/h must be ensured and ride quality (vertical lateral and longitudinal accelerations experienced by the goods transported) will be assessed.  Reduced track forces: track geometrical deterioration (ballast settlement and horizontal level, alignment and buckling), rail surface damage (wear, rolling contact fatigue -RCF) and track components damage (sleeper cracking, rail pad deterioration, rail fatigue, fastening deterioration) will all be assessed.</p><p>A benchmark vehicle has been selected based on a Y25 bogie and flat bed wagon and has been used to allow quantification of the benefits of the new design.</p><p>A number of radical innovations were considered during the technology review stage of the project but it was decided that the use of double Lenoir link primary suspension as in the Y37 series of bogies (figure 44), would be investigated. The double Lenoir link suspension provides much lower longitudinal primary stiffness while still utilising standard components and methods which are well established within the railway industry. this work A model of the SUSTRAIL vehicle was set up with double Lenoir links using the computer simulation tool Gensys and the influence of variations in the suspension parameters on the critical speed of the wagon was simulated. Straight track was used for this simulation and an initial lateral disturbance was introduced followed by ideal track with no irregularities. Axle load is 22.5 t, wheel profile is S1002 and rail profile UIC60 inclined at 1:40. The wheel rail coefficient of friction is set at 0.35. The wagon speed was reduced from an initial 170 km/h and critical speed assumed to have been reached when the track shifting force (∑ ) drops below 2.5 kN. An example is shown in <ref type="figure" target="#fig_3">figure 46</ref>. Further variations were carried out and the effect of the friction coefficient and stiffness within the suspension on the maximum contact force is shown in <ref type="figure" target="#fig_3">figure 49</ref>. <ref type="figure" target="#fig_3">Figure 49</ref>: The effect of friction coefficient and spring stiffness on the contact force It can be seen that the maximum vertical contact forces tends to increase with the damping and with the spring stiffness. In order to improve the running behavior of the SUSTRAIL vehicle it was decided to assess the benefit of linkages provividing longitudinal stiffness between the axleboxes using a radial arm. A radial arm designed by <ref type="bibr">Scheffel [90]</ref> was studied previously in the Infra-Radial project <ref type="bibr" target="#b91">[91]</ref> which aimed to develop a bogie for heavy haul vehicles (axle loads over 25T) with reduced life cycle costs. Tests using the radial arm with four different primary suspension types showed good results with stable running and radially aligned wheelsets in curves. Wear of the wheels was seen to reduce significantly <ref type="bibr" target="#b91">[91]</ref>. In the work reported here simulation was carried out using MEDYNA for the SUSTRAIL vehicle with double Lenoir links and modified radial arms. Simulations have confirmed that the radial arm should provide lateral stiffness between the wheelsets and optimised parameters have been defined. A prototype of the SUSTRAIL freight vehicle is being constructed by REMARUL engineering. In addition to Vertical coils spring stiffness <ref type="bibr">[%]</ref> the innovative suspension described in this paper the SUSTRAIL vehicle will have disk brakes with an electronic control system. The bogie design is shown in <ref type="figure" target="#fig_4">figure 50</ref>. </p></div>
-<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5">Longitudinal dynamics</head><p>The longitudinal dynamic behaviour of railway vehicles is often neglected as the link to the vehicle track interaction is generally not significant and it has been common to assume that all vehicles of the same type in a train will behave identically. In heavy haul freight applications however where long trains are common the effect of longitudinal dynamics can become significant. In <ref type="bibr" target="#b71">[71]</ref> for example Qi et al model the longitudinal behaviour of a long train including traction and braking and the coupling between vehicles. Belforte et al <ref type="bibr" target="#b93">[93]</ref> also analyse the effects of severe traction and braking forces on longitudinal dynamics.</p><p>There are several areas where longitudinal dynamics can interact with the general vehicle dynamics. These include:</p><p> Wheel unloading on curves due to lateral components of coupler forces;  Wagon body pitch due to coupler impact forces and  Bogie pitch due to coupler impact forces Cole <ref type="bibr" target="#b94">[94]</ref> describes how these effects can be assessed in different cases and McClanachan <ref type="bibr" target="#b95">[95]</ref> and El Sibaie <ref type="bibr" target="#b96">[96]</ref> present results of computer simulations including coupler models.</p><p>Freight vehicles have to provide satisfactory performance at low cost in tare and laden condition on varying track quality. This has resulted in several standard designs including the Y25 and the three-piece bogie. These designs use friction damping proportional to the vehicle mass to provide good dynamic performance at all loading conditions. In recent years vehicle designers have tried to improve on the dynamic performance of freight wagons and the use of computer tools have helped to overcome the compromise between good curving performance and stability at higher speeds. This has resulted in a number of innovative designs with demonstrable performance improvements but it is notable that few of these have yet to make significant impact in the worldwide freight train fleets.</p><p>A key reason for this lack of adoption is probably the innately conservative nature of the railway industry. Of course this often has a sound basis in, for example, the benefit of using standard components which allow effective maintenance of widely dispersed fleets of vehicles but in order to allow the benefits of the innovative techniques and designs summarised in this paper it is time to reconsider the design of freight vehicles. This could allow increases in speed with lower impact on track and environment and a resulting step change in performance of the railway system. One encouraging sign is the establishment in some countries of track access charging which benefits the use of vehicles with 'track friendly' suspension. Together with emerging legislation and growing pressures on system capacity it is likely that the demand for freight vehicles with higher dynamic performance will climb rapidly.</p><p>Rail freight only can contribute in mitigating the environmental impacts of transportation if the knowledge and todays experience for innovative products is used. Some basic thoughts can be found here and in <ref type="bibr" target="#b97">[97]</ref>. Optimising performance through the development of innovative products is to be planned and procured carefully. This paper has demonstrated that freight vehicle designers have innovative designs of running gear and computer simulation tools ready for this challenge.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head>Figure 1 :</head><label>1</label><figDesc>Figure 1: Freight wagon from Kockums Sweden, built in 1882 [4].</figDesc></figure>
-<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head>Figure 2 :</head><label>2</label><figDesc>Figure 2: UIC double link suspension.</figDesc></figure>
-<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_2"><head>Figure 3 : Double link suspension [ 8 ]. Parts of double link (a), assembled double link (b) and mounted double link (c).</head><label>38</label><figDesc>Figure 3: Double link suspension [8]. Parts of double link (a), assembled double link (b) and mounted double link (c).</figDesc></figure>
-<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_3"><head>Figure 4 :</head><label>4</label><figDesc>Figure 4:. DB bogie Type 931 [7].</figDesc></figure>
-<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_4"><head>Figure 5 :</head><label>5</label><figDesc>Figure 5: DB bogie Type 665 [7].</figDesc></figure>
-<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_5"><head>Figure 7 : Model 18- 100 bogie: a - general view, b - central suspension scheme, c - primary 'suspension' scheme ( 1 - wheelset; 2 - side frame; 3 - bolster; 4 - braking leverage; 5 - central pivot; 6 - rigid side bearings; 7 - suspension springs; 8 - friction wedge; 9 -</head><label>7100123456789</label><figDesc>Figure 7: Model 18-100 bogie: a-general view, b-central suspension scheme, cprimary 'suspension' scheme (1-wheelset; 2-side frame; 3-bolster; 4-braking leverage; 5-central pivot; 6-rigid side bearings; 7-suspension springs; 8friction wedge; 9-axle-box)</figDesc></figure>
-<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_7"><head>Figure 8 : Force-displacement curve of Coulomb friction model (left) and Coulomb model with spring in series as in [ 29 ]</head><label>829</label><figDesc>Figure 8: Force-displacement curve of Coulomb friction model (left) and Coulomb model with spring in series as in [29] (right).</figDesc></figure>
-<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_8"><head>Figure 9 : Friction element with spring in series.</head><label>9</label><figDesc>Figure 9: Friction element with spring in series.</figDesc></figure>
-<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_10"><head>Figure 10 : Typical force-displacement diagram of leaf spring/link suspension. Example of curve for small displacements around static equilibrium.</head><label>10</label><figDesc>Figure 10: Typical force-displacement diagram of leaf spring/link suspension. Example of curve for small displacements around static equilibrium.</figDesc></figure>
-<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_11"><head>Figure 11 : Model for leaf spring or link suspension as used for example by KTH [ 40 ]. See figure 10 for definition of k1 and k2.</head><label>114010</label><figDesc>Figure 11: Model for leaf spring or link suspension as used for example by KTH [40]. See figure 10 for definition of k1 and k2.</figDesc></figure>
-<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_12"><head>Figure 12 Model for bumpstop element (∆ - clearance, - stiffness of the bumpstop)</head><label>12</label><figDesc>Figure 12 Model for bumpstop element (∆-clearance,-stiffness of the bumpstop)</figDesc></figure>
-<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_13"><head>Figure 13 Model for center plate element (∆ - distance between center plate edge and car body center of gravity, - roll angle, - weight of the car body per one center plate, - roll torque, - equivalent roll stiffness)</head><label>13</label><figDesc>Figure 13 Model for center plate element (∆-distance between center plate edge and car body center of gravity,-roll angle,-weight of the car body per one center plate,-roll torque,-equivalent roll stiffness)</figDesc></figure>
-<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_14"><head>Figure 15 : Procedure to find the non-linear critical speed [ 60 ].</head><label>1560</label><figDesc>Figure 15: Procedure to find the non-linear critical speed [60].</figDesc></figure>
-<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_15"><head>Figure 16 : Bifurcation diagram for a loaded two-axle vehicle with link suspension ( 21 t axle load) Wheel: somewhat worn S1002. Rail: Nominal UIC60 [ 42 ].</head><label>162142</label><figDesc>Figure 16: Bifurcation diagram for a loaded two-axle vehicle with link suspension (21 t axle load) Wheel: somewhat worn S1002. Rail: Nominal UIC60 [42].</figDesc></figure>
-<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_16"><head>Figure 17 .</head><label>17</label><figDesc>shows attractors for two different types of freight wagons. The results are in principle quite similar to those in figure 16.</figDesc></figure>
-<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_17"><head>Figure 17 : Attractors for the Hbbills 311 and the G69 freight wagons. The model with the measured characteristics of the UIC links is damping less than the model with the cylindrical characteristics. The hunting attractor exists even for low speeds [61].</head><label>17</label><figDesc>Figure 17: Attractors for the Hbbills 311 and the G69 freight wagons. The model with the measured characteristics of the UIC links is damping less than the model with the cylindrical characteristics. The hunting attractor exists even for low speeds [61].</figDesc></figure>
-<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_18"><head>Figure 18 Map of lateral oscillation amplitude in single wagon as function of curve radius [62].</head><label>18</label><figDesc>Figure 18 Map of lateral oscillation amplitude in single wagon as function of curve radius [62].</figDesc></figure>
-<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_19"><head>Figure 19 : Energy dissipation. Comparative simulation with and without track irregularities. Two-axle vehicle with link suspension. 22 . 5 t axle load [ 42 ].</head><label>1922542</label><figDesc>Figure 19: Energy dissipation. Comparative simulation with and without track irregularities. Two-axle vehicle with link suspension. 22.5 t axle load [42].</figDesc></figure>
-<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_20"><head>Figure 20 : Angle of attack (a) and wear number (b) for wagons in a curve of 200 m radius at 60 km/h with 18- 100 bogies respectively bogies with radial arm upgrade [ 15 ].</head><label>2010015</label><figDesc>Figure 20: Angle of attack (a) and wear number (b) for wagons in a curve of 200 m radius at 60 km/h with 18-100 bogies respectively bogies with radial arm upgrade [15].</figDesc></figure>
-<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_21"><head>Figure 21 : Y25 bogie running in a 300m curve Wheel slip lateral and longitudinal at all wheel rail contact points, 90 t tank car with a Y25-Bogie in a 300 m curve, speed 80 km/h, lateral acceleration aq= 0, 67 m/s², s1002 Wheel profile, UIC 60E1, 1 Figure 22 : Radially steered bogie running in a 300 m curve Wheel slip lateral and longitudinal at all wheel- rail contact points, 90 t tank car with a Leila-Bogie in a 300 m curve, speed 80 km/h, lateral acceleration aq= 0, 67 m/s², s1002 Wheel profile, UIC 60E1, 1</head><label>21903006712230090300671</label><figDesc>Figure 21: Y25 bogie running in a 300m curve Wheel slip lateral and longitudinal at all wheel rail contact points, 90 t tank car with a Y25-Bogie in a 300 m curve, speed 80 km/h, lateral acceleration aq= 0,67 m/s², s1002 Wheel profile, UIC 60E1, 1:40 rail inclination</figDesc></figure>
-<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_22"><head>Figure 23 : Calculated RCF positions of the wheel with corresponding average wear number. The far-left line is also reported as the observed approximate location for RCF initiation.</head><label>23</label><figDesc>Figure 23: Calculated RCF positions of the wheel with corresponding average wear number. The far-left line is also reported as the observed approximate location for RCF initiation.</figDesc></figure>
-<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_23"><head>Figure 24 :</head><label>24</label><figDesc>Figure 24: The HSFV.1 experimental freight wagon</figDesc></figure>
-<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_24"><head>Figure 25 :</head><label>25</label><figDesc>Figure 25: Unitruck running gear (left) and modifications for improving curving behaviour (right).</figDesc></figure>
-<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_25"><head>Figure 28 :</head><label>28</label><figDesc>Figure 28: The TF25 bogie</figDesc></figure>
-<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_26"><head>Figure 29 : The Gigabox bogie Figure 30 :</head><label>2930</label><figDesc>Figure 29: The Gigabox bogie</figDesc></figure>
-<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_27"><head>Figure 31 : The DRRS bogie and cross section</head><label>31</label><figDesc>Figure 31: The DRRS bogie and cross section</figDesc></figure>
-<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_28"><head>Figure 32 :</head><label>32</label><figDesc>Figure 32: Split wedge (left) and spatial wedge (right).</figDesc></figure>
-<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_30"><head>Figure 33 : Adapter Plus ® by Amsted (left) and layered shear pad in Russian 18- 9800 bogie (right).</head><label>339800</label><figDesc>Figure 33: Adapter Plus ® by Amsted (left) and layered shear pad in Russian 189800 bogie (right).</figDesc></figure>
-<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_31"><head>Figure 34 : Constant contact side bearing with springs (left) and with non-metal element and roller (right).</head><label>34</label><figDesc>Figure 34: Constant contact side bearing with springs (left) and with non-metal element and roller (right).</figDesc></figure>
-<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_32"><head>Figure 37 :</head><label>37</label><figDesc>Figure 37: The Lenoir pusher spring</figDesc></figure>
-<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_33"><head>Figure 38 : RC25NT bogie with direct inter-axle linkages Figure 39 : Simulation stability results for RC25NT bogie vs. Y25 bogie (upper figure = high conicity, lower figure = low conicity)Figure 40 : Simulated wear number for RC25NT bogie vs. Y25 bogie</head><label>383940</label><figDesc>Figure 38: RC25NT bogie with direct inter-axle linkages</figDesc></figure>
-<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_34"><head>Figure 41</head><label>41</label><figDesc>Figure 41 and 42 show the main components of this bogie. Compared to the standard bogies such as Y25, the LEILA bogie has inner bearings. The resulting better force flow lead to a weight reduction of the bogie frame and wheelset resulting in an overall weight reduction of 750 kg per bogie compared to Y25 bogie. At the web of the wheels (diameter: 920 mm), disc brakes are mounted. The primary layer consists of rubber springs and the load dependent stiffness characteristics are separated in vertical and horizontal working components. The bogie has passive radial steering technology of the wheelsets. Wheelsets are able to rotate about the vertical axis without any external energy but only by the roll radius difference between the inner and outer wheel. Both wheelsets are connected with cross anchors; mounted on opposite axle boxes. The secondary layer is defined UIC centre of pivot and side bearer (latter guarantees the exchangeability to Y25 bogies). In addition, the centre of pivot has an elastically bearing using a secondary rubber spring. The LEILA bogie prototype was examined during various field tests where it demonstrated its advantages compared to a Y25 bogie. The noise emissions were reduced up to 18 dB(A) compared to a Y25 bogie with cast iron brake blocks and up to 8 dB(A) compared to a Y25 bogie with composite blocks (kblocks). But the bogie failed at that time to enter the market. During the very good ongoing homologation process the producer of the bogie decided to stop the production of new freight wagons and bogies. Therefore the homologation was stopped and not finished just for commercial reasons. Right now as more and more EMUs are produced with inner bearings it is expected that the acceptability of inner bearing bogies with the advantages less weight and lower forces at the axles in curves will be more acceptable.</figDesc></figure>
-<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_35"><head>Figure 41 : Main components of LEILA bogie [ 88 ] Figure 42 : Leila Bogie from beneath with the inner bearings, cross anchor and wheel disc brakes clearly visible 4 .</head><label>4188424</label><figDesc>Figure 41: Main components of LEILA bogie [88]</figDesc></figure>
-<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_36"><head>Figure 43 : TVP2007 bogie by Tatravagónka a.s.</head><label>43</label><figDesc>Figure 43: TVP2007 bogie by Tatravagónka a.s.</figDesc></figure>
-<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_37"><head>Figure 44 :</head><label>44</label><figDesc>Figure 44: A suspension with double Lenoir links</figDesc></figure>
-<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_38"><head>Figure 46 : A sample simulation results showing the establishment of the critical speed for the SUSTRAIL vehicle with double Lenoir links</head><label>46</label><figDesc>Figure 46: A sample simulation results showing the establishment of the critical speed for the SUSTRAIL vehicle with double Lenoir links</figDesc></figure>
-<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_39"><head>Figure 47 :</head><label>47</label><figDesc>Figure 47: The effect of Lenoir link angle, length and friction coefficient on the critical speed of the SUSTRAIL vehicle</figDesc></figure>
-<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_40"><head>Figure 48 : Maximum vertical force on the rail for the SUSTRAIL vehicle running at 120 km/h</head><label>48</label><figDesc>Figure 48: Maximum vertical force on the rail for the SUSTRAIL vehicle running at 120 km/h</figDesc></figure>
-<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_41"><head>Figure 50 :</head><label>50</label><figDesc>Figure 50: The prototype SUSTRAIL freight bogie</figDesc></figure>
-
- <note place="foot" n="1">-side frame; 2-bolster; 3-wheelset; 4-primary suspension; 5-elastic connection between sub-frames Figure 36: Scheffel HS bogie (left) and bogie retrofitted with Radial Arm design (right).</note>
- </body>
- <back>
- <div type="references">
-
- <listBibl>
-
-<biblStruct xml:id="b0">
- <analytic>
- <title level="a" type="main">European freight vehicle running gear: today&apos;s position and future demands</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="middle">M</forename><surname>Hecht</surname></persName>
- </author>
- </analytic>
- <monogr>
- <title level="j">PartF, Journal of Rail and Rapid Transit</title>
- <imprint>
- <biblScope unit="volume">215</biblScope>
- <biblScope unit="page" from="1" to="11" />
- <date type="published" when="2001" />
- </imprint>
- </monogr>
- <note>Proc. Of the Inst. Of Mech. Engrs.</note>
-</biblStruct>
-
-<biblStruct xml:id="b1">
- <analytic>
- <title level="a" type="main">White Paper-Roadmap to a Single European Transport Area-Towards a competitive and resource efficient transport system</title>
- </analytic>
- <monogr>
- <title level="j">European Commission</title>
- <imprint>
- <biblScope unit="volume">144</biblScope>
- <date type="published" when="2011-03-28" />
- </imprint>
- </monogr>
- <note>COM</note>
-</biblStruct>
-
-<biblStruct xml:id="b2">
- <monogr>
- <title level="m" type="main">Freight Wagon Running Gear-a review, KTH Railway Division</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">P.-A</forename><surname>Jönsson</surname></persName>
- </author>
- <imprint>
- <date type="published" when="2002" />
- <pubPlace>Stockholm</pubPlace>
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b3">
- <monogr>
- <title level="m">Swedish: Järnvägsfordon från Kockums), Kockums industrier</title>
- <meeting><address><addrLine>Malmö, Sweden, Pamphlet</addrLine></address></meeting>
- <imprint>
- <date type="published" when="1995" />
- </imprint>
- </monogr>
- <note>Railway vehicles from Kockums</note>
-</biblStruct>
-
-<biblStruct xml:id="b4">
- <monogr>
- <title level="m">UIC Code 517. Wagons-Suspension gear (Standardisation)</title>
- <imprint/>
- </monogr>
- <note>6th edition 1-7-79. Reprint 1-1-89. incorporating 8 amendments</note>
-</biblStruct>
-
-<biblStruct xml:id="b5">
- <monogr>
- <title level="m" type="main">Laufwerkskonstruktion und Erhöhung der Radsatzlasten im Güterverkehr. ZEV-Glasers Annalen 107</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">T</forename><surname>Madeyski</surname></persName>
- </author>
- <imprint>
- <date type="published" when="1983" />
- <biblScope unit="page" from="139" to="147" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b6">
- <monogr>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">L</forename><surname>Müller</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">W</forename><surname>Niedermeyer</surname></persName>
- </author>
- <title level="m">Weiterentwickelte Güterwagendrehgestelle der Deutschen Bundesbahn für 22.5 t Radsatzlast-wieder nach dem Lenkachsenprinzip. ZEV-Glasers Annalen</title>
- <imprint>
- <date type="published" when="1987" />
- <biblScope unit="volume">111</biblScope>
- <biblScope unit="page" from="188" to="196" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b7">
- <analytic>
- <title level="a" type="main">Dynamic analysis of a freight car with standard UIC single-axle running gear</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">H</forename><surname>Lange</surname></persName>
- </author>
- </analytic>
- <monogr>
- <title level="j">KTH Railway Technology</title>
- <imprint>
- <biblScope unit="page">34</biblScope>
- <date type="published" when="1996" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b8">
- <monogr>
- <title level="m" type="main">Running behavior of railway freight wagon with single axle running gear</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">S</forename><surname>Stichel</surname></persName>
- </author>
- <idno>1998:40</idno>
- <imprint>
- <date type="published" when="1998" />
- <publisher>KTH</publisher>
- </imprint>
- <respStmt>
- <orgName>Division of Railway Technology</orgName>
- </respStmt>
- </monogr>
-<note type="report_type">TRITA-FKT Report</note>
-</biblStruct>
-
-<biblStruct xml:id="b9">
- <monogr>
- <title level="m" type="main">How to improve the running behavior of freight wagons with UIC-link suspension. Vehicle System Dynamics Supplement 33</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">S</forename><surname>Stichel</surname></persName>
- </author>
- <imprint>
- <date type="published" when="1999" />
- <biblScope unit="page" from="394" to="405" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b10">
- <monogr>
- <title level="m" type="main">Running behavior of freight wagons with link bogies. TRITA-FKT Report 1999:12, Division of Railway Technology</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">S</forename><surname>Stichel</surname></persName>
- </author>
- <imprint>
- <date type="published" when="1999" />
- <publisher>KTH</publisher>
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b11">
- <monogr>
- <title level="m" type="main">Neue Erkenntnisse über das Verschleissverhalten von Güterwagendrehgestellen, ZEV Glasers Annalen 111</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">W</forename><surname>Specht</surname></persName>
- </author>
- <imprint>
- <date type="published" when="1987" />
- <biblScope unit="page" from="271" to="280" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b12">
- <monogr>
- <title level="m" type="main">Association of American Railroads. Manual of standards and recommended practices. Section D. Trucks and truck details</title>
- <imprint>
- <date type="published" when="2010" />
- <biblScope unit="volume">130</biblScope>
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b13">
- <analytic>
- <title level="a" type="main">Bogies two-axle three-piece for freight wagons of 1520 mm gauge railways. General technical specifications</title>
- </analytic>
- <monogr>
- <title level="m">GOST 9246-2013</title>
- <imprint>
- <biblScope unit="volume">38</biblScope>
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b14">
- <analytic>
- <title level="a" type="main">Refining the wedge friction damper of three-piece freight bogies</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">A</forename><surname>Orlova</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">Romen</forename><surname>Yu</surname></persName>
- </author>
- </analytic>
- <monogr>
- <title level="j">Vehicle System Dynamics</title>
- <imprint>
- <biblScope unit="volume">46</biblScope>
- <biblScope unit="page" from="445" to="455" />
- <date type="published" when="2008" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b15">
- <analytic>
- <title level="a" type="main">Influence of construction schemes and parameters of three-piece freight bogies on wagon stability, ride and curving qualities</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">Y</forename><surname>Boronenko</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">A</forename><surname>Orlova</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">E</forename><surname>Rudakova</surname></persName>
- </author>
- </analytic>
- <monogr>
- <title level="j">Vehicle System Dynamics</title>
- <imprint>
- <biblScope unit="volume">44</biblScope>
- <biblScope unit="page" from="402" to="414" />
- <date type="published" when="2006" />
- </imprint>
- </monogr>
- <note>Supplement</note>
-</biblStruct>
-
-<biblStruct xml:id="b16">
- <analytic>
- <title level="a" type="main">Identification of parameters for spatial wedge system implemented in freight bogie design</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">A</forename><surname>Orlova</surname></persName>
- </author>
- </analytic>
- <monogr>
- <title level="m">Proceedings of the 10th mini-conference on Vehicle System Dynamics, Identification and Anomalies. Ed. I. Zobory. ISBN 978 963 420 968</title>
- <meeting>the 10th mini-conference on Vehicle System Dynamics, Identification and Anomalies. Ed. I. Zobory. ISBN 978 963 420 968<address><addrLine>Budapest</addrLine></address></meeting>
- <imprint>
- <publisher>Komaromi Nyomda es Kiado Kft</publisher>
- <date type="published" when="2008" />
- <biblScope unit="volume">3</biblScope>
- <biblScope unit="page" from="245" to="252" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b17">
- <analytic>
- <title level="a" type="main">A review of modeling methods for railway vehicle suspension components. Vehicle System Dynamics</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">B</forename><forename type="middle">M</forename><surname>Eickhoff</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">J</forename><forename type="middle">R</forename><surname>Evans</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">A</forename><forename type="middle">J</forename><surname>Minnis</surname></persName>
- </author>
- </analytic>
- <monogr>
- <title level="j">International Journal of Vehicle Mechanics and Mobility</title>
- <imprint>
- <biblScope unit="volume">24</biblScope>
- <biblScope unit="page" from="469" to="496" />
- <date type="published" when="1995" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b18">
- <analytic>
- <title level="a" type="main">Modelling of suspension components in a rail vehicle dynamics context</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><surname>Bruni S</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">J</forename><surname>Vinolas</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">M</forename><surname>Berg</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">O</forename><surname>Polach</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">Stichel</forename><forename type="middle">S</forename></persName>
- </author>
- </analytic>
- <monogr>
- <title level="j">Vehicle System Dynamics</title>
- <imprint>
- <biblScope unit="volume">49</biblScope>
- <biblScope unit="issue">7</biblScope>
- <biblScope unit="page" from="1021" to="1072" />
- <date type="published" when="2011" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b19">
- <analytic>
- <title level="a" type="main">Modeling and Simulation of Freight Wagon with Special attention to the Prediction of Track Damage</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">S</forename><surname>Stichel</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">P-A</forename><surname>Jönsson</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">C</forename><surname>Casanueva</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">Hossein</forename><surname>Nia</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">S</forename></persName>
- </author>
- </analytic>
- <monogr>
- <title level="j">International Journal of Railway Technology</title>
- <imprint>
- <biblScope unit="volume">3</biblScope>
- <date type="published" when="2014" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b20">
- <analytic>
- <title level="a" type="main">Modelling friction wedges, Part I: The state-of-the-art</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">P</forename><forename type="middle">E</forename><surname>Klauser</surname></persName>
- </author>
- </analytic>
- <monogr>
- <title level="m">Proceedings of IMECE04 2004 ASME International Mechanical Engineering Congress &amp; Exposition</title>
- <meeting>IMECE04 2004 ASME International Mechanical Engineering Congress &amp; Exposition<address><addrLine>Anaheim (CA</addrLine></address></meeting>
- <imprint>
- <publisher>American Society of Mechanical Engineering</publisher>
- <date type="published" when="2004" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b21">
- <analytic>
- <title level="a" type="main">A review of dynamics modelling of friction wedge suspensions. Vehicle System Dynamics</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">Q</forename><surname>Wu</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">C</forename><surname>Cole</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">M</forename><surname>Spiryagin</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">Q</forename><surname>Sun</surname></persName>
- </author>
- </analytic>
- <monogr>
- <title level="j">International Journal of Vehicle Mechanics and Mobility</title>
- <imprint>
- <biblScope unit="volume">52</biblScope>
- <biblScope unit="issue">11</biblScope>
- <biblScope unit="page" from="1389" to="1415" />
- <date type="published" when="2014" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b22">
- <monogr>
- <title level="m" type="main">Non-smooth Problems in Vehicle Systems Dynamics</title>
- <imprint>
- <date type="published" when="2010" />
- <publisher>Springer</publisher>
- <pubPlace>Berlin Heidelberg</pubPlace>
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b23">
- <analytic>
- <title level="a" type="main">Rail Vehicle Dynamics</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">E</forename><surname>Anderson</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">M</forename><surname>Berg</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">S</forename><surname>Stichel</surname></persName>
- </author>
- </analytic>
- <monogr>
- <title level="j">KTH Royal Institute of Technology</title>
- <imprint>
- <date type="published" when="2013" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b24">
- <monogr>
- <title level="m" type="main">Simulation. In: Iwnicki, editor, Handbook of Railway Vehicle Dynamics</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">O</forename><surname>Polach</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">M</forename><surname>Berg</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">S</forename><surname>Iwnicki</surname></persName>
- </author>
- <imprint>
- <date type="published" when="2006" />
- <publisher>Taylor &amp; Francis</publisher>
- <biblScope unit="page" from="359" to="421" />
- <pubPlace>London</pubPlace>
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b25">
- <analytic>
- <title level="a" type="main">Modelling of wedge dampers in the presence of two-dimensional dry friction</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">F</forename><surname>Xia</surname></persName>
- </author>
- </analytic>
- <monogr>
- <title level="m">Vehicle system dynamics</title>
- <meeting><address><addrLine>Lingby, Denmark</addrLine></address></meeting>
- <imprint>
- <date type="published" when="2003" />
- <biblScope unit="volume">37</biblScope>
- <biblScope unit="page" from="565" to="578" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b26">
- <analytic>
- <title level="a" type="main">Modeling and Dynamics of Friction Wedge Dampers in Railroad Freight Trucks</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">A</forename><forename type="middle">B</forename><surname>Kaiser</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">J</forename><forename type="middle">P</forename><surname>Cusumano</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">J</forename><forename type="middle">F</forename><surname>Gardner</surname></persName>
- </author>
- </analytic>
- <monogr>
- <title level="j">Vehicle System Dynamics</title>
- <imprint>
- <biblScope unit="volume">38</biblScope>
- <biblScope unit="issue">1</biblScope>
- <biblScope unit="page" from="55" to="82" />
- <date type="published" when="2002" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b27">
- <analytic>
- <title level="a" type="main">Multibody simulation of a freight bogie with friction dampers</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">N</forename><surname>Bosso</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">A</forename><surname>Gugliotta</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">A</forename><surname>Soma</surname></persName>
- </author>
- </analytic>
- <monogr>
- <title level="m">Railroad Conference</title>
- <imprint>
- <publisher>ASME/IEEE Joint</publisher>
- <date type="published" when="2002" />
- <biblScope unit="page" from="47" to="56" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b28">
- <analytic>
- <title level="a" type="main">Model of the UIC link suspension for freight wagons</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">J</forename><surname>Piotrowski</surname></persName>
- </author>
- </analytic>
- <monogr>
- <title level="j">Archive of Applied Mechanics</title>
- <imprint>
- <biblScope unit="volume">73</biblScope>
- <biblScope unit="issue">7</biblScope>
- <biblScope unit="page" from="517" to="532" />
- <date type="published" when="2003-12" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b29">
- <monogr>
- <title level="m" type="main">Smoothing dry friction damping by dither generated in rolling contact of wheel and rail and its influence on ride dynamics of freight wagons, NVSD</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">J</forename><surname>Piotrowski</surname></persName>
- </author>
- <imprint>
- <date type="published" when="2010-06" />
- <biblScope unit="volume">48</biblScope>
- <biblScope unit="page" from="675" to="703" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b30">
- <analytic>
- <title level="a" type="main">Equivalent viscous damping models of coulomb friction in multi-degree-of-freedom vibration systems</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">X</forename><surname>Tan</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">R</forename><forename type="middle">J</forename><surname>Rogers</surname></persName>
- </author>
- </analytic>
- <monogr>
- <title level="j">Journal of Sound and Vibration</title>
- <imprint>
- <biblScope unit="volume">185</biblScope>
- <biblScope unit="issue">1</biblScope>
- <biblScope unit="page" from="33" to="50" />
- <date type="published" when="1995-08" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b31">
- <analytic>
- <title level="a" type="main">Modelling of a two-dimensional Coulomb friction oscillator</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">F</forename><surname>Xia</surname></persName>
- </author>
- </analytic>
- <monogr>
- <title level="j">Journal of Sound and Vibration</title>
- <imprint>
- <biblScope unit="volume">265</biblScope>
- <biblScope unit="issue">5</biblScope>
- <biblScope unit="page" from="1063" to="1074" />
- <date type="published" when="2003-08" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b32">
- <analytic>
- <title level="a" type="main">A substitute model of two-dimensional dry friction exposed to dither generated by rolling contact of wheel and rail</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">J</forename><surname>Piotrowski</surname></persName>
- </author>
- </analytic>
- <monogr>
- <title level="j">Vehicle System Dynamics</title>
- <imprint>
- <biblScope unit="volume">50</biblScope>
- <biblScope unit="issue">10</biblScope>
- <biblScope unit="page" from="1495" to="1514" />
- <date type="published" when="2012" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b33">
- <monogr>
- <title level="m" type="main">The dynamics of a railway freight wagon wheelset with dry friction damping Vehicle System Dynamics 44 supplement</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">H</forename><surname>True</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">R</forename><surname>Asmund</surname></persName>
- </author>
- <imprint>
- <date type="published" when="2006" />
- <biblScope unit="page" from="853" to="861" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b34">
- <analytic>
- <title level="a" type="main">Flexibility of trapezoidal springs</title>
- </analytic>
- <monogr>
- <title level="j">ORE</title>
- <imprint>
- <date type="published" when="1986" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b35">
- <monogr>
- <title level="m" type="main">ORE, Parabolic springs for wagons (design, calculation, treatment)</title>
- <imprint>
- <date type="published" when="1988" />
- <pubPlace>Utrecht, 43</pubPlace>
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b36">
- <analytic>
- <title level="a" type="main">Improvement of the running stability of existing RIV wagons required to run under any loading conditions at speeds of 80 km/h</title>
- </analytic>
- <monogr>
- <title level="j">ORE</title>
- <imprint>
- <date type="published" when="1967" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b37">
- <monogr>
- <title level="m" type="main">ORE: Etude de la stabilité transversale d&apos;un véhicule ferroviaire à deux essieux</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">M</forename><forename type="middle">R</forename><surname>Joly</surname></persName>
- </author>
- <imprint>
- <date type="published" when="1974" />
- <pubPlace>Utrecht</pubPlace>
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b38">
- <monogr>
- <title level="m" type="main">Computer simulation of freight vehicles with leaf springs</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">J</forename><forename type="middle">B</forename><surname>Ayasse</surname></persName>
- </author>
- <idno>INRETS/RE- 01-046-FR</idno>
- <imprint>
- <date type="published" when="2001" />
- </imprint>
- </monogr>
-<note type="report_type">Technical report</note>
- <note>a comparison between different packages, INRETS</note>
-</biblStruct>
-
-<biblStruct xml:id="b39">
- <analytic>
- <title level="a" type="main">Modelling and laboratory investigations on freight wagon link suspensions with respect to vehicle-track dynamic interaction</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">P.-A</forename><surname>Jönsson</surname></persName>
- </author>
- </analytic>
- <monogr>
- <title level="j">KTH</title>
- <imprint>
- <date type="published" when="2004" />
- </imprint>
- </monogr>
-<note type="report_type">Licenciate Thesis</note>
-</biblStruct>
-
-<biblStruct xml:id="b40">
- <analytic>
- <title level="a" type="main">Experimental and theoretical analysis of freight wagon link suspension</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">P.-A</forename><surname>Jönsson</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">E</forename><surname>Andersson</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">S</forename><surname>Stichel</surname></persName>
- </author>
- </analytic>
- <monogr>
- <title level="j">Proceedings of the Institution of Mechanical Engineers</title>
- <imprint>
- <biblScope unit="volume">220</biblScope>
- <biblScope unit="issue">4</biblScope>
- <biblScope unit="page" from="361" to="372" />
- <date type="published" when="2006-01" />
- </imprint>
- </monogr>
- <note>Part F: Journal of Rail and Rapid Transit</note>
-</biblStruct>
-
-<biblStruct xml:id="b41">
- <analytic>
- <title level="a" type="main">Influence of link suspension characteristics variation on two-axle freight wagon dynamics</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">P.-A</forename><surname>Jönsson</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">E</forename><surname>Andersson</surname></persName>
- </author>
- </analytic>
- <monogr>
- <title level="j">NVSD</title>
- <imprint>
- <biblScope unit="volume">44</biblScope>
- <biblScope unit="issue">1</biblScope>
- <biblScope unit="page" from="415" to="423" />
- <date type="published" when="2006" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b42">
- <monogr>
- <title level="m" type="main">New simulation model for freight wagons with UIC link suspension, VSD</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">P.-A</forename><surname>Jönsson</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">S</forename><surname>Stichel</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">Persson</forename><forename type="middle">I</forename></persName>
- </author>
- <imprint>
- <date type="published" when="2008" />
- <biblScope unit="volume">46</biblScope>
- <biblScope unit="page" from="695" to="704" />
- </imprint>
- </monogr>
- <note>Suppl. 1</note>
-</biblStruct>
-
-<biblStruct xml:id="b43">
- <monogr>
- <title level="m" type="main">Dynamics of European two-axle freight wagons</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">M</forename><surname>Hoffmann</surname></persName>
- </author>
- <imprint>
- <date type="published" when="2006" />
- <pubPlace>Kongens Lyngby, Denmark</pubPlace>
- </imprint>
- <respStmt>
- <orgName>Technical University of Denmark</orgName>
- </respStmt>
- </monogr>
-<note type="report_type">Ph.D. Thesis</note>
-</biblStruct>
-
-<biblStruct xml:id="b44">
- <monogr>
- <title level="m" type="main">Freight wagon running gears with leaf spring and ring suspension, presented at the SIMPACK user group meeting</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">M</forename><surname>Stiepel</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">S</forename><surname>Zeipel</surname></persName>
- </author>
- <imprint>
- <date type="published" when="2004" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b45">
- <analytic>
- <title level="a" type="main">Simulation of the Response of Leaf Springs to Broad Band Random Excitation</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">D</forename><surname>Cebon</surname></persName>
- </author>
- </analytic>
- <monogr>
- <title level="j">Vehicle System Dynamics</title>
- <imprint>
- <biblScope unit="volume">15</biblScope>
- <biblScope unit="issue">6</biblScope>
- <biblScope unit="page" from="375" to="390" />
- <date type="published" when="1986" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b46">
- <monogr>
- <title level="m" type="main">Measurement and Representation of the Mechanical Properties of Truck Leaf Springs</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">P</forename><forename type="middle">S</forename><surname>Fancher</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">R</forename><forename type="middle">D</forename><surname>Ervin</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">C</forename><forename type="middle">C</forename><surname>Macadam</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">C</forename><surname>Winkler</surname></persName>
- </author>
- <imprint>
- <date type="published" when="1980-08" />
- <publisher>SAE International</publisher>
- <pubPlace>Warrendale, PA</pubPlace>
- </imprint>
- </monogr>
- <note>SAE Technical Paper 800905</note>
-</biblStruct>
-
-<biblStruct xml:id="b47">
- <analytic>
- <title level="a" type="main">On Application of the Rolling Contact Theory for Modelling of the UIC Link Suspension for Freight Wagons</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">J</forename><surname>Piotrowski</surname></persName>
- </author>
- </analytic>
- <monogr>
- <title level="j">Zeszyty Naukowe Instytutu Pojazdów</title>
- <imprint>
- <biblScope unit="volume">3</biblScope>
- <biblScope unit="issue">50</biblScope>
- <biblScope unit="page" from="5" to="14" />
- <date type="published" when="2003" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b48">
- <analytic>
- <title level="a" type="main">A new mathematical model of the behaviour of a four-axle freight wagon with UIC single-link suspension</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">J</forename><surname>Matei</surname></persName>
- </author>
- <idno type="doi">DOI:10.1177/0954409711398173</idno>
- </analytic>
- <monogr>
- <title level="j">Proceedings of the Institution of Mechanical Engineers</title>
- <imprint>
- <biblScope unit="volume">225</biblScope>
- <biblScope unit="page">637</biblScope>
- <date type="published" when="2011" />
- </imprint>
- </monogr>
- <note>Part F: Journal of Rail and Rapid Transit</note>
-</biblStruct>
-
-<biblStruct xml:id="b49">
- <monogr>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">S</forename><forename type="middle">V</forename><surname>Vershinsky</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">V</forename><forename type="middle">N</forename><surname>Danilov</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">V</forename><forename type="middle">N</forename><surname>Chelnokov</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">I</forename><forename type="middle">I</forename></persName>
- </author>
- <title level="m">Wagon dynamics. Мoscow, Transport</title>
- <imprint>
- <date type="published" when="1972" />
- <biblScope unit="volume">304</biblScope>
- </imprint>
- </monogr>
- <note>in Russian</note>
-</biblStruct>
-
-<biblStruct xml:id="b50">
- <monogr>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">B</forename><surname>Ballew</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">B</forename><forename type="middle">J</forename><surname>Chan</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">C</forename><surname>Sandu</surname></persName>
- </author>
- <title level="m">Multibody dynamics modelling of the freight train bogie system Vehicle System Dynamics</title>
- <imprint>
- <biblScope unit="volume">49</biblScope>
- <biblScope unit="page" from="2011" to="501" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b51">
- <analytic>
- <title level="a" type="main">Modelling friction wedges, Part II: An improved model. Proceedings of IMECE04</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">P</forename><forename type="middle">E</forename><surname>Klauser</surname></persName>
- </author>
- </analytic>
- <monogr>
- <title level="j">ASME International Mechanical Engineering Congress &amp; Exposition</title>
- <imprint>
- <date type="published" when="2004-11-13" />
- <publisher>American Society of Mechanical Engineering</publisher>
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b52">
- <analytic>
- <title level="a" type="main">Freight car models and their computer-aided dynamic analysis</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">R</forename><surname>Kovalev</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">N</forename><surname>Lysikov</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">G</forename><surname>Mikheev</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">D</forename><surname>Pogorelov</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">V</forename><surname>Simonov</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">V</forename><surname>Yazykov</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">S</forename><surname>Zakharov</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">I</forename><surname>Zharov</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">I</forename><surname>Goryacheva</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">S</forename><surname>Soshenkov</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">E</forename><surname>Torskaya</surname></persName>
- </author>
- </analytic>
- <monogr>
- <title level="j">Multibody System Dynamics</title>
- <imprint>
- <biblScope unit="volume">22</biblScope>
- <biblScope unit="issue">4</biblScope>
- <biblScope unit="page" from="399" to="423" />
- <date type="published" when="2009" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b53">
- <analytic>
- <title level="a" type="main">On Calculation of Jacobian Matrices in Simulation of Multibody Systems</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">D</forename><surname>Pogorelov</surname></persName>
- </author>
- </analytic>
- <monogr>
- <title level="m">Preprints of the NATO Advanced Study Institute on Virtual Nonlinear Multibody Systems</title>
- <editor>Schiehlen and Valasek</editor>
- <meeting><address><addrLine>Prague</addrLine></address></meeting>
- <imprint>
- <date type="published" when="2002" />
- <biblScope unit="page" from="159" to="164" />
- </imprint>
- <respStmt>
- <orgName>Czech Technical University in Prague</orgName>
- </respStmt>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b54">
- <analytic>
- <title level="a" type="main">Possibility of jamming and wedging in the three-piece trucks of a moving freight car</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">A</forename><forename type="middle">D</forename><surname>Mckisic</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">V</forename><forename type="middle">F</forename><surname>Ushkalov</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">M</forename><surname>Zhechev</surname></persName>
- </author>
- </analytic>
- <monogr>
- <title level="j">Vehicle System Dynamics</title>
- <imprint>
- <biblScope unit="volume">45</biblScope>
- <biblScope unit="issue">1</biblScope>
- <biblScope unit="page" from="61" to="67" />
- <date type="published" when="2007" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b55">
- <analytic>
- <title level="a" type="main">Dynamic models of friction wedge dampers</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">J</forename><forename type="middle">P</forename><surname>Cusumano</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">J</forename><forename type="middle">F</forename><surname>Gardner</surname></persName>
- </author>
- </analytic>
- <monogr>
- <title level="m">Proceedings of the 1997 IEEE/ASME Joint Rail Conference</title>
- <meeting>the 1997 IEEE/ASME Joint Rail Conference<address><addrLine>Boston, MA</addrLine></address></meeting>
- <imprint>
- <date type="published" when="1920-03-18" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b56">
- <analytic>
- <title level="a" type="main">Modelling Freight Wagon Dynamics</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">M</forename><surname>Mcclanachan</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">Y</forename><surname>Handoko</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">M</forename><surname>Dhanasekar</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">D</forename><surname>Skerman</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">J</forename><surname>Davey</surname></persName>
- </author>
- </analytic>
- <monogr>
- <title level="j">Vehicle System Dynamics Supplement</title>
- <imprint>
- <biblScope unit="volume">41</biblScope>
- <biblScope unit="page" from="438" to="447" />
- <date type="published" when="2004" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b57">
- <monogr>
- <title level="m" type="main">Modeling and dynamics of friction wedge dampers in railroad freight trucks Vehicle System Dynamics</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">A</forename><forename type="middle">B</forename><surname>Kaiser</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">J</forename><forename type="middle">P</forename><surname>Cusumano</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">J</forename><forename type="middle">F</forename><surname>Gardner</surname></persName>
- </author>
- <imprint>
- <biblScope unit="volume">38</biblScope>
- <biblScope unit="page" from="2002" to="55" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b58">
- <analytic>
- <title level="a" type="main">Chaos in a railway bogie</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">C</forename><forename type="middle">H</forename><surname>Kaas-Petersen</surname></persName>
- </author>
- </analytic>
- <monogr>
- <title level="j">Acta Mechanica</title>
- <imprint>
- <biblScope unit="volume">61</biblScope>
- <biblScope unit="page" from="89" to="107" />
- <date type="published" when="1986" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b59">
- <analytic>
- <title level="a" type="main">On non-linear methods of bogie stability assessment using computer simulations</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">O</forename><surname>Polach</surname></persName>
- </author>
- </analytic>
- <monogr>
- <title level="j">Proceedings of the Institution of Mechanical Engineers</title>
- <imprint>
- <biblScope unit="volume">220</biblScope>
- <biblScope unit="page" from="13" to="27" />
- <date type="published" when="2006" />
- </imprint>
- </monogr>
- <note>Part F: Journal of Rail and Rapid Transit</note>
-</biblStruct>
-
-<biblStruct xml:id="b60">
- <analytic>
- <title level="a" type="main">Limit cycle behaviour and chaotic motions of two-axle freight wagons with friction damping</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">S</forename><surname>Stichel</surname></persName>
- </author>
- </analytic>
- <monogr>
- <title level="j">Multibody System Dynamics</title>
- <imprint>
- <biblScope unit="volume">8</biblScope>
- <biblScope unit="issue">3</biblScope>
- <biblScope unit="page" from="243" to="255" />
- <date type="published" when="2002" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b61">
- <analytic>
- <title level="a" type="main">Dynamics of two-axle railway freight wagons with UIC standard suspension, Vehicle System Dynamics</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">M</forename><surname>Hoffmann</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">H</forename><surname>True</surname></persName>
- </author>
- <idno type="doi">DOI:10.1080/00423110600869594</idno>
- </analytic>
- <monogr>
- <title level="j">International Journal of Vehicle Mechanics and Mobility</title>
- <imprint>
- <biblScope unit="volume">44</biblScope>
- <biblScope unit="page" from="1" to="139" />
- <date type="published" when="2006" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b62">
- <analytic>
- <title level="a" type="main">Analysis of the nonlinear dynamics of a 2axle freight wagon in curves, Vehicle System Dynamics</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">Di</forename><surname>Gialleonardo</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">E</forename><surname>Bruni</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">S</forename><surname>True</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">H</forename></persName>
- </author>
- <idno type="doi">DOI:10.1080/00423114.2013.863363</idno>
- </analytic>
- <monogr>
- <title level="j">International Journal of Vehicle Mechanics and Mobility</title>
- <imprint>
- <biblScope unit="volume">52</biblScope>
- <biblScope unit="issue">1</biblScope>
- <biblScope unit="page" from="125" to="141" />
- <date type="published" when="2014" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b63">
- <analytic>
- <title level="a" type="main">Lateral hunting stability of railway vehicles running on elastic track structures</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">W</forename><forename type="middle">M</forename><surname>Zhai</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">K</forename><forename type="middle">Y</forename><surname>Wang</surname></persName>
- </author>
- </analytic>
- <monogr>
- <title level="j">Journal of Computational and Nonlinear Dynamics</title>
- <imprint>
- <biblScope unit="volume">5</biblScope>
- <biblScope unit="issue">4</biblScope>
- <biblScope unit="page" from="41009" to="41010" />
- <date type="published" when="2010" />
- </imprint>
- </monogr>
- <note>ASME</note>
-</biblStruct>
-
-<biblStruct xml:id="b64">
- <analytic>
- <title level="a" type="main">Freight car curving performance in braked conditions</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">A</forename><surname>Berghuvud</surname></persName>
- </author>
- <idno type="doi">23.DOI:10.1243/0954409021531656</idno>
- </analytic>
- <monogr>
- <title level="j">Proceedings of the Institution of Mechanical Engineers, Part F: Journal of Rail and Rapid Transit</title>
- <imprint>
- <biblScope unit="volume">216</biblScope>
- <date type="published" when="2002" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b65">
- <monogr>
- <title/>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><surname>Hecht</surname></persName>
- </author>
- <imprint/>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b66">
- <monogr>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">M</forename><surname>Keudel</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">J</forename></persName>
- </author>
- <title level="m">Verbesserte Energieeffizienz durch radialeinstellendes Fahrwerk, Eisenbahningenieur 05</title>
- <imprint>
- <date type="published" when="2006" />
- <biblScope unit="page" from="42" to="47" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b67">
- <analytic>
- <title level="a" type="main">Wheel/rail interface management in heavy haul railway operations-applying science and technology, Vehicle System Dynamics</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">R</forename><forename type="middle">D</forename><surname>Fröhling</surname></persName>
- </author>
- <idno type="doi">DOI:10.1080/00423110701413797</idno>
- </analytic>
- <monogr>
- <title level="j">International Journal of Vehicle Mechanics and Mobility</title>
- <imprint>
- <biblScope unit="volume">45</biblScope>
- <biblScope unit="issue">7-8</biblScope>
- <biblScope unit="page" from="649" to="677" />
- <date type="published" when="2007" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b68">
- <analytic>
- <title level="a" type="main">Minimising wheel wear by optimising the primary suspension stiffness and centre plate friction of selfsteering bogies, Vehicle System Dynamics</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">S</forename><forename type="middle">N</forename><surname>Fergusson</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">R</forename><forename type="middle">D</forename><surname>Fröhling</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">H</forename><surname>Klopper</surname></persName>
- </author>
- <idno type="doi">DOI:10.1080/00423110801993094</idno>
- </analytic>
- <monogr>
- <title level="j">International Journal of Vehicle Mechanics and Mobility</title>
- <imprint>
- <biblScope unit="volume">46</biblScope>
- <biblScope unit="issue">S1</biblScope>
- <biblScope unit="page" from="457" to="468" />
- <date type="published" when="2008" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b69">
- <analytic>
- <title level="a" type="main">Influence of switches and crossings on wheel profile evolution in freight vehicles. Vehicle System Dynamics</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">C</forename><surname>Casanueva</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">E</forename><surname>Doulgerakis</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">P.-A</forename><surname>Jönsson</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">S</forename><surname>Stichel</surname></persName>
- </author>
- <idno type="doi">DOI:10.1080/00423114.2014.898779</idno>
- </analytic>
- <monogr>
- <title level="j">International Journal of Vehicle Mechanics and Mobility</title>
- <imprint>
- <biblScope unit="volume">52</biblScope>
- <biblScope unit="page" from="317" to="337" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b70">
- <analytic>
- <title level="a" type="main">A parametric study of the effects of freight vehicles on rolling contact fatigue of rail</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">J</forename><surname>Tunna</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">C</forename><surname>Urban</surname></persName>
- </author>
- <idno type="doi">DOI:10.1243/09544097JRRT228</idno>
- </analytic>
- <monogr>
- <title level="j">Proceedings of the Institution of Mechanical Engineers</title>
- <imprint>
- <biblScope unit="volume">223</biblScope>
- <biblScope unit="page">141</biblScope>
- <date type="published" when="2009" />
- </imprint>
- </monogr>
- <note>Part F: Journal of Rail and Rapid Transit</note>
-</biblStruct>
-
-<biblStruct xml:id="b71">
- <analytic>
- <title level="a" type="main">Whole life rail model application and development for RSSBdevelopment of an RCF damage parameter</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">M</forename><surname>Burstow</surname></persName>
- </author>
- <idno>AEATR-ES-2003-832</idno>
- <ptr target="http://www.rssb.co.uk" />
- </analytic>
- <monogr>
- <title level="j">Rail Safety &amp; Standards Board</title>
- <imprint>
- <biblScope unit="volume">1</biblScope>
- <date type="published" when="2003-10" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b72">
- <analytic>
- <title level="a" type="main">Wheel damage on the Swedish iron ore line investigated via multibody simulation</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">Hossein</forename><surname>Nia</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">S</forename><surname>Jönsson</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">P.-A</forename><surname>Stichel</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">S</forename></persName>
- </author>
- <idno type="doi">228:652.DOI:10.1177/0954409714523264</idno>
- </analytic>
- <monogr>
- <title level="m">Proceedings of the Institution of Mechanical Engineers</title>
- <meeting>the Institution of Mechanical Engineers</meeting>
- <imprint>
- <date type="published" when="2014" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b73">
- <analytic>
- <title level="a" type="main">The dynamic effects of conventional freight car running over a dipped joint</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">R</forename><forename type="middle">V</forename><surname>Dukkipati</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">R</forename><surname>Dong</surname></persName>
- </author>
- </analytic>
- <monogr>
- <title level="j">Vehicle System Dynamics</title>
- <imprint>
- <biblScope unit="volume">31</biblScope>
- <biblScope unit="page" from="95" to="111" />
- <date type="published" when="1999" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b74">
- <monogr>
- <title level="m" type="main">A test rig for measuring three piece bogie dynamic parameters applied to freight car application Vehicle System Dynamics 44 supplement</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">L</forename><forename type="middle">H</forename><surname>Ren</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">G</forename><surname>Shen</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">Y</forename><forename type="middle">S</forename><surname>Hu</surname></persName>
- </author>
- <imprint>
- <date type="published" when="2006" />
- <biblScope unit="page" from="853" to="861" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b75">
- <monogr>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">A</forename><forename type="middle">H</forename><surname>Wickens</surname></persName>
- </author>
- <title level="m">The dynamics of railway vehicles on straight track-fundamental considerations of lateral stability Proceedings of the Institution of Mechanical Engineers Part</title>
- <imprint>
- <biblScope unit="volume">29</biblScope>
- <biblScope unit="page" from="3" to="1965" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b76">
- <monogr>
- <title level="m" type="main">Suspension design for high performance two-axle freight vehicles Proceedings of the Institution of Mechanical Engineers Part</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">A</forename><forename type="middle">H</forename><surname>Wickens</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">A</forename><forename type="middle">O</forename><surname>Gilchrist</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">A</forename><forename type="middle">E W</forename><surname>Hobbs</surname></persName>
- </author>
- <idno>3D 1969-70</idno>
- <imprint>
- <biblScope unit="volume">184</biblScope>
- <biblScope unit="page" from="22" to="36" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b77">
- <monogr>
- <title level="m" type="main">Tracking truck</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">H</forename><forename type="middle">B</forename><surname>Webber</surname></persName>
- </author>
- <imprint>
- <date type="published" when="1968-07" />
- <biblScope unit="volume">339466230</biblScope>
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b78">
- <monogr>
- <title level="m" type="main">Uklad zawieszenia pojazdu kolejowego, zwlaszcza dwuosiowego wagonu towarowego</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">Greenbrier</forename><surname>Europe</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">Wagony</forename><surname>Swidnica</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">S</forename><forename type="middle">A</forename></persName>
- </author>
- <imprint/>
- </monogr>
- <note>PL 207920 B1 B61F 5/30 (2006.01</note>
-</biblStruct>
-
-<biblStruct xml:id="b79">
- <monogr>
- <title level="m" type="main">Advances in Rail Wagon Design&apos; Proceedings of the Institution of Mechanical Engineers, Part F: Journal of Rail and Rapid Transit</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">M</forename><surname>Etwell</surname></persName>
- </author>
- <imprint>
- <date type="published" when="1990-01" />
- <biblScope unit="volume">204</biblScope>
- <biblScope unit="page" from="45" to="54" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b80">
- <monogr>
- <title level="m" type="main">Association of American Railroads. Manual of standards and recommended practices. Section C-part II. Design, fabrication, and construction of freight cars</title>
- <imprint/>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b81">
- <monogr>
- <title level="m" type="main">Chapter 11: Service worthiness tests and analyses for new freight cars</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">M-1001</forename></persName>
- </author>
- <imprint>
- <date type="published" when="2007" />
- <biblScope unit="volume">374</biblScope>
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b82">
- <monogr>
- <title level="m" type="main">Association of American Railroads. Manual of standards and recommended practices. Section D. Trucks and truck details Specification M-976 Truck performance for rail cars</title>
- <imprint>
- <date type="published" when="2002" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b83">
- <analytic>
- <title level="a" type="main">Comparison of different types of friction wedge suspensions in freight wagons</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">A</forename><surname>Orlova</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">E</forename><surname>Rudakova</surname></persName>
- </author>
- </analytic>
- <monogr>
- <title level="m">Proceedings of the 8-th International Conference on Railway Bogies and Running Gears</title>
- <meeting>the 8-th International Conference on Railway Bogies and Running Gears<address><addrLine>Budapest: BUTE</addrLine></address></meeting>
- <imprint>
- <date type="published" when="2010" />
- <biblScope unit="page" from="41" to="50" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b84">
- <monogr>
- <title level="m" type="main">Influence of bogie to car body connection parameters on stability and curving of freight vehicle // Extended abstracts 6th international conference Railway bogies and running gears</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">Boronenko</forename><forename type="middle">P</forename><surname>Yu</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">A</forename><forename type="middle">M</forename><surname>Orlova</surname></persName>
- </author>
- <imprint>
- <date type="published" when="2004-09" />
- <biblScope unit="page" from="23" to="25" />
- <pubPlace>Budapest: BUTE</pubPlace>
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b85">
- <monogr>
- <title level="m" type="main">Shear Stiffner Linkages for Radial Bogies</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">H</forename><surname>Scheffel</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">P</forename><forename type="middle">H</forename><surname>Smit</surname></persName>
- </author>
- <imprint>
- <date type="published" when="1997" />
- <biblScope unit="volume">27</biblScope>
- </imprint>
- </monogr>
- <note>Supplement to Vehicle System Dynamics</note>
-</biblStruct>
-
-<biblStruct xml:id="b86">
- <analytic>
- <title level="a" type="main">The influence of inter-axle linkages on stability and guidance of freight bogies</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">Boronenko</forename><forename type="middle">P</forename><surname>Yu</surname></persName>
- </author>
- </analytic>
- <monogr>
- <title level="m">Proceedings of the 8-th mini conference on vehicle system dynamics, identification and anomalies</title>
- <meeting>the 8-th mini conference on vehicle system dynamics, identification and anomalies<address><addrLine>Budapest: BUTE</addrLine></address></meeting>
- <imprint>
- <date type="published" when="2002" />
- <biblScope unit="page" from="175" to="182" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b87">
- <analytic>
- <title level="a" type="main">Suspension of freight wagon bogiewith the Lenoir friction damper ensuring low wear of wheels and good lateral dynamics of the wagon</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">J</forename><surname>Piotrowski</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">P</forename><surname>Pazdzierniak</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">T</forename><surname>Adamczewski</surname></persName>
- </author>
- </analytic>
- <monogr>
- <title level="m">Proc. of XVIII conference &apos;Pojazdy Szynow</title>
- <meeting>of XVIII conference &apos;Pojazdy Szynow</meeting>
- <imprint>
- <date type="published" when="2008" />
- <biblScope unit="volume">I</biblScope>
- <biblScope unit="page" from="199" to="211" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b88">
- <analytic>
- <title level="a" type="main">Wear and energy-saving freight bogie designs with rubber primary springs: principles and experiences</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">M</forename><surname>Hecht</surname></persName>
- </author>
- </analytic>
- <monogr>
- <title level="j">JRRT</title>
- <imprint>
- <biblScope unit="volume">227</biblScope>
- <biblScope unit="page" from="105" to="110" />
- <date type="published" when="2009" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b89">
- <analytic>
- <title level="a" type="main">Innovative Freight Wagons-A Precondition to increase the MarketShare of Rail Freight</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">M</forename><surname>Hecht</surname></persName>
- </author>
- </analytic>
- <monogr>
- <title level="j">Archives of Transport</title>
- <imprint>
- <biblScope unit="volume">29</biblScope>
- <biblScope unit="page" from="17" to="26" />
- <date type="published" when="2014" />
- </imprint>
- </monogr>
- <note>Polish Academy of Sciences, committee of Transport</note>
-</biblStruct>
-
-<biblStruct xml:id="b90">
- <monogr>
- <title level="m" type="main">A new design approach for railway vehicle suspension; Rail International</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">H</forename><surname>Scheffel</surname></persName>
- </author>
- <idno>1974. - -№10.-P. 638-651</idno>
- <imprint/>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b91">
- <monogr>
- <title level="m" type="main">Project INFRA-RADIAL-bogies for axle loads of 25 t-test and simulation&apos;; XXI Century Rolling Stock: Ideas, Requirements, Projects Conference</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">W</forename><surname>Kik</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">D</forename><surname>Scholdan</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">J</forename><surname>Stephanides</surname></persName>
- </author>
- <imprint>
- <date type="published" when="2007" />
- <pubPlace>St. Petersburg</pubPlace>
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b92">
- <monogr>
- <title level="m" type="main">Simulation of longitudinal dynamics of long freight trains in positioning operations Vehicle System Dynamics</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">Z</forename><surname>Qi</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">Z</forename><surname>Huang</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">X</forename><surname>Kong</surname></persName>
- </author>
- <imprint>
- <biblScope unit="volume">50</biblScope>
- <biblScope unit="page" from="2012" to="1409" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b93">
- <monogr>
- <title level="m" type="main">Numerical and experimental approach for the evaluation of severe longitudinal dynamics of heavy freight trains Vehicle System Dynamics</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">P</forename><surname>Belforte</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">F</forename><surname>Celi</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">G</forename><surname>Diana</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">S</forename><surname>Melzi</surname></persName>
- </author>
- <imprint>
- <date type="published" when="2008" />
- <biblScope unit="volume">46</biblScope>
- <biblScope unit="page" from="937" to="955" />
- </imprint>
- </monogr>
- <note>Supplement</note>
-</biblStruct>
-
-<biblStruct xml:id="b94">
- <monogr>
- <title level="m" type="main">Longitudinal train dynamics&apos; in Handbook of Railway Vehicle Dynamics</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">C</forename><surname>Cole</surname></persName>
- </author>
- <imprint>
- <date type="published" when="1999" />
- </imprint>
- </monogr>
- <note>Iwnicki ed Taylor and Francis</note>
-</biblStruct>
-
-<biblStruct xml:id="b95">
- <analytic>
- <title level="a" type="main">An investigation of the effect of bogie and wagon pitch associated with longitudinal train dynamics</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">M</forename><surname>Mcclanachan</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">C</forename><surname>Cole</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">D</forename><surname>Roach</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">B</forename><surname>Scown</surname></persName>
- </author>
- </analytic>
- <monogr>
- <title level="m">The dynamics of vehicles on roads and on tracks Vehicle System Dynamics Supplement Swets &amp; Zeitlinger Amsterdam</title>
- <imprint>
- <date type="published" when="1999" />
- <biblScope unit="page" from="374" to="385" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b96">
- <analytic>
- <title level="a" type="main">Recent advancements in bluff and draft testing techniques</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">M</forename><surname>El-Sibaie</surname></persName>
- </author>
- </analytic>
- <monogr>
- <title level="m">Fifth International Heavy Haul Conference</title>
- <meeting><address><addrLine>Beijing</addrLine></address></meeting>
- <imprint>
- <date type="published" when="1993" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b97">
- <analytic>
- <title level="a" type="main">White Paper Innovative Rail Freight Wagon 2030</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">R</forename><surname>Koenig</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">M</forename><surname>Hecht</surname></persName>
- </author>
- <ptr target="http://www.schienenfzg.tu-Berlin.de/fileadmin/fg62/Dokumente/Downloads/White_Paper_Innovative_Rail_Freight_Wagon_2030.pdf" />
- </analytic>
- <monogr>
- <title level="j">TU Dresden TU Berlin</title>
- <imprint>
- <date type="published" when="2012" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b98">
- <analytic>
- <title level="a" type="main">On the Theory of Nonlinear Dynamics and its Applications in Vehicle Systems Dynamics</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">H</forename><surname>True</surname></persName>
- </author>
- </analytic>
- <monogr>
- <title level="j">Vehicle System Dynamics</title>
- <imprint>
- <biblScope unit="volume">31</biblScope>
- <biblScope unit="issue">5-6</biblScope>
- <biblScope unit="page" from="393" to="421" />
- <date type="published" when="1999" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b99">
- <analytic>
- <title level="a" type="main">Numerical simulation of wheel wear evolution for heavy haul railway</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">P</forename><surname>Wang</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">L</forename><surname>Gao</surname></persName>
- </author>
- <idno type="doi">DOI:10.1007/s11771-015-2510-1</idno>
- </analytic>
- <monogr>
- <title level="j">J. Cent. South Univ</title>
- <imprint>
- <biblScope unit="volume">22</biblScope>
- <biblScope unit="page" from="196" to="207" />
- <date type="published" when="2015" />
- </imprint>
- </monogr>
-</biblStruct>
-
- </listBibl>
- </div>
- </back>
- </text>
-</TEI>
diff --git a/mapreduce/tests/files/example.cdx b/mapreduce/tests/files/example.cdx
deleted file mode 100644
index 84e3271..0000000
--- a/mapreduce/tests/files/example.cdx
+++ /dev/null
@@ -1,20 +0,0 @@
-edu,cmu,cs,adm,reports-archive)/anon/usr0/ftp/usr0/anon/2002/cmu-cs-02-119.pdf 20170706005950 http://reports-archive.adm.cs.cmu.edu/anon/usr0/ftp/usr0/anon/2002/CMU-CS-02-119.pdf application/pdf 200 MQHD36X5MNZPWFNMD5LFOYZSFGCHUN3V - - 361006 17120058 CITESEERX-CRAWL-2017-06-20-20170706004100259-00924-00932-wbgrp-svc284/CITESEERX-CRAWL-2017-06-20-20170706005946792-00926-31209~wbgrp-svc284.us.archive.org~8443.warc.gz
-fi,tkk,lib)/diss/2001/isbn951225459x/isbn951225459x.pdf 20170705074926 http://lib.tkk.fi/Diss/2001/isbn951225459X/isbn951225459X.pdf application/pdf 200 KJBCOT7LGBNIAVGEGPUELK5OK6RTFORR - - 344175 255650124 CITESEERX-CRAWL-2017-06-20-20170705074433815-00129-00138-wbgrp-svc284/CITESEERX-CRAWL-2017-06-20-20170705074843696-00134-31209~wbgrp-svc284.us.archive.org~8443.warc.gz
-org,oxfordjournals,nar)/cgi/reprint/gkl1060v1.pdf 20170706035441 http://nar.oxfordjournals.org/cgi/reprint/gkl1060v1.pdf text/html 301 OX6MLVDFURLT2KSYCXUYW2PZNOVFSEVF - - 697 49346051 CITESEERX-CRAWL-2017-06-20-20170706034741172-00140-00149-wbgrp-svc285/CITESEERX-CRAWL-2017-06-20-20170706035435634-00148-3671~wbgrp-svc285.us.archive.org~8443.warc.gz
-org,ifaamas)/proceedings/aamas09/pdf/01_full%20papers/02_08_fp_0272.pdf 20170706081902 http://www.ifaamas.org/Proceedings/aamas09/pdf/01_Full%20Papers/02_08_FP_0272.pdf application/pdf 200 GYHX35QJWRJELWJ5GDQZPTPOUUZOCTKF - - 251180 34635154 CITESEERX-CRAWL-2017-06-20-20170706081825105-00419-00428-wbgrp-svc285/CITESEERX-CRAWL-2017-06-20-20170706081838210-00420-3671~wbgrp-svc285.us.archive.org~8443.warc.gz
-de,fau,cs)/publications/2014/lukas_14_masterthesis.pdf 20170705101722 http://www4.cs.fau.de/Publications/2014/lukas_14_masterthesis.pdf application/pdf 200 GIUQT7SXZ33TWEFBM2MWURJI2M3QE3IW - - 1290532 71068435 CITESEERX-CRAWL-2017-06-20-20170705101605019-00279-00288-wbgrp-svc284/CITESEERX-CRAWL-2017-06-20-20170705101714659-00281-31209~wbgrp-svc284.us.archive.org~8443.warc.gz
-de,bund,jki,pub)/index.php/jabfq/article/download/3568/4462 20170706041152 http://pub.jki.bund.de/index.php/JABFQ/article/download/3568/4462/ text/html 301 XZBNO24W2ZPQQMJYE6YUUCSRUF7G3ZBT - - 552 417292708 CITESEERX-CRAWL-2017-06-20-20170706040506112-00160-00169-wbgrp-svc285/CITESEERX-CRAWL-2017-06-20-20170706041021844-00165-3671~wbgrp-svc285.us.archive.org~8443.warc.gz
-whois://whois.arin.net/z+%2B+132.177.133.114 20170713120653 whois://whois.arin.net/z+%2B+132.177.133.114 text/plain - IDEID4YQ6MVJSOE57NPVDLL53ZB3J4DX - - 876 30983517 CITESEERX-CRAWL-2017-06-20-20170707064626094-01007-01015-wbgrp-svc285/CITESEERX-CRAWL-2017-06-20-20170711214025652-01014-3671~wbgrp-svc285.us.archive.org~8443.warc.gz
-za,co,csir,researchspace)/dspace/bitstream/10204/4048/1/smith2_2010.pdf 20170706094159 http://researchspace.csir.co.za/dspace/bitstream/10204/4048/1/Smith2_2010.pdf unk 301 3I42H3S6NNFQ2MSVX7XZKYAYSCX5QBYJ - - 446 104830407 CITESEERX-CRAWL-2017-06-20-20170706093829986-00509-00518-wbgrp-svc285/CITESEERX-CRAWL-2017-06-20-20170706094137978-00512-3671~wbgrp-svc285.us.archive.org~8443.warc.gz
-org,annals)/article.aspx?articleid=705034 20170707013120 http://annals.org/article.aspx?articleid=705034 text/html 301 QQYKL57QSERLFM3LXSWMNOFXMOCN7C5G - - 22665 28113974 CITESEERX-CRAWL-2017-06-20-20170707013100780-00967-00976-wbgrp-svc285/CITESEERX-CRAWL-2017-06-20-20170707013100780-00967-3671~wbgrp-svc285.us.archive.org~8443.warc.gz
-org,annals)/pdfaccess.ashx?url=/data/journals/aim/20105/0000605-200512200-00013.pdf 20170707045304 http://annals.org/pdfaccess.ashx?url=/data/journals/aim/20105/0000605-200512200-00013.pdf text/html 302 423S7EMGLCVIZ3FLVD7TLAG75HWE4RGI - - 644 222908628 CITESEERX-CRAWL-2017-06-20-20170707042504366-00997-01006-wbgrp-svc285/CITESEERX-CRAWL-2017-06-20-20170707045044604-00999-3671~wbgrp-svc285.us.archive.org~8443.warc.gz
-com,sagepub,spi)/content/28/4/501.full.pdf 20170705092027 http://spi.sagepub.com/content/28/4/501.full.pdf unk 301 3I42H3S6NNFQ2MSVX7XZKYAYSCX5QBYJ - - 396 553180242 CITESEERX-CRAWL-2017-06-20-20170705091311851-00219-00228-wbgrp-svc284/CITESEERX-CRAWL-2017-06-20-20170705091759818-00223-31209~wbgrp-svc284.us.archive.org~8443.warc.gz
-ir,mediaj)/favicon.ico 20170705075240 http://mediaj.ir/favicon.ico text/html 404 E3WSNQ7JAFOW7N3ZJ6GLV27T52T25JDK - - 589 455827180 CITESEERX-CRAWL-2017-06-20-20170705074433815-00129-00138-wbgrp-svc284/CITESEERX-CRAWL-2017-06-20-20170705075051100-00135-31209~wbgrp-svc284.us.archive.org~8443.warc.gz
-com,sagepub,jpr)/content/8/3-4/239.full.pdf 20170705074931 http://jpr.sagepub.com/content/8/3-4/239.full.pdf unk 301 3I42H3S6NNFQ2MSVX7XZKYAYSCX5QBYJ - - 400 270368088 CITESEERX-CRAWL-2017-06-20-20170705074433815-00129-00138-wbgrp-svc284/CITESEERX-CRAWL-2017-06-20-20170705074843696-00134-31209~wbgrp-svc284.us.archive.org~8443.warc.gz
-jp,co,nittuden)/business/pdf/transparent_thermoplastic_resin_with_electron_beam_cross-linking.pdf 20170706083459 http://www.nittuden.co.jp/business/pdf/Transparent_Thermoplastic_Resin_with_Electron_Beam_Cross-Linking.pdf application/pdf 200 V32E3CCO7NMI2M4OHLKG73DXD72LR4B2 - - 715081 761088410 CITESEERX-CRAWL-2017-06-20-20170706082646066-00429-00438-wbgrp-svc285/CITESEERX-CRAWL-2017-06-20-20170706083257353-00436-3671~wbgrp-svc285.us.archive.org~8443.warc.gz
-lt,lms)/robots.txt 20170705122708 http://www.lms.lt/robots.txt text/plain 200 PF3HTQQT2ULYRWFLJGUWZKHTVZUVMZ2F - - 592 668333707 CITESEERX-CRAWL-2017-06-20-20170705121748408-00399-00408-wbgrp-svc284/CITESEERX-CRAWL-2017-06-20-20170705122352502-00406-31209~wbgrp-svc284.us.archive.org~8443.warc.gz
-hu,bme,phy)/~szalay/pub/multipartcriteriaposter.pdf 20170705124828 http://www.phy.bme.hu/%7Eszalay/pub/multipartcriteriaPoster.pdf application/pdf 200 L3TUEEZLBJTHAVH74B5N426FAIDBCCOE - - 187866 964760782 CITESEERX-CRAWL-2017-06-20-20170705123641979-00419-00428-wbgrp-svc284/CITESEERX-CRAWL-2017-06-20-20170705124315591-00426-31209~wbgrp-svc284.us.archive.org~8443.warc.gz
-org,adb,openaccess)/bitstream/handle/11540/1260/new-regime-sme-finance-asia.pdf;jsessionid=f966a3bdac9882ec5a7c326b130f6f81?sequence=1 20170705090940 https://openaccess.adb.org/bitstream/handle/11540/1260/new-regime-sme-finance-asia.pdf%3Bjsessionid%3DF966A3BDAC9882EC5A7C326B130F6F81?sequence%3D1 unk 301 3I42H3S6NNFQ2MSVX7XZKYAYSCX5QBYJ - - 515 634039376 CITESEERX-CRAWL-2017-06-20-20170705090333400-00209-00218-wbgrp-svc284/CITESEERX-CRAWL-2017-06-20-20170705090728803-00212-31209~wbgrp-svc284.us.archive.org~8443.warc.gz
-org,physiology,ajpregu)/content/272/4/r1084 20170706131006 http://ajpregu.physiology.org/content/272/4/R1084 text/html 200 3FOQSKT4WBYOUA6VKKJCEQCN6QF35ANT - - 27346 336293585 CITESEERX-CRAWL-2017-06-20-20170706130432396-00707-00716-wbgrp-svc285/CITESEERX-CRAWL-2017-06-20-20170706130850866-00711-3671~wbgrp-svc285.us.archive.org~8443.warc.gz
-de,desy,www-it)/common/documentation/cd-docs/sc2002/paperpdf/pap234.pdf 20170705121813 http://www-it.desy.de/common/documentation/cd-docs/SC2002/paperpdf/pap234.pdf application/pdf 200 BONCZ4NNGRNYR22ASFVU7VYTQ24RRNP4 - - 72421 381715704 CITESEERX-CRAWL-2017-06-20-20170705120827801-00389-00398-wbgrp-svc284/CITESEERX-CRAWL-2017-06-20-20170705121708700-00397-31209~wbgrp-svc284.us.archive.org~8443.warc.gz
-org,oxfordjournals,bmb)/content/28/3/247.full.pdf 20170706014948 http://bmb.oxfordjournals.org/content/28/3/247.full.pdf text/html 301 EJWYVOPONJRARK7SGG6COFRN7CSTHROY - - 643 119398161 CITESEERX-CRAWL-2017-06-20-20170706014800946-00020-00029-wbgrp-svc285/CITESEERX-CRAWL-2017-06-20-20170706014907678-00022-3671~wbgrp-svc285.us.archive.org~8443.warc.gz
diff --git a/mapreduce/tests/files/small.json b/mapreduce/tests/files/small.json
deleted file mode 100644
index 208fb49..0000000
--- a/mapreduce/tests/files/small.json
+++ /dev/null
@@ -1,43 +0,0 @@
-{
- "title": "Dummy Example File",
- "authors": [
- {"name": "Brewster Kahle"},
- {"name": "J Doe"}
- ],
- "journal": {
- "name": "Dummy Example File. Journal of Fake News. pp. 1-2. ISSN 1234-5678",
- "eissn": null,
- "issn": null,
- "issue": null,
- "publisher": null,
- "volume": null
- },
- "date": "2000",
- "doi": null,
- "citations": [
- { "authors": [{"name": "A Seaperson"}],
- "date": "2001",
- "id": "b0",
- "index": 0,
- "issue": null,
- "journal": "Letters in the Alphabet",
- "publisher": null,
- "title": "Everything is Wonderful",
- "url": null,
- "volume": "20"},
- { "authors": [],
- "date": "2011-03-28",
- "id": "b1",
- "index": 1,
- "issue": null,
- "journal": "The Dictionary",
- "publisher": null,
- "title": "All about Facts",
- "url": null,
- "volume": "14"}
- ],
- "abstract": "Everything you ever wanted to know about nothing",
- "body": "Introduction \nEverything starts somewhere, as somebody [1] once said. \n\n In Depth \n Meat \nYou know, for kids. \n Potatos \nQED.",
- "acknowledgement": null,
- "annex": null
-}
diff --git a/mapreduce/tests/files/small.xml b/mapreduce/tests/files/small.xml
deleted file mode 100644
index 78b9ba2..0000000
--- a/mapreduce/tests/files/small.xml
+++ /dev/null
@@ -1,110 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<TEI xmlns="http://www.tei-c.org/ns/1.0"
-xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-xsi:schemaLocation="http://www.tei-c.org/ns/1.0 /srv/grobid/grobid-0.5.1/grobid-home/schemas/xsd/Grobid.xsd"
- xmlns:xlink="http://www.w3.org/1999/xlink">
- <teiHeader xml:lang="en">
- <encodingDesc>
- <appInfo>
- <application version="0.5.1-SNAPSHOT" ident="GROBID" when="2018-04-02T00:31+0000">
- <ref target="https://github.com/kermitt2/grobid">GROBID - A machine learning software for extracting information from scholarly documents</ref>
- </application>
- </appInfo>
- </encodingDesc>
- <fileDesc>
- <titleStmt>
- <title level="a" type="main">Dummy Example File</title>
- </titleStmt>
- <publicationStmt>
- <publisher/>
- <availability status="unknown"><licence/></availability>
- <date type="published" when="2000">2000</date>
- </publicationStmt>
- <sourceDesc>
- <biblStruct>
- <analytic>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">Brewster</forename><surname>Kahle</surname></persName>
- </author>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="first">J</forename><surname>Doe</surname></persName>
- </author>
- <author>
- <affiliation key="aff0">
- <orgName type="institution">Internet Archive</orgName>
- </affiliation>
- </author>
- <title level="a" type="main">Dummy Example File</title>
- </analytic>
- <monogr>
- <title level="m">Dummy Example File. Journal of Fake News. pp. 1-2. ISSN 1234-5678</title>
- <imprint>
- <date type="published" when="2000">2000</date>
- </imprint>
- </monogr>
- </biblStruct>
- </sourceDesc>
- </fileDesc>
- <profileDesc>
- <textClass>
- <keywords>
- <term>Fake Data</term>
- </keywords>
- </textClass>
- <abstract>
- <p>Everything you ever wanted to know about nothing</p>
- </abstract>
- </profileDesc>
- </teiHeader>
- <text xml:lang="en">
- <body>
-<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1">Introduction</head><p>
-Everything starts somewhere, as somebody<ref type="bibr" target="#b0">[1]</ref> once said.</p></div>
-
-<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2">In Depth</head></div>
-<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.1">Meat</head><p>
-You know, for kids.</p></div>
-<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.2">Potatos</head><p>
-QED.</p></div>
- </body>
- <back>
- <div type="references">
-
- <listBibl>
-
-<biblStruct xml:id="b0">
- <analytic>
- <title level="a" type="main">Everything is Wonderful</title>
- <author>
- <persName xmlns="http://www.tei-c.org/ns/1.0"><forename type="middle">A</forename><surname>Seaperson</surname></persName>
- </author>
- </analytic>
- <monogr>
- <title level="j">Letters in the Alphabet</title>
- <imprint>
- <biblScope unit="volume">20</biblScope>
- <biblScope unit="page" from="1" to="11" />
- <date type="published" when="2001" />
- </imprint>
- </monogr>
-</biblStruct>
-
-<biblStruct xml:id="b1">
- <analytic>
- <title level="a" type="main">All about Facts</title>
- </analytic>
- <monogr>
- <title level="j">The Dictionary</title>
- <imprint>
- <biblScope unit="volume">14</biblScope>
- <date type="published" when="2011-03-28" />
- </imprint>
- </monogr>
- <note>None</note>
-</biblStruct>
-
- </listBibl>
- </div>
- </back>
- </text>
-</TEI>
diff --git a/mapreduce/tests/test_backfill_hbase_from_cdx.py b/mapreduce/tests/test_backfill_hbase_from_cdx.py
deleted file mode 100644
index 070662b..0000000
--- a/mapreduce/tests/test_backfill_hbase_from_cdx.py
+++ /dev/null
@@ -1,74 +0,0 @@
-"""
-TODO: could probably refactor to use unittest.mock.patch('happybase')
-"""
-
-import io
-import json
-import pytest
-import mrjob
-import happybase_mock
-from backfill_hbase_from_cdx import MRCDXBackfillHBase
-
-@pytest.fixture
-def job():
- """
- Note: this mock only seems to work with job.run_mapper(), not job.run();
- the later results in a separate instantiation without the mock?
- """
- job = MRCDXBackfillHBase(['--no-conf', '-'])
-
- conn = happybase_mock.Connection()
- conn.create_table('wbgrp-journal-extract-test',
- {'file': {}, 'grobid0': {}, 'f': {}})
- job.hb_table = conn.table('wbgrp-journal-extract-test')
-
- return job
-
-
-def test_some_lines(job):
-
- raw = io.BytesIO(b"""
-com,sagepub,cep)/content/28/9/960.full.pdf 20170705062200 http://cep.sagepub.com/content/28/9/960.full.pdf application/pdf 301 3I42H3S6NNFQ2MSVX7XZKYAYSCX5QBYJ - - 401 313356621 CITESEERX-CRAWL-2017-06-20-20170705061647307-00039-00048-wbgrp-svc284/CITESEERX-CRAWL-2017-06-20-20170705062052659-00043-31209~wbgrp-svc284.us.archive.org~8443.warc.gz
-eu,eui,cadmus)/bitstream/handle/1814/36635/rscas_2015_03.pdf;jsessionid=761393014319a39f40d32ae3eb3a853f?sequence=1 20170705062202 http://cadmus.eui.eu/bitstream/handle/1814/36635/RSCAS_2015_03.pdf%3Bjsessionid%3D761393014319A39F40D32AE3EB3A853F?sequence%3D1 application/PDF 200 MPCXVWMUTRUGFP36SLPHKDLY6NGU4S3J - - 854156 328850624 CITESEERX-CRAWL-2017-06-20-20170705061647307-00039-00048-wbgrp-svc284/CITESEERX-CRAWL-2017-06-20-20170705062052659-00043-31209~wbgrp-svc284.us.archive.org~8443.warc.gz
-com,pbworks,educ333b)/robots.txt 20170705063311 http://educ333b.pbworks.com/robots.txt text/plain 200 6VAUYENMOU2SK2OWNRPDD6WTQTECGZAD - - 638 398190140 CITESEERX-CRAWL-2017-06-20-20170705062707827-00049-00058-wbgrp-svc284/CITESEERX-CRAWL-2017-06-20-20170705063158203-00053-31209~wbgrp-svc284.us.archive.org~8443.warc.gz
-""")
-
- job.sandbox(stdin=raw)
- job.run_mapper()
-
- assert job.hb_table.row(b'1') == {}
- # HTTP 301
- assert job.hb_table.row(b'sha1:3I42H3S6NNFQ2MSVX7XZKYAYSCX5QBYJ') == {}
- # valid
- assert job.hb_table.row(b'sha1:MPCXVWMUTRUGFP36SLPHKDLY6NGU4S3J') != {}
- # text/plain
- assert job.hb_table.row(b'sha1:6VAUYENMOU2SK2OWNRPDD6WTQTECGZAD') == {}
-
- row = job.hb_table.row(b'sha1:MPCXVWMUTRUGFP36SLPHKDLY6NGU4S3J')
- assert row[b'file:mime'] == b"application/pdf"
-
- file_cdx = json.loads(row[b'file:cdx'].decode('utf-8'))
- assert int(file_cdx['offset']) == 328850624
-
- f_c = json.loads(row[b'f:c'].decode('utf-8'))
- assert f_c['u'] == "http://cadmus.eui.eu/bitstream/handle/1814/36635/RSCAS_2015_03.pdf%3Bjsessionid%3D761393014319A39F40D32AE3EB3A853F?sequence%3D1"
- assert b'i' not in f_c
-
-def test_parse_cdx_skip(job):
-
- job.mapper_init()
-
- print("CDX prefix")
- raw = " com,sagepub,cep)/content/28/9/960.full.pdf 20170705062200 http://cep.sagepub.com/content/28/9/960.full.pdf application/pdf 200 3I42H3S6NNFQ2MSVX7XZKYAYSCX5QBYJ - - 401 313356621 CITESEERX-CRAWL-2017-06-20-20170705062052659-00043-31209~wbgrp-svc284.us.archive.org~8443.warc.gz"
- info, status = job.mapper(None, raw).__next__()
- assert info is None
- assert status['status'] == "invalid"
- assert 'prefix' in status['reason']
-
- print("mimetype")
- raw = "com,sagepub,cep)/content/28/9/960.full.pdf 20170705062200 http://cep.sagepub.com/content/28/9/960.full.pdf text/html 200 3I42H3S6NNFQ2MSVX7XZKYAYSCX5QBYJ - - 401 313356621 CITESEERX-CRAWL-2017-06-20-20170705061647307-00039-00048-wbgrp-svc284/CITESEERX-CRAWL-2017-06-20-20170705062052659-00043-31209~wbgrp-svc284.us.archive.org~8443.warc.gz"
- info, status = job.mapper(None, raw).__next__()
- assert info is None
- assert status['status'] == "skip"
- assert 'mimetype' in status['reason']
-
diff --git a/mapreduce/tests/test_common.py b/mapreduce/tests/test_common.py
deleted file mode 100644
index 34d50ed..0000000
--- a/mapreduce/tests/test_common.py
+++ /dev/null
@@ -1,40 +0,0 @@
-
-from common import *
-
-
-def test_parse_cdx_line():
-
- raw = "edu,upenn,ldc)/sites/www.ldc.upenn.edu/files/medar2009-large-arabic-broadcast-collection.pdf 20170828233154 https://www.ldc.upenn.edu/sites/www.ldc.upenn.edu/files/medar2009-large-arabic-broadcast-collection.pdf application/pdf 200 WL3FEA62TEU4F52Y5DOVQ62VET4QJW7G - - 210251 931661233 SEMSCHOLAR-PDF-CRAWL-2017-08-04-20170828231135742-00000-00009-wbgrp-svc284/SEMSCHOLAR-PDF-CRAWL-2017-08-04-20170828232253025-00005-3480~wbgrp-svc284.us.archive.org~8443.warc.gz"
- correct = {
- 'key': "sha1:WL3FEA62TEU4F52Y5DOVQ62VET4QJW7G",
- 'file:mime': "application/pdf",
- 'file:cdx': {
- 'surt': "edu,upenn,ldc)/sites/www.ldc.upenn.edu/files/medar2009-large-arabic-broadcast-collection.pdf",
- 'url': "https://www.ldc.upenn.edu/sites/www.ldc.upenn.edu/files/medar2009-large-arabic-broadcast-collection.pdf",
- 'dt': "20170828233154",
- 'warc': "SEMSCHOLAR-PDF-CRAWL-2017-08-04-20170828231135742-00000-00009-wbgrp-svc284/SEMSCHOLAR-PDF-CRAWL-2017-08-04-20170828232253025-00005-3480~wbgrp-svc284.us.archive.org~8443.warc.gz",
- 'offset': 931661233,
- 'c_size': 210251,
- },
- 'f:c': {
- 'u': "https://www.ldc.upenn.edu/sites/www.ldc.upenn.edu/files/medar2009-large-arabic-broadcast-collection.pdf",
- 'd': "2017-08-28T23:31:54",
- 'f': "SEMSCHOLAR-PDF-CRAWL-2017-08-04-20170828232253025-00005-3480~wbgrp-svc284.us.archive.org~8443.warc.gz",
- 'o': 931661233,
- 'c': 1,
- }
- }
-
- assert parse_cdx_line(raw) == correct
- assert parse_cdx_line(raw + "\n") == correct
- assert parse_cdx_line(raw + " extra_field") == correct
-
-def test_invalid_cdx():
-
- print("missing warc")
- raw = "edu,upenn,ldc)/sites/www.ldc.upenn.edu/files/medar2009-large-arabic-broadcast-collection.pdf 20170828233154 https://www.ldc.upenn.edu/sites/www.ldc.upenn.edu/files/medar2009-large-arabic-broadcast-collection.pdf application/pdf 200 WL3FEA62TEU4F52Y5DOVQ62VET4QJW7G - - 210251 931661233 -"
- assert parse_cdx_line(raw) == None
-
- print("bad datetime")
- raw = "edu,upenn,ldc)/sites/www.ldc.upenn.edu/files/medar2009-large-arabic-broadcast-collection.pdf 2070828233154 https://www.ldc.upenn.edu/sites/www.ldc.upenn.edu/files/medar2009-large-arabic-broadcast-collection.pdf application/pdf 200 WL3FEA62TEU4F52Y5DOVQ62VET4QJW7G - - 210251 931661233i SEMSCHOLAR-PDF-CRAWL-2017-08-04-20170828231135742-00000-00009-wbgrp-svc284/SEMSCHOLAR-PDF-CRAWL-2017-08-04-20170828232253025-00005-3480~wbgrp-svc284.us.archive.org~8443.warc.gz"
- assert parse_cdx_line(raw) == None
diff --git a/mapreduce/tests/test_extraction_cdx_grobid.py b/mapreduce/tests/test_extraction_cdx_grobid.py
deleted file mode 100644
index 1bf2420..0000000
--- a/mapreduce/tests/test_extraction_cdx_grobid.py
+++ /dev/null
@@ -1,319 +0,0 @@
-
-import io
-import json
-import mrjob
-import pytest
-import struct
-import responses
-import happybase_mock
-import wayback.exception
-from unittest import mock
-from extraction_cdx_grobid import MRExtractCdxGrobid, Resource
-
-
-FAKE_PDF_BYTES = b"%PDF SOME JUNK" + struct.pack("!q", 112853843)
-OK_CDX_LINE = b"""com,sagepub,cep)/content/28/9/960.full.pdf 20170705062200 http://cep.sagepub.com/content/28/9/960.full.pdf application/pdf 200 ABCDEF12345Q2MSVX7XZKYAYSCX5QBYJ - - 401 313356621 CITESEERX-CRAWL-2017-06-20-20170705061647307-00039-00048-wbgrp-svc284/CITESEERX-CRAWL-2017-06-20-20170705062052659-00043-31209~wbgrp-svc284.us.archive.org~8443.warc.gz"""
-
-with open('tests/files/23b29ea36382680716be08fc71aa81bd226e8a85.xml', 'r') as f:
- REAL_TEI_XML = f.read()
-
-@pytest.fixture
-def job():
- """
- Note: this mock only seems to work with job.run_mapper(), not job.run();
- the later results in a separate instantiation without the mock?
- """
- job = MRExtractCdxGrobid(['--no-conf', '-'])
-
- conn = happybase_mock.Connection()
- conn.create_table('wbgrp-journal-extract-test',
- {'file': {}, 'grobid0': {}, 'f': {}})
- job.hb_table = conn.table('wbgrp-journal-extract-test')
-
- return job
-
-
-@mock.patch('extraction_cdx_grobid.MRExtractCdxGrobid.fetch_warc_content', return_value=(FAKE_PDF_BYTES, None))
-@responses.activate
-def test_mapper_lines(mock_fetch, job):
-
- responses.add(responses.POST, 'http://localhost:8070/api/processFulltextDocument', status=200,
- body=REAL_TEI_XML, content_type='text/xml')
-
- raw = io.BytesIO(b"""
-com,sagepub,cep)/content/28/9/960.full.pdf 20170705062200 http://cep.sagepub.com/content/28/9/960.full.pdf application/pdf 301 3I42H3S6NNFQ2MSVX7XZKYAYSCX5QBYJ - - 401 313356621 CITESEERX-CRAWL-2017-06-20-20170705061647307-00039-00048-wbgrp-svc284/CITESEERX-CRAWL-2017-06-20-20170705062052659-00043-31209~wbgrp-svc284.us.archive.org~8443.warc.gz
-eu,eui,cadmus)/bitstream/handle/1814/36635/rscas_2015_03.pdf;jsessionid=761393014319a39f40d32ae3eb3a853f?sequence=1 20170705062202 http://cadmus.eui.eu/bitstream/handle/1814/36635/RSCAS_2015_03.pdf%3Bjsessionid%3D761393014319A39F40D32AE3EB3A853F?sequence%3D1 application/PDF 200 MPCXVWMUTRUGFP36SLPHKDLY6NGU4S3J - - 854156 328850624 CITESEERX-CRAWL-2017-06-20-20170705061647307-00039-00048-wbgrp-svc284/CITESEERX-CRAWL-2017-06-20-20170705062052659-00043-31209~wbgrp-svc284.us.archive.org~8443.warc.gz
-com,pbworks,educ333b)/robots.txt 20170705063311 http://educ333b.pbworks.com/robots.txt text/plain 200 6VAUYENMOU2SK2OWNRPDD6WTQTECGZAD - - 638 398190140 CITESEERX-CRAWL-2017-06-20-20170705062707827-00049-00058-wbgrp-svc284/CITESEERX-CRAWL-2017-06-20-20170705063158203-00053-31209~wbgrp-svc284.us.archive.org~8443.warc.gz
-""")
-
- output = io.BytesIO()
- job.sandbox(stdin=raw, stdout=output)
-
- job.run_mapper()
-
- # for debugging tests
- #print(output.getvalue().decode('utf-8'))
- #print(list(job.hb_table.scan()))
-
- # wayback gets FETCH 1x times
- mock_fetch.assert_called_once_with(
- "CITESEERX-CRAWL-2017-06-20-20170705061647307-00039-00048-wbgrp-svc284/CITESEERX-CRAWL-2017-06-20-20170705062052659-00043-31209~wbgrp-svc284.us.archive.org~8443.warc.gz",
- 328850624,
- 854156)
-
- # grobid gets POST 1x times
- assert len(responses.calls) == 1
-
- # HBase
- assert job.hb_table.row(b'1') == {}
- # HTTP 301
- assert job.hb_table.row(b'sha1:3I42H3S6NNFQ2MSVX7XZKYAYSCX5QBYJ') == {}
- # valid
- assert job.hb_table.row(b'sha1:MPCXVWMUTRUGFP36SLPHKDLY6NGU4S3J') != {}
- # text/plain
- assert job.hb_table.row(b'sha1:6VAUYENMOU2SK2OWNRPDD6WTQTECGZAD') == {}
-
- # Saved extraction info
- row = job.hb_table.row(b'sha1:MPCXVWMUTRUGFP36SLPHKDLY6NGU4S3J')
-
- assert struct.unpack("!q", row[b'file:size'])[0] == len(FAKE_PDF_BYTES)
- assert row[b'file:mime'] == b"application/pdf"
- assert struct.unpack("!q", row[b'grobid0:status_code'])[0] == 200
- # TODO: assert row[b'grobid0:quality'] == None
- status = json.loads(row[b'grobid0:status'].decode('utf-8'))
- assert type(status) == type(dict())
- assert row[b'grobid0:tei_xml'].decode('utf-8') == REAL_TEI_XML
- tei_json = json.loads(row[b'grobid0:tei_json'].decode('utf-8'))
- metadata = json.loads(row[b'grobid0:metadata'].decode('utf-8'))
- assert tei_json['title'] == metadata['title']
- assert 'body' in tei_json
- assert 'body' not in metadata
-
-def test_parse_cdx_invalid(job):
-
- print("valid")
- raw = "com,sagepub,cep)/content/28/9/960.full.pdf 20170705062200 http://cep.sagepub.com/content/28/9/960.full.pdf application/pdf 200 3I42H3S6NNFQ2MSVX7XZKYAYSCX5QBYJ - - 401 313356621 CITESEERX-CRAWL-2017-06-20-20170705061647307-00039-00048-wbgrp-svc284/CITESEERX-CRAWL-2017-06-20-20170705062052659-00043-31209~wbgrp-svc284.us.archive.org~8443.warc.gz"
- info, status = job.parse_line(raw)
- assert status is None
-
- print("space-prefixed line")
- raw = " com,sagepub,cep)/content/28/9/960.full.pdf 20170705062200 http://cep.sagepub.com/content/28/9/960.full.pdf application/pdf 200 3I42H3S6NNFQ2MSVX7XZKYAYSCX5QBYJ - - 401 313356621 CITESEERX-CRAWL-2017-06-20-20170705061647307-00039-00048-wbgrp-svc284/CITESEERX-CRAWL-2017-06-20-20170705062052659-00043-31209~wbgrp-svc284.us.archive.org~8443.warc.gz"
- info, status = job.parse_line(raw)
- assert info is None
- assert status['status'] == "invalid"
- assert 'prefix' in status['reason']
-
- print("commented line")
- raw = "#com,sagepub,cep)/content/28/9/960.full.pdf 20170705062200 http://cep.sagepub.com/content/28/9/960.full.pdf application/pdf 200 3I42H3S6NNFQ2MSVX7XZKYAYSCX5QBYJ - - 401 313356621 CITESEERX-CRAWL-2017-06-20-20170705061647307-00039-00048-wbgrp-svc284/CITESEERX-CRAWL-2017-06-20-20170705062052659-00043-31209~wbgrp-svc284.us.archive.org~8443.warc.gz"
- info, status = job.parse_line(raw)
- assert info is None
- assert status['status'] == "invalid"
- assert 'prefix' in status['reason']
-
- print("wrong column count")
- raw = "a b c d"
- info, status = job.parse_line(raw)
- assert info is None
- assert status['status'] == "invalid"
- assert 'parse' in status['reason']
-
- print("missing mimetype")
- raw = "com,sagepub,cep)/content/28/9/960.full.pdf 20170705062200 http://cep.sagepub.com/content/28/9/960.full.pdf - 200 3I42H3S6NNFQ2MSVX7XZKYAYSCX5QBYJ - - 401 313356621 CITESEERX-CRAWL-2017-06-20-20170705061647307-00039-00048-wbgrp-svc284/CITESEERX-CRAWL-2017-06-20-20170705062052659-00043-31209~wbgrp-svc284.us.archive.org~8443.warc.gz"
- info, status = job.parse_line(raw)
- assert info is None
- print(status)
- assert status['status'] == "invalid"
- assert 'parse' in status['reason']
-
- print("HTTP status")
- raw = "com,sagepub,cep)/content/28/9/960.full.pdf 20170705062200 http://cep.sagepub.com/content/28/9/960.full.pdf application/pdf 501 3I42H3S6NNFQ2MSVX7XZKYAYSCX5QBYJ - - 401 313356621 CITESEERX-CRAWL-2017-06-20-20170705061647307-00039-00048-wbgrp-svc284/CITESEERX-CRAWL-2017-06-20-20170705062052659-00043-31209~wbgrp-svc284.us.archive.org~8443.warc.gz"
- info, status = job.parse_line(raw)
- assert info is None
- assert status['status'] == "invalid"
-
- print("datetime")
- raw = "com,sagepub,cep)/content/28/9/960.full.pdf 20170705 http://cep.sagepub.com/content/28/9/960.full.pdf application/pdf 501 3I42H3S6NNFQ2MSVX7XZKYAYSCX5QBYJ - - 401 313356621 CITESEERX-CRAWL-2017-06-20-20170705061647307-00039-00048-wbgrp-svc284/CITESEERX-CRAWL-2017-06-20-20170705062052659-00043-31209~wbgrp-svc284.us.archive.org~8443.warc.gz"
- info, status = job.parse_line(raw)
- assert info is None
- assert status['status'] == "invalid"
-
-
-def test_parse_cdx_skip(job):
-
- job.mapper_init()
-
- print("warc format")
- raw = "com,sagepub,cep)/content/28/9/960.full.pdf 20170705062200 http://cep.sagepub.com/content/28/9/960.full.pdf application/pdf 200 3I42H3S6NNFQ2MSVX7XZKYAYSCX5QBYJ - - 401 313356621 CITESEERX-CRAWL-2017-06-20-20170705062052659-00043-31209~wbgrp-svc284.us.archive.org~8443.warc.gz"
- info, status = job.mapper(None, raw).__next__()
- assert info is None
- assert status['status'] == "skip"
- assert 'WARC' in status['reason']
-
- print("mimetype")
- raw = "com,sagepub,cep)/content/28/9/960.full.pdf 20170705062200 http://cep.sagepub.com/content/28/9/960.full.pdf text/html 200 3I42H3S6NNFQ2MSVX7XZKYAYSCX5QBYJ - - 401 313356621 CITESEERX-CRAWL-2017-06-20-20170705061647307-00039-00048-wbgrp-svc284/CITESEERX-CRAWL-2017-06-20-20170705062052659-00043-31209~wbgrp-svc284.us.archive.org~8443.warc.gz"
- info, status = job.mapper(None, raw).__next__()
- assert info is None
- assert status['status'] == "skip"
- assert 'mimetype' in status['reason']
-
-
-@mock.patch('extraction_cdx_grobid.MRExtractCdxGrobid.fetch_warc_content', return_value=(FAKE_PDF_BYTES, None))
-@responses.activate
-def test_grobid_503(mock_fetch, job):
-
- status = b'{"status": "done broke due to 503"}'
- responses.add(responses.POST, 'http://localhost:8070/api/processFulltextDocument', status=503,
- body=status)
-
- output = io.BytesIO()
- job.sandbox(stdin=io.BytesIO(OK_CDX_LINE), stdout=output)
- job.run_mapper()
- row = job.hb_table.row(b'sha1:ABCDEF12345Q2MSVX7XZKYAYSCX5QBYJ')
- status = json.loads(row[b'grobid0:status'].decode('utf-8'))
- assert json.loads(row[b'grobid0:status'].decode('utf-8')) == status
-
-
-@mock.patch('extraction_cdx_grobid.MRExtractCdxGrobid.fetch_warc_content', return_value=(FAKE_PDF_BYTES, None))
-@responses.activate
-def test_grobid_not_xml(mock_fetch, job):
-
- payload = b'this is not XML'
- responses.add(responses.POST, 'http://localhost:8070/api/processFulltextDocument', status=200,
- body=payload)
-
- output = io.BytesIO()
- job.sandbox(stdin=io.BytesIO(OK_CDX_LINE), stdout=output)
- job.run_mapper()
- output = output.getvalue().decode('utf-8')
- row = job.hb_table.row(b'sha1:ABCDEF12345Q2MSVX7XZKYAYSCX5QBYJ')
- assert struct.unpack("!q", row[b'grobid0:status_code'])[0] == 200
- assert row[b'grobid0:tei_xml'] == payload
- assert b'grobid0:tei_json' not in row
- assert "XML parse error" in output
-
-
-@mock.patch('extraction_cdx_grobid.MRExtractCdxGrobid.fetch_warc_content', return_value=(FAKE_PDF_BYTES, None))
-@responses.activate
-def test_grobid_not_tei(mock_fetch, job):
-
- payload = b'<xml></xml>'
- responses.add(responses.POST, 'http://localhost:8070/api/processFulltextDocument', status=200,
- body=payload)
-
- output = io.BytesIO()
- job.sandbox(stdin=io.BytesIO(OK_CDX_LINE), stdout=output)
- job.run_mapper()
- output = output.getvalue().decode('utf-8')
- row = job.hb_table.row(b'sha1:ABCDEF12345Q2MSVX7XZKYAYSCX5QBYJ')
- assert struct.unpack("!q", row[b'grobid0:status_code'])[0] == 200
- assert row[b'grobid0:tei_xml'] == payload
- assert b'grobid0:tei_json' not in row
- assert "non-TEI content" in output
-
-
-@mock.patch('extraction_cdx_grobid.MRExtractCdxGrobid.fetch_warc_content', return_value=(FAKE_PDF_BYTES, None))
-def test_grobid_invalid_connection(mock_fetch, job):
-
- status = b'{"status": "done broke"}'
- job.options.grobid_uri = 'http://host.invalid:8070/api/processFulltextDocument'
-
- output = io.BytesIO()
- job.sandbox(stdin=io.BytesIO(OK_CDX_LINE), stdout=output)
- job.run_mapper()
- output = output.getvalue().decode('utf-8')
- assert 'error' in output
- assert 'GROBID' in output
- assert job.hb_table.row(b'sha1:ABCDEF12345Q2MSVX7XZKYAYSCX5QBYJ') == {}
-
-
-def test_wayback_failure(job):
-
- job.options.warc_uri_prefix = 'http://host.invalid/'
-
- output = io.BytesIO()
- job.sandbox(stdin=io.BytesIO(OK_CDX_LINE), stdout=output)
- job.run_mapper()
- output = output.getvalue().decode('utf-8')
- assert 'error' in output
- assert 'wayback' in output
- assert job.hb_table.row(b'sha1:ABCDEF12345Q2MSVX7XZKYAYSCX5QBYJ') == {}
-
-
-@mock.patch('extraction_cdx_grobid.ResourceStore')
-def test_wayback_not_found(mock_rs, job):
-
- # This is... a little convoluded. Basically creating a 404 situation for
- # reading a wayback resource.
- mock_resource = mock.MagicMock()
- mock_resource.get_status.return_value = (404, "Not Found")
- mock_rso = mock.MagicMock()
- mock_rso.load_resource.return_value = mock_resource
- mock_rs.return_value = mock_rso
- print(mock_rs().load_resource().get_status())
-
- job.options.warc_uri_prefix = 'http://dummy-archive.org/'
-
- output = io.BytesIO()
- job.sandbox(stdin=io.BytesIO(OK_CDX_LINE), stdout=output)
- job.run_mapper()
- output = output.getvalue().decode('utf-8')
-
- print(output)
- assert 'error' in output
- assert 'not 200' in output
- assert job.hb_table.row(b'sha1:ABCDEF12345Q2MSVX7XZKYAYSCX5QBYJ') == {}
-
-
-@mock.patch('extraction_cdx_grobid.MRExtractCdxGrobid.fetch_warc_content', return_value=(FAKE_PDF_BYTES, None))
-@responses.activate
-def test_mapper_rerun(mock_fetch, job):
-
- responses.add(responses.POST, 'http://localhost:8070/api/processFulltextDocument', status=200,
- body=REAL_TEI_XML, content_type='text/xml')
-
- output1 = io.BytesIO()
- job.sandbox(stdin=io.BytesIO(OK_CDX_LINE), stdout=output1)
- job.run_mapper()
- output1 = output1.getvalue().decode('utf-8')
-
- # wayback gets FETCH 1x times
- assert mock_fetch.call_count == 1
- # grobid gets POST 1x times
- assert len(responses.calls) == 1
- # HBase
- assert job.hb_table.row(b'sha1:ABCDEF12345Q2MSVX7XZKYAYSCX5QBYJ') != {}
- assert 'success' in output1
-
- # Run again, same line
- output2 = io.BytesIO()
- job.sandbox(stdin=io.BytesIO(OK_CDX_LINE), stdout=output2)
- job.run_mapper()
- output2 = output2.getvalue().decode('utf-8')
-
- # wayback still only FETCH 1x times
- assert mock_fetch.call_count == 1
- # grobid still only POST 1x times
- assert len(responses.calls) == 1
- assert 'existing' in output2
-
-@mock.patch('extraction_cdx_grobid.MRExtractCdxGrobid.fetch_warc_content', return_value=(FAKE_PDF_BYTES, None))
-@responses.activate
-def test_mapper_previously_backfilled(mock_fetch, job):
-
- responses.add(responses.POST, 'http://localhost:8070/api/processFulltextDocument', status=200,
- body=REAL_TEI_XML, content_type='text/xml')
-
- job.hb_table.put(b'sha1:ABCDEF12345Q2MSVX7XZKYAYSCX5QBYJ',
- {b'f:c': b'{"some": "dict"}', b'file:col': b'bogus'})
- assert job.hb_table.row(b'sha1:ABCDEF12345Q2MSVX7XZKYAYSCX5QBYJ') != {}
-
- output1 = io.BytesIO()
- job.sandbox(stdin=io.BytesIO(OK_CDX_LINE), stdout=output1)
- job.run_mapper()
- output1 = output1.getvalue().decode('utf-8')
-
- # wayback gets FETCH 1x times
- assert mock_fetch.call_count == 1
- # grobid gets POST 1x times
- assert len(responses.calls) == 1
- assert 'success' in output1
diff --git a/mapreduce/tests/test_grobid2json.py b/mapreduce/tests/test_grobid2json.py
deleted file mode 100644
index 8497b10..0000000
--- a/mapreduce/tests/test_grobid2json.py
+++ /dev/null
@@ -1,22 +0,0 @@
-
-import xml
-import json
-import pytest
-from grobid2json import *
-
-
-def test_small_xml():
-
- with open('tests/files/small.xml', 'r') as f:
- tei_xml = f.read()
- with open('tests/files/small.json', 'r') as f:
- json_form = json.loads(f.read())
-
- assert teixml2json(tei_xml) == json_form
-
-def test_invalid_xml():
-
- with pytest.raises(xml.etree.ElementTree.ParseError):
- teixml2json("this is not XML")
- with pytest.raises(ValueError):
- teixml2json("<xml></xml>")
diff --git a/mapreduce/xml2json.py b/mapreduce/xml2json.py
deleted file mode 100644
index df5064f..0000000
--- a/mapreduce/xml2json.py
+++ /dev/null
@@ -1,7 +0,0 @@
-
-import json
-import xmltodict
-
-with open('tests/files/23b29ea36382680716be08fc71aa81bd226e8a85.xml', 'rb') as f:
- thing = xmltodict.parse(f, process_namespaces=False)
- print(json.dumps(thing))