{"id":34119967,"url":"https://github.com/amasotti/extract_classifications","last_synced_at":"2026-03-09T08:32:27.208Z","repository":{"id":57632915,"uuid":"333411076","full_name":"amasotti/extract_classifications","owner":"amasotti","description":"Extract classifications from the k10+ opac","archived":false,"fork":false,"pushed_at":"2021-01-31T18:08:01.000Z","size":460,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2023-07-12T10:39:47.595Z","etag":null,"topics":["ddc","gbv","golang","library-catalogue","rvk"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/amasotti.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-01-27T12:20:54.000Z","updated_at":"2023-07-12T10:39:47.596Z","dependencies_parsed_at":"2022-08-31T16:31:28.383Z","dependency_job_id":null,"html_url":"https://github.com/amasotti/extract_classifications","commit_stats":null,"previous_names":[],"tags_count":0,"template":null,"template_full_name":null,"purl":"pkg:github/amasotti/extract_classifications","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amasotti%2Fextract_classifications","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amasotti%2Fextract_classifications/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amasotti%2Fextract_classifications/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amasotti%2Fextract_classifications/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/amasotti","download_url":"https://codeload.github.com/amasotti/extract_classifications/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amasotti%2Fextract_classifications/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30287841,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-09T02:57:19.223Z","status":"ssl_error","status_checked_at":"2026-03-09T02:56:26.373Z","response_time":61,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ddc","gbv","golang","library-catalogue","rvk"],"created_at":"2025-12-14T21:22:59.041Z","updated_at":"2026-03-09T08:32:27.197Z","avatar_url":"https://github.com/amasotti.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Classify (K10+)\n\n**Work in progress**\n\n\nThe idea is to create a small flexible tool to extract library classifications (rvk, bkl, ddc, lcc) from the GVK Catalogue given a query (keyword, title, author etc...)\n\n+ [Sru](https://wiki.k10plus.de/display/K10PLUS/SRU) address\n\n      https://sru.k10plus.de/gvk\n\n\nThe SRU protocol supports several output formats. This scritp works (at moment at least) only with the [MODS](https://en.wikipedia.org/wiki/Metadata_Object_Description_Schema) format.\n\nThis is a personal project, created mostly for fun, to learn Go and to make some of my daily-tasks easier. It is not perfect at all\nbut feel free to play with the code or suggest me improvements. Install the code (with correctly installed GO environment) in your directory using\n\n        go get github.com/extract_classifications\n\nBuild the binary with\n\n        go build main.go\n\nPlay with it ;) \n\n#### Usage:\n\n```\nUsage:\n$ klassify_10.exe  + parameters (at least -q):\n\n    -k               query Key (bkl, tit, per, slw (default: all)\n    -q               query String (the text to search)\n    -v               verbose (bool) prints everything on the console, not recommended (debug purpose only)\n    -s               save (bool) if true saves the retrieved xml and the json output files (default : false)\n    -n               number of Results (integer) specifiers how many results will be printed on the console\n    -p               path (string) which subdirectory of the current working directory will be used to save the files (works only if -s is set)             \n    -m               maxResult how many entries should be retrieved\n\n```\n\n## Subjects Headings\n\n### Authority:\n\n+ **bkl** : [Basisklassifikation](https://www.gbv.de/bibliotheken/verbundbibliotheken/02Verbund/01Erschliessung/02Richtlinien/05Basisklassifikation/index)\n+ **bisacsh** : [BISAC Subject Headings](https://bisg.org/page/bisacedition)\n+ **bicss** : [BIC Subject Categories](https://bic.org.uk/files/pdfs/101201%20bic2.1%20complete%20rev.pdf)\n+ **ddc** : Dewey Class or Division\n+ **fid** : Fachinformationsdienst\n+ **lcsh** : [Library of Congress Subject Headings](https://id.loc.gov/vocabulary/subjectSchemes/bisacsh.html)\n+ **rvk** : [Regensburger Verbundsklassifikation](https://rvk.uni-regensburg.de/regensburger-verbundklassifikation-online)\n\nCheck [loc.gov](https://www.loc.gov/standards/sourcelist/subject.html) for a complete list of authority codes.\n\n\n### Example of raw data in MODS format:\n\nsee [test example](https://github.com/amasotti/k10_classify/blob/main/testXML.xml)\n\n\n## Output examples:\n\n### Json output example\n\n#### Classification\n\n```json\n{\n\t\"lcc\": {\n\t\t\"AG\": 1,\n\t\t\"B\": 2,\n\t\t\"B1-5802\": 1,\n                ...\n\t},\n\t\"ddc\": {\n\t\t\"000\": 6,\n\t\t\"001\": 1,\n\t\t\"001.51\": 1,\n                ...\n\t},\n\t\"bisacsh\": {},\n\t\"BISAC\": {\n\t\t\"ART 043000\": 1,\n\t\t\"ART015000\": 2,\n\t\t\"ART015100\": 1,\n\t\t          ...\n\t},\n\t\"bkl\": {\n\t\t\"02.01\": 3,\n\t\t\"02.02\": 1,\n\t\t\"02.13\": 4,\n\t\t          ...\n\t},\n\t\"rvk\": {\n\t\t\"AK 18000\": 2,\n\t\t\"AK 39500\": 2,\n\t\t\"AK 39540\": 1,\n                  ...\n\t}\n}\n\n```\n\n\n\n\n### Console output\n\n\u003cpre\u003e\n$ go run  main.go -k swl -q \"Umberto Eco\" -m 580\n\n2021/01/28 16:21:14 GET https://sru.gbv.de/gvk?version=1.1\u0026operation=searchRetrieve\u0026query=pica.all=Umberto%20Eco\u0026recordSchema=mods\u0026maximumRecords=580\n\n\u003cstrong\u003eNumber of results: 580\u003c/strong\u003e\n------------------------------------------------------------------\nSUBJECT HEADINGS\n------------------------------------------------------------------\n\nPrinting the 5 most common Subject Headings for your query:\n\nGeschichte : 54\nLiteratur : 39\nSemiotik : 28\nCriticism and interpretation : 27\nKunst : 26\n20th century : 25\nHistory and criticism : 24\n\n\nCLASSIFICATIONS\n------------------------------------------------------------------\nThe 7 most common Lcc classifications for your query\n\nPQ4865.C6 : 41\nPQ : 18\nPN : 10\nP99 : 7\nPN241 : 5\nD : 3\nBH81 : 3\n\nThe 7 most common Ddc classifications for your query\n\n850 : 40\n853 : 24\n800 : 19\n850 B : 19\n853.914 : 15\n700 : 14\n809 : 14\n\nThe 7 most common BISAC classifications for your query\n\nLIT004200 : 2\nLIT006000 : 2\nLIT 006000 : 2\nLIT000000 : 2\nART015000 : 2\nLIT 004200 : 2\nPOL 019000 : 1\n\nThe 7 most common Bkl classifications for your query\n\n18.27 : 118\n17.97 : 79\n18.00 : 44\n20.06 : 22\n17.73 : 15\n17.08 : 15\n08.41 : 11\n\nThe 7 most common Rvk classifications for your query\n\nIV 25480 : 108\nIV 25481 : 35\nLH 61040 : 15\nCC 6900 : 14\nAK 39580 : 8\nER 730 : 8\nEC 1070 : 7\n\n\u003c/pre\u003e\n\n\n## ToDO\n\n+ \u003cdel\u003eUse ```net/http``` to download the xml from the web instead of loading it manually (or possibly leave both options open)\u003c/del\u003e\n+ \u003cdel\u003eAllow multiple keywords separated by AND\u003c/del\u003e\n      slw : \"Umberto Eco AND Semiotik\"\n+ \u003cdel\u003eAllow for more than one query key (at moment only slw *Schlagwort* possible)\u003c/del\u003e\n    + Allow more than one key at the same time\n+ Give a closer look at the Go idiomatic way of initializing new structs and saving values passing them to the pointers\n+ \u003cdel\u003eImplement or use a counter to see if some keywords (Schlagwörter) are used more than other\u003c/del\u003e\n  + \u003cdel\u003eStill to do : sort the mapping\u003c/del\u003e \n\n## Other databases\n\n# B3Kat (Berlin-Brandenburg)\n\n\t\thttp://bvbr.bib-bvb.de:5661/bvb01sru?version=1.1\u0026recordSchema=marcxml\u0026operation=searchRetrieve\u0026query=marcxml.subject=Umberto%20Eco\u0026maximumRecords=20\n\n[Beispiele](https://www.bib-bvb.de/documents/10792/7b1d3097-4895-4e94-a016-516ac765e15f)\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famasotti%2Fextract_classifications","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Famasotti%2Fextract_classifications","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famasotti%2Fextract_classifications/lists"}