relaton 2.2.0.pre.alpha.1 → 3.0.0.pre.alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/{docs/README.adoc → README.adoc} +109 -38
- data/lib/relaton/3gpp/bibdata.rb +9 -0
- data/lib/relaton/3gpp/bibitem.rb +9 -0
- data/lib/relaton/3gpp/bibliography.rb +48 -0
- data/lib/relaton/3gpp/data_fetcher.rb +255 -0
- data/lib/relaton/3gpp/doctype.rb +9 -0
- data/lib/relaton/3gpp/ext.rb +31 -0
- data/lib/relaton/3gpp/item.rb +12 -0
- data/lib/relaton/3gpp/item_data.rb +15 -0
- data/lib/relaton/3gpp/parser.rb +400 -0
- data/lib/relaton/3gpp/processor.rb +68 -0
- data/lib/relaton/3gpp/release.rb +34 -0
- data/lib/relaton/3gpp/util.rb +8 -0
- data/lib/relaton/3gpp.rb +25 -0
- data/lib/relaton/bib/converter/asciibib/to_asciibib.rb +663 -0
- data/lib/relaton/bib/converter/asciibib.rb +13 -0
- data/lib/relaton/bib/converter/bibtex/from_bibtex.rb +245 -0
- data/lib/relaton/bib/converter/bibtex/to_bibtex.rb +341 -0
- data/lib/relaton/bib/converter/bibtex.rb +23 -0
- data/lib/relaton/bib/converter/bibxml/from_rfcxml.rb +386 -0
- data/lib/relaton/bib/converter/bibxml/from_rfcxml_referencegroup.rb +71 -0
- data/lib/relaton/bib/converter/bibxml/to_rfcxml.rb +308 -0
- data/lib/relaton/bib/converter/bibxml/to_rfcxml_referencegroup.rb +52 -0
- data/lib/relaton/bib/converter/bibxml.rb +51 -0
- data/lib/relaton/bib/hash_parser_v1.rb +767 -0
- data/lib/relaton/bib/item_data.rb +229 -0
- data/lib/relaton/bib/model/abstract.rb +16 -0
- data/lib/relaton/bib/model/address.rb +22 -0
- data/lib/relaton/bib/model/affiliation.rb +16 -0
- data/lib/relaton/bib/model/bibdata.rb +11 -0
- data/lib/relaton/bib/model/bibdata_shared.rb +12 -0
- data/lib/relaton/bib/model/bibitem.rb +11 -0
- data/lib/relaton/bib/model/bibitem_shared.rb +12 -0
- data/lib/relaton/bib/model/contact.rb +18 -0
- data/lib/relaton/bib/model/contribution_info.rb +15 -0
- data/lib/relaton/bib/model/contributor.rb +29 -0
- data/lib/relaton/bib/model/copyright.rb +27 -0
- data/lib/relaton/bib/model/date.rb +31 -0
- data/lib/relaton/bib/model/depiction.rb +16 -0
- data/lib/relaton/bib/model/docidentifier.rb +34 -0
- data/lib/relaton/bib/model/doctype.rb +14 -0
- data/lib/relaton/bib/model/edition.rb +14 -0
- data/lib/relaton/bib/model/ext.rb +39 -0
- data/lib/relaton/bib/model/extent.rb +16 -0
- data/lib/relaton/bib/model/formattedref.rb +43 -0
- data/lib/relaton/bib/model/full_name_type.rb +64 -0
- data/lib/relaton/bib/model/fullname.rb +11 -0
- data/lib/relaton/bib/model/ics.rb +49 -0
- data/lib/relaton/bib/model/image.rb +28 -0
- data/lib/relaton/bib/model/item.rb +96 -0
- data/lib/relaton/bib/model/item_base.rb +20 -0
- data/lib/relaton/bib/model/item_shared.rb +88 -0
- data/lib/relaton/bib/model/keyword.rb +30 -0
- data/lib/relaton/bib/model/locality.rb +18 -0
- data/lib/relaton/bib/model/locality_stack.rb +14 -0
- data/lib/relaton/bib/model/localized_string.rb +48 -0
- data/lib/relaton/bib/model/localized_string_attrs.rb +24 -0
- data/lib/relaton/bib/model/logo.rb +14 -0
- data/lib/relaton/bib/model/medium.rb +22 -0
- data/lib/relaton/bib/model/note.rb +16 -0
- data/lib/relaton/bib/model/organization.rb +13 -0
- data/lib/relaton/bib/model/organization_type.rb +42 -0
- data/lib/relaton/bib/model/person.rb +36 -0
- data/lib/relaton/bib/model/phone.rb +14 -0
- data/lib/relaton/bib/model/place.rb +33 -0
- data/lib/relaton/bib/model/price.rb +14 -0
- data/lib/relaton/bib/model/relation.rb +43 -0
- data/lib/relaton/bib/model/series.rb +34 -0
- data/lib/relaton/bib/model/size.rb +23 -0
- data/lib/relaton/bib/model/source_locality_stack.rb +14 -0
- data/lib/relaton/bib/model/status.rb +27 -0
- data/lib/relaton/bib/model/structured_identifier.rb +48 -0
- data/lib/relaton/bib/model/subdivision.rb +16 -0
- data/lib/relaton/bib/model/title.rb +56 -0
- data/lib/relaton/bib/model/type/plain_date.rb +16 -0
- data/lib/relaton/bib/model/type/string_date.rb +48 -0
- data/lib/relaton/bib/model/uri.rb +18 -0
- data/lib/relaton/bib/model/validity.rb +16 -0
- data/lib/relaton/bib/model/version.rb +43 -0
- data/lib/relaton/bib/namespace_helper.rb +21 -0
- data/lib/relaton/bib/sanitizer.rb +68 -0
- data/lib/relaton/bib/util.rb +18 -0
- data/lib/relaton/bib/versions.json +35 -0
- data/lib/relaton/bib.rb +48 -0
- data/lib/relaton/bipm/bibliography.rb +82 -0
- data/lib/relaton/bipm/converter/asciibib.rb +64 -0
- data/lib/relaton/bipm/data_fetcher.rb +57 -0
- data/lib/relaton/bipm/data_outcomes_parser.rb +657 -0
- data/lib/relaton/bipm/id_parser.rb +277 -0
- data/lib/relaton/bipm/item_data.rb +47 -0
- data/lib/relaton/bipm/model/bibdata.rb +9 -0
- data/lib/relaton/bipm/model/bibitem.rb +9 -0
- data/lib/relaton/bipm/model/comment_period.rb +13 -0
- data/lib/relaton/bipm/model/doctype.rb +12 -0
- data/lib/relaton/bipm/model/ext.rb +38 -0
- data/lib/relaton/bipm/model/item.rb +11 -0
- data/lib/relaton/bipm/model/structured_identifier.rb +15 -0
- data/lib/relaton/bipm/processor.rb +69 -0
- data/lib/relaton/bipm/rawdata_bipm_metrologia/affiliations.rb +111 -0
- data/lib/relaton/bipm/rawdata_bipm_metrologia/fetcher.rb +174 -0
- data/lib/relaton/bipm/rawdata_bipm_metrologia/niso_jats_parser.rb +353 -0
- data/lib/relaton/bipm/si_brochure_parser.rb +186 -0
- data/lib/relaton/bipm/util.rb +8 -0
- data/lib/relaton/bipm.rb +32 -0
- data/lib/relaton/bsi/bibliography.rb +124 -0
- data/lib/relaton/bsi/hit.rb +14 -0
- data/lib/relaton/bsi/hit_collection.rb +114 -0
- data/lib/relaton/bsi/item_data.rb +13 -0
- data/lib/relaton/bsi/model/bibdata.rb +8 -0
- data/lib/relaton/bsi/model/bibitem.rb +8 -0
- data/lib/relaton/bsi/model/docidentifier.rb +9 -0
- data/lib/relaton/bsi/model/doctype.rb +14 -0
- data/lib/relaton/bsi/model/ext.rb +17 -0
- data/lib/relaton/bsi/model/item.rb +17 -0
- data/lib/relaton/bsi/model/item_base.rb +22 -0
- data/lib/relaton/bsi/model/relation.rb +9 -0
- data/lib/relaton/bsi/processor.rb +42 -0
- data/lib/relaton/bsi/schema.json +24882 -0
- data/lib/relaton/bsi/scraper.rb +288 -0
- data/lib/relaton/bsi/util.rb +8 -0
- data/lib/relaton/bsi.rb +25 -0
- data/lib/relaton/calconnect/bibliography.rb +95 -0
- data/lib/relaton/calconnect/data_fetcher.rb +106 -0
- data/lib/relaton/calconnect/hit.rb +14 -0
- data/lib/relaton/calconnect/hit_collection.rb +84 -0
- data/lib/relaton/calconnect/item_data.rb +12 -0
- data/lib/relaton/calconnect/model/bibdata.rb +8 -0
- data/lib/relaton/calconnect/model/bibitem.rb +8 -0
- data/lib/relaton/calconnect/model/doctype.rb +11 -0
- data/lib/relaton/calconnect/model/ext.rb +11 -0
- data/lib/relaton/calconnect/model/item.rb +13 -0
- data/lib/relaton/calconnect/processor.rb +66 -0
- data/lib/relaton/calconnect/scraper.rb +87 -0
- data/lib/relaton/calconnect/util.rb +8 -0
- data/lib/relaton/calconnect.rb +26 -0
- data/lib/relaton/ccsds/bibliography.rb +63 -0
- data/lib/relaton/ccsds/data/fetcher.rb +247 -0
- data/lib/relaton/ccsds/data/iso_references.rb +30 -0
- data/lib/relaton/ccsds/data/parser.rb +194 -0
- data/lib/relaton/ccsds/hit.rb +24 -0
- data/lib/relaton/ccsds/hit_collection.rb +42 -0
- data/lib/relaton/ccsds/item_data.rb +9 -0
- data/lib/relaton/ccsds/model/bibdata.rb +8 -0
- data/lib/relaton/ccsds/model/bibitem.rb +8 -0
- data/lib/relaton/ccsds/model/doctype.rb +9 -0
- data/lib/relaton/ccsds/model/ext.rb +19 -0
- data/lib/relaton/ccsds/model/item.rb +13 -0
- data/lib/relaton/ccsds/processor.rb +68 -0
- data/lib/relaton/ccsds/util.rb +10 -0
- data/lib/relaton/ccsds.rb +33 -0
- data/lib/relaton/cen/bibliography.rb +121 -0
- data/lib/relaton/cen/committees.yaml +66 -0
- data/lib/relaton/cen/hit.rb +16 -0
- data/lib/relaton/cen/hit_collection.rb +68 -0
- data/lib/relaton/cen/item_data.rb +7 -0
- data/lib/relaton/cen/model/bibdata.rb +8 -0
- data/lib/relaton/cen/model/bibitem.rb +8 -0
- data/lib/relaton/cen/model/docidentifier.rb +9 -0
- data/lib/relaton/cen/model/ext.rb +11 -0
- data/lib/relaton/cen/model/item.rb +14 -0
- data/lib/relaton/cen/model/structured_identifier.rb +9 -0
- data/lib/relaton/cen/processor.rb +40 -0
- data/lib/relaton/cen/scraper.rb +210 -0
- data/lib/relaton/cen/util.rb +8 -0
- data/lib/relaton/cen.rb +29 -0
- data/lib/relaton/cie/bibdata.rb +8 -0
- data/lib/relaton/cie/bibitem.rb +8 -0
- data/lib/relaton/cie/bibliography.rb +31 -0
- data/lib/relaton/cie/data_fetcher.rb +355 -0
- data/lib/relaton/cie/ext.rb +7 -0
- data/lib/relaton/cie/item.rb +11 -0
- data/lib/relaton/cie/item_data.rb +6 -0
- data/lib/relaton/cie/processor.rb +66 -0
- data/lib/relaton/cie/scrapper.rb +39 -0
- data/lib/relaton/cie/util.rb +8 -0
- data/lib/relaton/cie.rb +28 -0
- data/lib/relaton/core/array_wrapper.rb +20 -0
- data/lib/relaton/core/data_fetcher.rb +97 -0
- data/lib/relaton/core/date_parser.rb +42 -0
- data/lib/relaton/core/hash_keys_sybolizer.rb +19 -0
- data/lib/relaton/core/hit.rb +49 -0
- data/lib/relaton/core/hit_collection.rb +118 -0
- data/lib/relaton/core/processor.rb +48 -0
- data/lib/relaton/core/workers_pool.rb +45 -0
- data/lib/relaton/core.rb +9 -0
- data/lib/relaton/db/registry.rb +4 -4
- data/lib/relaton/db.rb +0 -1
- data/lib/relaton/doi/crossref.rb +72 -0
- data/lib/relaton/doi/parser.rb +827 -0
- data/lib/relaton/doi/processor.rb +65 -0
- data/lib/relaton/doi/util.rb +8 -0
- data/lib/relaton/doi.rb +20 -0
- data/lib/relaton/ecma/bibdata.rb +8 -0
- data/lib/relaton/ecma/bibitem.rb +8 -0
- data/lib/relaton/ecma/bibliography.rb +81 -0
- data/lib/relaton/ecma/data_fetcher.rb +103 -0
- data/lib/relaton/ecma/data_parser.rb +49 -0
- data/lib/relaton/ecma/edition_parser.rb +80 -0
- data/lib/relaton/ecma/ext.rb +7 -0
- data/lib/relaton/ecma/item.rb +11 -0
- data/lib/relaton/ecma/item_data.rb +6 -0
- data/lib/relaton/ecma/memento_parser.rb +60 -0
- data/lib/relaton/ecma/page_fetcher.rb +27 -0
- data/lib/relaton/ecma/parser_common.rb +33 -0
- data/lib/relaton/ecma/processor.rb +66 -0
- data/lib/relaton/ecma/standard_parser.rb +134 -0
- data/lib/relaton/ecma/util.rb +8 -0
- data/lib/relaton/ecma.rb +24 -0
- data/lib/relaton/etsi/bibdata.rb +10 -0
- data/lib/relaton/etsi/bibitem.rb +10 -0
- data/lib/relaton/etsi/bibliography.rb +46 -0
- data/lib/relaton/etsi/data_fetcher.rb +128 -0
- data/lib/relaton/etsi/data_parser.rb +208 -0
- data/lib/relaton/etsi/doctype.rb +30 -0
- data/lib/relaton/etsi/ext.rb +31 -0
- data/lib/relaton/etsi/item.rb +15 -0
- data/lib/relaton/etsi/item_data.rb +6 -0
- data/lib/relaton/etsi/processor.rb +69 -0
- data/lib/relaton/etsi/pubid.rb +37 -0
- data/lib/relaton/etsi/status.rb +13 -0
- data/lib/relaton/etsi/util.rb +8 -0
- data/lib/relaton/etsi.rb +25 -0
- data/lib/relaton/gb/bibdata.rb +8 -0
- data/lib/relaton/gb/bibitem.rb +8 -0
- data/lib/relaton/gb/bibliography.rb +145 -0
- data/lib/relaton/gb/ccs.rb +14 -0
- data/lib/relaton/gb/committee.rb +13 -0
- data/lib/relaton/gb/docidentifier.rb +23 -0
- data/lib/relaton/gb/doctype.rb +9 -0
- data/lib/relaton/gb/ext.rb +36 -0
- data/lib/relaton/gb/gb_scraper.rb +61 -0
- data/lib/relaton/gb/gb_type.rb +20 -0
- data/lib/relaton/gb/hit.rb +48 -0
- data/lib/relaton/gb/hit_collection.rb +19 -0
- data/lib/relaton/gb/item.rb +13 -0
- data/lib/relaton/gb/item_data.rb +6 -0
- data/lib/relaton/gb/processor.rb +46 -0
- data/lib/relaton/gb/project_number.rb +38 -0
- data/lib/relaton/gb/scraper.rb +204 -0
- data/lib/relaton/gb/sec_scraper.rb +92 -0
- data/lib/relaton/gb/stage_name.rb +13 -0
- data/lib/relaton/gb/structured_identifier.rb +26 -0
- data/lib/relaton/gb/t_scraper.rb +126 -0
- data/lib/relaton/gb/util.rb +8 -0
- data/lib/relaton/gb/yaml/prefixes.yaml +200 -0
- data/lib/relaton/gb.rb +33 -0
- data/lib/relaton/iana/bibdata.rb +8 -0
- data/lib/relaton/iana/bibitem.rb +8 -0
- data/lib/relaton/iana/bibliography.rb +47 -0
- data/lib/relaton/iana/data_fetcher.rb +71 -0
- data/lib/relaton/iana/item.rb +7 -0
- data/lib/relaton/iana/item_data.rb +6 -0
- data/lib/relaton/iana/parser.rb +146 -0
- data/lib/relaton/iana/processor.rb +68 -0
- data/lib/relaton/iana/util.rb +8 -0
- data/lib/relaton/iana.rb +29 -0
- data/lib/relaton/iec/bibliography.rb +283 -0
- data/lib/relaton/iec/data_fetcher.rb +216 -0
- data/lib/relaton/iec/data_parser.rb +391 -0
- data/lib/relaton/iec/hit.rb +26 -0
- data/lib/relaton/iec/hit_collection.rb +138 -0
- data/lib/relaton/iec/item_data.rb +7 -0
- data/lib/relaton/iec/model/bibdata.rb +8 -0
- data/lib/relaton/iec/model/bibitem.rb +8 -0
- data/lib/relaton/iec/model/docidentifier.rb +131 -0
- data/lib/relaton/iec/model/doctype.rb +12 -0
- data/lib/relaton/iec/model/ext.rb +53 -0
- data/lib/relaton/iec/model/item.rb +20 -0
- data/lib/relaton/iec/model/item_base.rb +12 -0
- data/lib/relaton/iec/model/relation.rb +7 -0
- data/lib/relaton/iec/model/stage_name.rb +13 -0
- data/lib/relaton/iec/processor.rb +73 -0
- data/lib/relaton/iec/statuses.yml +199 -0
- data/lib/relaton/iec/util.rb +8 -0
- data/lib/relaton/iec.rb +98 -0
- data/lib/relaton/ieee/balloting_group.rb +13 -0
- data/lib/relaton/ieee/bibdata.rb +8 -0
- data/lib/relaton/ieee/bibitem.rb +8 -0
- data/lib/relaton/ieee/bibliography.rb +51 -0
- data/lib/relaton/ieee/converter/bibxml/from_rfcxml.rb +10 -0
- data/lib/relaton/ieee/converter/bibxml/from_rfcxml_referencegroup.rb +10 -0
- data/lib/relaton/ieee/converter/bibxml.rb +20 -0
- data/lib/relaton/ieee/data_fetcher.rb +630 -0
- data/lib/relaton/ieee/doctype.rb +9 -0
- data/lib/relaton/ieee/editorial_group.rb +19 -0
- data/lib/relaton/ieee/ext.rb +36 -0
- data/lib/relaton/ieee/idams_parser.rb +323 -0
- data/lib/relaton/ieee/item.rb +11 -0
- data/lib/relaton/ieee/item_data.rb +7 -0
- data/lib/relaton/ieee/processor.rb +68 -0
- data/lib/relaton/ieee/pub_id.rb +161 -0
- data/lib/relaton/ieee/rawbib_id_parser.rb +548 -0
- data/lib/relaton/ieee/util.rb +8 -0
- data/lib/relaton/ieee.rb +29 -0
- data/lib/relaton/ietf/bibdata.rb +8 -0
- data/lib/relaton/ietf/bibitem.rb +8 -0
- data/lib/relaton/ietf/bibliography.rb +35 -0
- data/lib/relaton/ietf/bibxml_parser.rb +232 -0
- data/lib/relaton/ietf/data_fetcher.rb +278 -0
- data/lib/relaton/ietf/doctype.rb +9 -0
- data/lib/relaton/ietf/ext.rb +63 -0
- data/lib/relaton/ietf/item.rb +16 -0
- data/lib/relaton/ietf/item_base.rb +18 -0
- data/lib/relaton/ietf/item_data.rb +6 -0
- data/lib/relaton/ietf/processing_instructions.rb +79 -0
- data/lib/relaton/ietf/processor.rb +68 -0
- data/lib/relaton/ietf/relation.rb +9 -0
- data/lib/relaton/ietf/rfc/abstract.rb +19 -0
- data/lib/relaton/ietf/rfc/author.rb +21 -0
- data/lib/relaton/ietf/rfc/entry.rb +410 -0
- data/lib/relaton/ietf/rfc/entry_date.rb +21 -0
- data/lib/relaton/ietf/rfc/format.rb +19 -0
- data/lib/relaton/ietf/rfc/index.rb +46 -0
- data/lib/relaton/ietf/rfc/is_also.rb +21 -0
- data/lib/relaton/ietf/rfc/keywords.rb +19 -0
- data/lib/relaton/ietf/rfc/rfc_index_namespace.rb +11 -0
- data/lib/relaton/ietf/scraper.rb +68 -0
- data/lib/relaton/ietf/util.rb +8 -0
- data/lib/relaton/ietf/wg_name_resolver.rb +42 -0
- data/lib/relaton/ietf.rb +27 -0
- data/lib/relaton/iho/bibdata.rb +8 -0
- data/lib/relaton/iho/bibitem.rb +8 -0
- data/lib/relaton/iho/bibliography.rb +114 -0
- data/lib/relaton/iho/comment_period.rb +13 -0
- data/lib/relaton/iho/docidentifier.rb +31 -0
- data/lib/relaton/iho/doctype.rb +10 -0
- data/lib/relaton/iho/ext.rb +20 -0
- data/lib/relaton/iho/hash_parser_v1.rb +144 -0
- data/lib/relaton/iho/item.rb +20 -0
- data/lib/relaton/iho/item_base.rb +18 -0
- data/lib/relaton/iho/item_data.rb +6 -0
- data/lib/relaton/iho/processor.rb +54 -0
- data/lib/relaton/iho/relation.rb +9 -0
- data/lib/relaton/iho/structured_identifier.rb +20 -0
- data/lib/relaton/iho/util.rb +8 -0
- data/lib/relaton/iho.rb +27 -0
- data/lib/relaton/index/config.rb +52 -0
- data/lib/relaton/index/file_io.rb +305 -0
- data/lib/relaton/index/file_storage.rb +61 -0
- data/lib/relaton/index/id_number.rb +30 -0
- data/lib/relaton/index/pool.rb +41 -0
- data/lib/relaton/index/type.rb +159 -0
- data/lib/relaton/index/util.rb +18 -0
- data/lib/relaton/index.rb +60 -0
- data/lib/relaton/isbn/isbn.rb +61 -0
- data/lib/relaton/isbn/open_library.rb +43 -0
- data/lib/relaton/isbn/parser.rb +88 -0
- data/lib/relaton/isbn/processor.rb +48 -0
- data/lib/relaton/isbn/util.rb +8 -0
- data/lib/relaton/isbn.rb +19 -0
- data/lib/relaton/iso/bibliography.rb +407 -0
- data/lib/relaton/iso/data_fetcher.rb +338 -0
- data/lib/relaton/iso/data_parser.rb +444 -0
- data/lib/relaton/iso/hash_parser_v1.rb +177 -0
- data/lib/relaton/iso/hit.rb +57 -0
- data/lib/relaton/iso/hit_collection.rb +184 -0
- data/lib/relaton/iso/item_data.rb +28 -0
- data/lib/relaton/iso/model/bibdata.rb +10 -0
- data/lib/relaton/iso/model/bibitem.rb +8 -0
- data/lib/relaton/iso/model/contributor.rb +6 -0
- data/lib/relaton/iso/model/contributor_info.rb +9 -0
- data/lib/relaton/iso/model/docidentifier.rb +134 -0
- data/lib/relaton/iso/model/doctype.rb +13 -0
- data/lib/relaton/iso/model/ext.rb +35 -0
- data/lib/relaton/iso/model/item.rb +17 -0
- data/lib/relaton/iso/model/item_base.rb +22 -0
- data/lib/relaton/iso/model/organization.rb +9 -0
- data/lib/relaton/iso/model/project_number.rb +22 -0
- data/lib/relaton/iso/model/relation.rb +9 -0
- data/lib/relaton/iso/model/stagename.rb +14 -0
- data/lib/relaton/iso/model/structured_identifier.rb +31 -0
- data/lib/relaton/iso/processor.rb +84 -0
- data/lib/relaton/iso/scraper.rb +619 -0
- data/lib/relaton/iso/type/pubid.rb +50 -0
- data/lib/relaton/iso/util.rb +8 -0
- data/lib/relaton/iso.rb +30 -0
- data/lib/relaton/itu/bibliography.rb +90 -0
- data/lib/relaton/itu/data_fetcher.rb +104 -0
- data/lib/relaton/itu/data_parser_r.rb +140 -0
- data/lib/relaton/itu/hit.rb +22 -0
- data/lib/relaton/itu/hit_collection.rb +127 -0
- data/lib/relaton/itu/item_data.rb +6 -0
- data/lib/relaton/itu/model/approval_stage.rb +13 -0
- data/lib/relaton/itu/model/bibdata.rb +8 -0
- data/lib/relaton/itu/model/bibitem.rb +8 -0
- data/lib/relaton/itu/model/docidentifier.rb +9 -0
- data/lib/relaton/itu/model/doctype.rb +13 -0
- data/lib/relaton/itu/model/ext.rb +47 -0
- data/lib/relaton/itu/model/item.rb +13 -0
- data/lib/relaton/itu/model/meeting.rb +13 -0
- data/lib/relaton/itu/model/meeting_date.rb +15 -0
- data/lib/relaton/itu/model/question.rb +13 -0
- data/lib/relaton/itu/model/recommendation_status.rb +11 -0
- data/lib/relaton/itu/model/structured_identifier.rb +19 -0
- data/lib/relaton/itu/processor.rb +66 -0
- data/lib/relaton/itu/pubid.rb +177 -0
- data/lib/relaton/itu/radio_regulations_parser.rb +70 -0
- data/lib/relaton/itu/recommendation_parser.rb +161 -0
- data/lib/relaton/itu/scraper.rb +193 -0
- data/lib/relaton/itu/util.rb +8 -0
- data/lib/relaton/itu.rb +33 -0
- data/lib/relaton/jis/bibdata.rb +8 -0
- data/lib/relaton/jis/bibitem.rb +8 -0
- data/lib/relaton/jis/bibliography.rb +75 -0
- data/lib/relaton/jis/data_fetcher.rb +181 -0
- data/lib/relaton/jis/docidentifier.rb +21 -0
- data/lib/relaton/jis/doctype.rb +9 -0
- data/lib/relaton/jis/ext.rb +13 -0
- data/lib/relaton/jis/hit.rb +93 -0
- data/lib/relaton/jis/hit_collection.rb +127 -0
- data/lib/relaton/jis/item.rb +22 -0
- data/lib/relaton/jis/item_base.rb +26 -0
- data/lib/relaton/jis/item_data.rb +8 -0
- data/lib/relaton/jis/processor.rb +55 -0
- data/lib/relaton/jis/relation.rb +11 -0
- data/lib/relaton/jis/scraper.rb +232 -0
- data/lib/relaton/jis/structured_identifier.rb +13 -0
- data/lib/relaton/jis/util.rb +8 -0
- data/lib/relaton/jis.rb +33 -0
- data/lib/relaton/logger/channels/gh_issue.rb +78 -0
- data/lib/relaton/logger/config.rb +34 -0
- data/lib/relaton/logger/formatter_json.rb +8 -0
- data/lib/relaton/logger/formatter_string.rb +12 -0
- data/lib/relaton/logger/log.rb +64 -0
- data/lib/relaton/logger/log_device.rb +27 -0
- data/lib/relaton/logger/pool.rb +24 -0
- data/lib/relaton/logger.rb +18 -0
- data/lib/relaton/nist/bibdata.rb +8 -0
- data/lib/relaton/nist/bibitem.rb +8 -0
- data/lib/relaton/nist/bibliography.rb +191 -0
- data/lib/relaton/nist/comment_period.rb +15 -0
- data/lib/relaton/nist/data_fetcher.rb +84 -0
- data/lib/relaton/nist/date.rb +7 -0
- data/lib/relaton/nist/doctype.rb +7 -0
- data/lib/relaton/nist/ext.rb +16 -0
- data/lib/relaton/nist/hit.rb +18 -0
- data/lib/relaton/nist/hit_collection.rb +362 -0
- data/lib/relaton/nist/item.rb +17 -0
- data/lib/relaton/nist/item_data.rb +6 -0
- data/lib/relaton/nist/mods_parser.rb +276 -0
- data/lib/relaton/nist/processor.rb +68 -0
- data/lib/relaton/nist/pubs_export.rb +69 -0
- data/lib/relaton/nist/relation.rb +7 -0
- data/lib/relaton/nist/scraper.rb +290 -0
- data/lib/relaton/nist/series.yaml +49 -0
- data/lib/relaton/nist/util.rb +8 -0
- data/lib/relaton/nist.rb +34 -0
- data/lib/relaton/oasis/bibdata.rb +8 -0
- data/lib/relaton/oasis/bibitem.rb +8 -0
- data/lib/relaton/oasis/bibliography.rb +60 -0
- data/lib/relaton/oasis/browser_agent.rb +71 -0
- data/lib/relaton/oasis/data_fetcher.rb +94 -0
- data/lib/relaton/oasis/data_parser.rb +305 -0
- data/lib/relaton/oasis/data_parser_utils.rb +296 -0
- data/lib/relaton/oasis/data_part_parser.rb +239 -0
- data/lib/relaton/oasis/doctype.rb +7 -0
- data/lib/relaton/oasis/ext.rb +19 -0
- data/lib/relaton/oasis/item.rb +11 -0
- data/lib/relaton/oasis/item_data.rb +6 -0
- data/lib/relaton/oasis/processor.rb +68 -0
- data/lib/relaton/oasis/util.rb +8 -0
- data/lib/relaton/oasis.rb +28 -0
- data/lib/relaton/ogc/bibdata.rb +8 -0
- data/lib/relaton/ogc/bibitem.rb +8 -0
- data/lib/relaton/ogc/bibliography.rb +64 -0
- data/lib/relaton/ogc/data_fetcher.rb +110 -0
- data/lib/relaton/ogc/docidentifier.rb +6 -0
- data/lib/relaton/ogc/doctype.rb +12 -0
- data/lib/relaton/ogc/ext.rb +15 -0
- data/lib/relaton/ogc/hit.rb +18 -0
- data/lib/relaton/ogc/hit_collection.rb +36 -0
- data/lib/relaton/ogc/item.rb +13 -0
- data/lib/relaton/ogc/item_data.rb +6 -0
- data/lib/relaton/ogc/processor.rb +58 -0
- data/lib/relaton/ogc/scraper.rb +225 -0
- data/lib/relaton/ogc/util.rb +8 -0
- data/lib/relaton/ogc.rb +26 -0
- data/lib/relaton/oiml/bibdata.rb +8 -0
- data/lib/relaton/oiml/bibitem.rb +8 -0
- data/lib/relaton/oiml/bibliography.rb +94 -0
- data/lib/relaton/oiml/docidentifier.rb +33 -0
- data/lib/relaton/oiml/doctype.rb +13 -0
- data/lib/relaton/oiml/ext.rb +42 -0
- data/lib/relaton/oiml/item.rb +20 -0
- data/lib/relaton/oiml/item_base.rb +18 -0
- data/lib/relaton/oiml/item_data.rb +6 -0
- data/lib/relaton/oiml/processor.rb +54 -0
- data/lib/relaton/oiml/relation.rb +9 -0
- data/lib/relaton/oiml/util.rb +8 -0
- data/lib/relaton/oiml.rb +24 -0
- data/lib/relaton/omg/bibdata.rb +8 -0
- data/lib/relaton/omg/bibitem.rb +8 -0
- data/lib/relaton/omg/bibliography.rb +31 -0
- data/lib/relaton/omg/ext.rb +7 -0
- data/lib/relaton/omg/item.rb +8 -0
- data/lib/relaton/omg/item_data.rb +6 -0
- data/lib/relaton/omg/processor.rb +34 -0
- data/lib/relaton/omg/scraper.rb +141 -0
- data/lib/relaton/omg/util.rb +8 -0
- data/lib/relaton/omg.rb +24 -0
- data/lib/relaton/plateau/bibdata.rb +8 -0
- data/lib/relaton/plateau/bibitem.rb +8 -0
- data/lib/relaton/plateau/bibliography.rb +24 -0
- data/lib/relaton/plateau/data_fetcher.rb +153 -0
- data/lib/relaton/plateau/doctype.rb +7 -0
- data/lib/relaton/plateau/ext.rb +23 -0
- data/lib/relaton/plateau/handbook_parser.rb +95 -0
- data/lib/relaton/plateau/hit.rb +13 -0
- data/lib/relaton/plateau/hit_collection.rb +59 -0
- data/lib/relaton/plateau/item.rb +12 -0
- data/lib/relaton/plateau/item_data.rb +6 -0
- data/lib/relaton/plateau/parser.rb +101 -0
- data/lib/relaton/plateau/processor.rb +49 -0
- data/lib/relaton/plateau/technical_report_parser.rb +91 -0
- data/lib/relaton/plateau/util.rb +8 -0
- data/lib/relaton/plateau.rb +28 -0
- data/lib/relaton/un/bibdata.rb +8 -0
- data/lib/relaton/un/bibitem.rb +8 -0
- data/lib/relaton/un/bibliography.rb +48 -0
- data/lib/relaton/un/doctype.rb +10 -0
- data/lib/relaton/un/ext.rb +30 -0
- data/lib/relaton/un/hit.rb +56 -0
- data/lib/relaton/un/hit_collection.rb +61 -0
- data/lib/relaton/un/item.rb +11 -0
- data/lib/relaton/un/item_data.rb +6 -0
- data/lib/relaton/un/parser.rb +108 -0
- data/lib/relaton/un/processor.rb +38 -0
- data/lib/relaton/un/session.rb +25 -0
- data/lib/relaton/un/token_generator.rb +105 -0
- data/lib/relaton/un/util.rb +8 -0
- data/lib/relaton/un/wasm/decoder.rb +434 -0
- data/lib/relaton/un/wasm/instance.rb +101 -0
- data/lib/relaton/un/wasm/interpreter.rb +613 -0
- data/lib/relaton/un/wasm/memory.rb +112 -0
- data/lib/relaton/un/wasm/module.rb +47 -0
- data/lib/relaton/un/wasm.rb +17 -0
- data/lib/relaton/un/wasm_v_bg.wasm +0 -0
- data/lib/relaton/un.rb +28 -0
- data/lib/relaton/version.rb +1 -1
- data/lib/relaton/w3c/bibdata.rb +8 -0
- data/lib/relaton/w3c/bibitem.rb +8 -0
- data/lib/relaton/w3c/bibliography.rb +54 -0
- data/lib/relaton/w3c/data_fetcher.rb +309 -0
- data/lib/relaton/w3c/data_parser.rb +379 -0
- data/lib/relaton/w3c/doctype.rb +7 -0
- data/lib/relaton/w3c/ext.rb +11 -0
- data/lib/relaton/w3c/item.rb +12 -0
- data/lib/relaton/w3c/item_data.rb +6 -0
- data/lib/relaton/w3c/processor.rb +49 -0
- data/lib/relaton/w3c/pubid.rb +73 -0
- data/lib/relaton/w3c/safe_realize.rb +59 -0
- data/lib/relaton/w3c/util.rb +8 -0
- data/lib/relaton/w3c.rb +25 -0
- data/lib/relaton/xsf/bibdata.rb +8 -0
- data/lib/relaton/xsf/bibitem.rb +8 -0
- data/lib/relaton/xsf/bibliography.rb +24 -0
- data/lib/relaton/xsf/data_fetcher.rb +56 -0
- data/lib/relaton/xsf/hit.rb +17 -0
- data/lib/relaton/xsf/hit_collection.rb +24 -0
- data/lib/relaton/xsf/item.rb +7 -0
- data/lib/relaton/xsf/item_data.rb +6 -0
- data/lib/relaton/xsf/processor.rb +50 -0
- data/lib/relaton/xsf/util.rb +9 -0
- data/lib/relaton/xsf.rb +30 -0
- data/lib/relaton-core.rb +1 -0
- data/lib/relaton.rb +43 -0
- metadata +673 -170
- data/.github/workflows/rake.yml +0 -14
- data/.github/workflows/release.yml +0 -24
- data/.github/workflows/rubocop.yml +0 -48
- data/.gitignore +0 -12
- data/.rspec +0 -3
- data/CLAUDE.md +0 -78
- data/Gemfile +0 -29
- data/Rakefile +0 -6
- data/docs/CHANGELOG.adoc +0 -16
- data/docs/VERSIONING_POLICY.adoc +0 -38
- data/docs/navigation.adoc +0 -6
- data/lib/relaton/db/version.rb +0 -5
- data/relaton.gemspec +0 -72
- data/spec/relaton/config_spec.rb +0 -10
- data/spec/relaton/db_cache_spec.rb +0 -51
- data/spec/relaton/db_spec.rb +0 -567
- data/spec/relaton/registry_spec.rb +0 -178
- data/spec/relaton/util_spec.rb +0 -3
- data/spec/relaton_meta_spec.rb +0 -25
- data/spec/relaton_spec.rb +0 -800
- data/spec/spec_helper.rb +0 -45
- data/spec/support/gb_t_20223_2006.xml +0 -33
- data/spec/support/iso_111111119115_1.xml +0 -0
- data/spec/support/iso_19115_1.xml +0 -115
- data/spec/support/iso_19115_2.xml +0 -95
- data/spec/support/rfc_8341.xml +0 -46
- data/spec/vcr_cassetes/api_relaton_org.yml +0 -121
- data/spec/vcr_cassetes/api_relaton_org_unavailable.yml +0 -140
- data/spec/vcr_cassetes/cc_dir_10005_2019.yml +0 -202
- data/spec/vcr_cassetes/cipm_meeting_43.yml +0 -1505
- data/spec/vcr_cassetes/gb_t_20223_2006.yml +0 -729
- data/spec/vcr_cassetes/iso_111111119115_1.yml +0 -12951
- data/spec/vcr_cassetes/iso_19115_1.yml +0 -17334
- data/spec/vcr_cassetes/iso_19115_1_2.yml +0 -322
- data/spec/vcr_cassetes/iso_19115_1_std.yml +0 -17334
- data/spec/vcr_cassetes/iso_19115_all_parts.yml +0 -185
- data/spec/vcr_cassetes/iso_19133_2005.yml +0 -144
- data/spec/vcr_cassetes/iso_combined_applied.yml +0 -318
- data/spec/vcr_cassetes/iso_combined_included.yml +0 -318
- data/spec/vcr_cassetes/ogc_19_025r1.yml +0 -374
- data/spec/vcr_cassetes/omg_ami4ccm_1_0.yml +0 -317
- data/spec/vcr_cassetes/rfc_8341.yml +0 -1278
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
require_relative "../model/item"
|
|
2
|
+
require_relative "fetcher"
|
|
3
|
+
require_relative "iso_references"
|
|
4
|
+
|
|
5
|
+
module Relaton
|
|
6
|
+
module Ccsds
|
|
7
|
+
class DataParser
|
|
8
|
+
include Core::ArrayWrapper
|
|
9
|
+
|
|
10
|
+
DOCTYPES = { B: "standard", M: "practice", G: "report", O: "specification", Y: "record" }.freeze
|
|
11
|
+
DOMAIN = "https://public.ccsds.org".freeze
|
|
12
|
+
|
|
13
|
+
AREAS = {
|
|
14
|
+
"SEA" => "Systems Engineering Area",
|
|
15
|
+
"MOIMS" => "Mission Operations and Information Management Services Area",
|
|
16
|
+
"CSS" => "Cross Support Services Area",
|
|
17
|
+
"SOIS" => "Spacecraft Onboard Interface Services Area",
|
|
18
|
+
"SLS" => "Space Link Services Area",
|
|
19
|
+
"SIS" => "Space Internetworking Services Area",
|
|
20
|
+
}.freeze
|
|
21
|
+
|
|
22
|
+
ATTRS = %i[
|
|
23
|
+
title docidentifier abstract date status source edition relation contributor ext
|
|
24
|
+
].freeze
|
|
25
|
+
|
|
26
|
+
ID_MAPPING = {
|
|
27
|
+
"CCSDS 320.0-B-1-S Corrigendum 1" => "CCSDS 320.0-B-1-S Cor. 1", # TODO relaton/relaton-data-ccsds#5
|
|
28
|
+
"CCSDS 701.00-R-3" => "CCSDS 701.00-R-3-S", # TODO relaton/relaton-data-ccsds#8
|
|
29
|
+
}.freeze
|
|
30
|
+
|
|
31
|
+
def initialize(doc, docs, successor = nil)
|
|
32
|
+
@doc = doc
|
|
33
|
+
@docs = docs
|
|
34
|
+
@successor = successor
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def parse
|
|
38
|
+
args = ATTRS.each_with_object({}) { |a, o| o[a] = send "parse_#{a}" }
|
|
39
|
+
item = ItemData.new(**args)
|
|
40
|
+
item.create_id
|
|
41
|
+
item
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def parse_title
|
|
45
|
+
t = @doc[3]
|
|
46
|
+
[Bib::Title.new(content: t, language: "en", script: "Latn")]
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def parse_docidentifier
|
|
50
|
+
[Bib::Docidentifier.new(content: docidentifier, type: "CCSDS", primary: true)]
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def docidentifier
|
|
54
|
+
@docidentifier ||= begin
|
|
55
|
+
docid = parse_identifier(@doc[2])
|
|
56
|
+
@successor ? docid.sub(/(-S|s)(?=\s|$)/, "") : docid
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def parse_identifier(link)
|
|
61
|
+
id = link.strip.match(/(?<=>).+(?=<\/a>)/).to_s
|
|
62
|
+
ID_MAPPING[id] || id
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def parse_abstract
|
|
66
|
+
a = @doc[7]
|
|
67
|
+
[Bib::Abstract.new(content: a, language: "en", script: "Latn")]
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def parse_doctype
|
|
71
|
+
/>CCSDS\s[\d.]+-(?<type>\w+)/ =~ @doc[2]
|
|
72
|
+
Doctype.new content: DOCTYPES[type&.to_sym]
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def parse_date
|
|
76
|
+
at = @doc[6]
|
|
77
|
+
[Bib::Date.new(type: "published", at: at)]
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def parse_status
|
|
81
|
+
stage = Bib::Status::Stage.new content: @successor ? "withdrawn" : "published"
|
|
82
|
+
Bib::Status.new stage: stage
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def parse_source
|
|
86
|
+
sources = []
|
|
87
|
+
src = create_source(@doc[2], "src")
|
|
88
|
+
sources << src if src
|
|
89
|
+
|
|
90
|
+
type = @doc[1].match(/https?:[^"]+(pdf|doc)"/)
|
|
91
|
+
return sources unless type
|
|
92
|
+
|
|
93
|
+
download = create_source(@doc[1], type[1])
|
|
94
|
+
sources.tap { |s| s << download if download }
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
def create_source(link, type)
|
|
98
|
+
href = parse_href(link)
|
|
99
|
+
return unless href
|
|
100
|
+
|
|
101
|
+
Bib::Uri.new(type: type, content: href)
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
def parse_href(link)
|
|
105
|
+
/(?<href>https?:[^"]+)/.match(link)&.[](:href)
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
def parse_edition
|
|
109
|
+
return unless @doc[5]
|
|
110
|
+
|
|
111
|
+
Bib::Edition.new content: @doc[5]
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
def parse_relation
|
|
115
|
+
@docs.each_with_object(successors + adopted) do |d, a|
|
|
116
|
+
id = parse_identifier d[2]
|
|
117
|
+
type = relation_type id
|
|
118
|
+
next unless type
|
|
119
|
+
|
|
120
|
+
a << create_relation(type, id)
|
|
121
|
+
end
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
def adopted
|
|
125
|
+
/(?<href>https?:[^"]+)/ =~ @doc[9]
|
|
126
|
+
array(href).each_with_object([]) do |uri, acc|
|
|
127
|
+
/\/(?<ref_id>\d+)\.html/ =~ uri
|
|
128
|
+
iso_id = IsoReferences.instance[ref_id]
|
|
129
|
+
unless iso_id
|
|
130
|
+
Util.warn "ISO reference not found for #{uri}"
|
|
131
|
+
next
|
|
132
|
+
end
|
|
133
|
+
acc << create_relation("adoptedAs", iso_id, uri, "ISO")
|
|
134
|
+
end
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
def successors
|
|
138
|
+
return [] unless @successor
|
|
139
|
+
|
|
140
|
+
@successors ||= begin
|
|
141
|
+
if @successor.relation.none? { |r| r.type == "successorOf" }
|
|
142
|
+
@successor.relation << create_relation("successorOf", docidentifier)
|
|
143
|
+
end
|
|
144
|
+
[create_relation("hasSuccessor", @successor.docidentifier[0].content)]
|
|
145
|
+
end
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
# TODO: cover this
|
|
149
|
+
def relation_type(rel_id)
|
|
150
|
+
return if rel_id == docidentifier ||
|
|
151
|
+
rel_id.match(DataFetcher::TRRGX).to_s != docidentifier.match(DataFetcher::TRRGX).to_s
|
|
152
|
+
|
|
153
|
+
if rel_id.include?(docidentifier.sub(DataFetcher::TRRGX, ""))
|
|
154
|
+
"updatedBy"
|
|
155
|
+
elsif docidentifier.include?(rel_id.sub(DataFetcher::TRRGX, ""))
|
|
156
|
+
"updates"
|
|
157
|
+
end
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
def create_relation(type, rel_id, uri = nil, id_type = "CCSDS")
|
|
161
|
+
id = Bib::Docidentifier.new content: rel_id, type: id_type, primary: true
|
|
162
|
+
source = array(uri).map { |u| Bib::Uri.new(type: "src", content: u) }
|
|
163
|
+
bibitem = Bib::ItemData.new docidentifier: [id], source: source, formattedref: Bib::Formattedref.new(content: rel_id)
|
|
164
|
+
Bib::Relation.new type: type, bibitem: bibitem
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
def parse_contributor # rubocop:disable Metrics/AbcSize,Metrics/MethodLength
|
|
168
|
+
array(@doc[8]).each_with_object([]) do |wg, acc|
|
|
169
|
+
/^(?<name>[^<]+)/ =~ wg
|
|
170
|
+
next if name.nil? || name.strip.empty?
|
|
171
|
+
|
|
172
|
+
sdname = Bib::TypedLocalizedString.new content: name.strip
|
|
173
|
+
subdiv = Bib::Subdivision.new type: "technical-committee", name: [sdname]
|
|
174
|
+
orgname = Bib::TypedLocalizedString.new content: "CCSDS"
|
|
175
|
+
org = Bib::Organization.new name: [orgname], subdivision: [subdiv]
|
|
176
|
+
description = Bib::LocalizedMarkedUpString.new(content: "committee")
|
|
177
|
+
role = Bib::Contributor::Role.new type: "author", description: [description]
|
|
178
|
+
acc << Bib::Contributor.new(role: [role], organization: org)
|
|
179
|
+
end
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
def parse_ext
|
|
183
|
+
Ext.new flavor: "ccsds", doctype: parse_doctype, technology_area: parse_technology_area
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
def parse_technology_area
|
|
187
|
+
return unless @doc[8]
|
|
188
|
+
|
|
189
|
+
desc = @doc[8].split("-").first
|
|
190
|
+
AREAS[desc]
|
|
191
|
+
end
|
|
192
|
+
end
|
|
193
|
+
end
|
|
194
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
require "mechanize"
|
|
2
|
+
module Relaton
|
|
3
|
+
module Ccsds
|
|
4
|
+
class Hit < Relaton::Core::Hit
|
|
5
|
+
# attr_reader :code
|
|
6
|
+
|
|
7
|
+
# def initialize(code:, url:)
|
|
8
|
+
# @code = code
|
|
9
|
+
# @url = url
|
|
10
|
+
# end
|
|
11
|
+
|
|
12
|
+
def item
|
|
13
|
+
return @item if @item
|
|
14
|
+
|
|
15
|
+
resp = Mechanize.new.get(hit[:url])
|
|
16
|
+
@item = Item.from_yaml(resp.body)
|
|
17
|
+
@item.fetched = Date.today.to_s
|
|
18
|
+
@item
|
|
19
|
+
rescue Mechanize::Error => e
|
|
20
|
+
raise Relaton::RequestError, e.message
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
require_relative "hit"
|
|
2
|
+
|
|
3
|
+
module Relaton
|
|
4
|
+
module Ccsds
|
|
5
|
+
class HitCollection < Relaton::Core::HitCollection
|
|
6
|
+
GHURL = "https://raw.githubusercontent.com/relaton/relaton-data-ccsds/refs/heads/v2/".freeze
|
|
7
|
+
|
|
8
|
+
#
|
|
9
|
+
# Search his in index.
|
|
10
|
+
#
|
|
11
|
+
# @return [<Type>] <description>
|
|
12
|
+
#
|
|
13
|
+
def fetch
|
|
14
|
+
@array = rows.map { |row| Hit.new code: row[:id], url: "#{GHURL}#{row[:file]}" }
|
|
15
|
+
self
|
|
16
|
+
rescue SocketError, OpenURI::HTTPError, OpenSSL::SSL::SSLError, Errno::ECONNRESET => e
|
|
17
|
+
raise Relaton::RequestError, e.message
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# Pubid index (index-v2): `:id` deserializes to a Pubid::Ccsds::Identifier
|
|
21
|
+
# via pubid_class, so search narrows by number with binary search.
|
|
22
|
+
def index
|
|
23
|
+
@index ||= Relaton::Index.find_or_create(
|
|
24
|
+
:ccsds, url: "#{GHURL}#{INDEXFILE}.zip", file: "#{INDEXFILE}.yaml", pubid_class: Pubid::Ccsds::Identifier
|
|
25
|
+
)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def pubid
|
|
29
|
+
@pubid ||= Pubid::Ccsds::Identifier.parse(ref)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def rows
|
|
33
|
+
if pubid.edition
|
|
34
|
+
index.search(pubid)
|
|
35
|
+
else
|
|
36
|
+
# search(pubid) narrows candidates by number via binary search first.
|
|
37
|
+
index.search(pubid) { |r| r[:id].exclude(:edition) == pubid }
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
require_relative "doctype"
|
|
2
|
+
|
|
3
|
+
module Relaton
|
|
4
|
+
module Ccsds
|
|
5
|
+
class Ext < Lutaml::Model::Serializable
|
|
6
|
+
attribute :schema_version, :string
|
|
7
|
+
attribute :doctype, Doctype
|
|
8
|
+
attribute :structuredidentifier, Bib::StructuredIdentifier, collection: true
|
|
9
|
+
attribute :technology_area, :string, values: %w[SEA MOIMS CSS SOIS SLS SIS]
|
|
10
|
+
|
|
11
|
+
xml do
|
|
12
|
+
map_attribute "schema-version", to: :schema_version
|
|
13
|
+
map_element "doctype", to: :doctype
|
|
14
|
+
map_element "structuredidentifier", to: :structuredidentifier
|
|
15
|
+
map_element "technology-area", to: :technology_area
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
require "relaton/core/processor"
|
|
2
|
+
|
|
3
|
+
module Relaton
|
|
4
|
+
module Ccsds
|
|
5
|
+
class Processor < Relaton::Core::Processor
|
|
6
|
+
attr_reader :idtype
|
|
7
|
+
|
|
8
|
+
def initialize # rubocop:disable Lint/MissingSuper
|
|
9
|
+
@short = :relaton_ccsds
|
|
10
|
+
@prefix = "CCSDS"
|
|
11
|
+
@defaultprefix = %r{^CCSDS(?!\w)}
|
|
12
|
+
@idtype = "CCSDS"
|
|
13
|
+
@datasets = %w[ccsds]
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# @param code [String]
|
|
17
|
+
# @param date [String, NilClass] year
|
|
18
|
+
# @param opts [Hash]
|
|
19
|
+
# @return [Relaton::Ccsds::ItemData, nil]
|
|
20
|
+
def get(code, date, opts)
|
|
21
|
+
require_relative "../ccsds"
|
|
22
|
+
Bibliography.get(code, date, opts)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
#
|
|
26
|
+
# Fetch all the documents from a source
|
|
27
|
+
#
|
|
28
|
+
# @param [String] source source name
|
|
29
|
+
# @param [Hash] opts
|
|
30
|
+
# @option opts [String] :output directory to output documents
|
|
31
|
+
# @option opts [String] :format
|
|
32
|
+
#
|
|
33
|
+
def fetch_data(source = "ccsds", **opts)
|
|
34
|
+
require_relative "data/fetcher"
|
|
35
|
+
DataFetcher.fetch(source, **opts)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# @param xml [String]
|
|
39
|
+
# @return [Relaton::Ccsds::ItemData]
|
|
40
|
+
def from_xml(xml)
|
|
41
|
+
require_relative "../ccsds"
|
|
42
|
+
Item.from_xml xml
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# @param yaml [String]
|
|
46
|
+
# @return [Relaton::Ccsds::ItemData]
|
|
47
|
+
def from_yaml(yaml)
|
|
48
|
+
require_relative "../ccsds"
|
|
49
|
+
Item.from_yaml yaml
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# Returns hash of XML grammar
|
|
53
|
+
# @return [String]
|
|
54
|
+
def grammar_hash
|
|
55
|
+
require_relative "../ccsds"
|
|
56
|
+
@grammar_hash ||= ::Relaton::Ccsds.grammar_hash
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
#
|
|
60
|
+
# Remove index file
|
|
61
|
+
#
|
|
62
|
+
def remove_index_file
|
|
63
|
+
require_relative "../ccsds"
|
|
64
|
+
Relaton::Index.find_or_create(:ccsds, url: true, file: "#{INDEXFILE}.yaml").remove_file
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# require "mechanize"
|
|
4
|
+
# require "relaton/core"
|
|
5
|
+
# require "relaton/bib"
|
|
6
|
+
require "relaton/index"
|
|
7
|
+
require "pubid"
|
|
8
|
+
require_relative "version"
|
|
9
|
+
# require_relative "ccsds/processor"
|
|
10
|
+
require_relative "ccsds/util"
|
|
11
|
+
require_relative "ccsds/model/item"
|
|
12
|
+
require_relative "ccsds/model/bibitem"
|
|
13
|
+
require_relative "ccsds/model/bibdata"
|
|
14
|
+
require_relative "ccsds/bibliography"
|
|
15
|
+
|
|
16
|
+
module Relaton
|
|
17
|
+
module Ccsds
|
|
18
|
+
# The pubid-v2 (lean hash) index this gem produces and consumes. The legacy
|
|
19
|
+
# index-v1 (pubid-v1 hash, for the released gem line) is rebuilt separately
|
|
20
|
+
# by the data repo's build_index_v1.rb.
|
|
21
|
+
INDEXFILE = "index-v2"
|
|
22
|
+
|
|
23
|
+
class Error < StandardError; end
|
|
24
|
+
# Your code goes here...
|
|
25
|
+
|
|
26
|
+
def self.grammar_hash
|
|
27
|
+
# gem_path = File.expand_path "..", __dir__
|
|
28
|
+
# grammars_path = File.join gem_path, "grammars", "*"
|
|
29
|
+
# grammars = Dir[grammars_path].sort.map { |gp| File.read gp }.join
|
|
30
|
+
Digest::MD5.hexdigest Relaton::VERSION # grammars
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Relaton
|
|
4
|
+
module Cen
|
|
5
|
+
# Class methods for search Cenelec standards.
|
|
6
|
+
class Bibliography
|
|
7
|
+
class << self
|
|
8
|
+
# @param text [String]
|
|
9
|
+
# @return [RelatonCen::HitCollection]
|
|
10
|
+
def search(text, year = nil)
|
|
11
|
+
# /^C?EN\s(?<code>.+)/ =~ text
|
|
12
|
+
HitCollection.new(text, year).search
|
|
13
|
+
rescue Mechanize::ResponseCodeError, Net::ReadTimeout => e
|
|
14
|
+
raise Relaton::RequestError, e.message
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
#
|
|
18
|
+
# @param code [String] the CEN standard Code to look up
|
|
19
|
+
# @param year [String] the year the standard was published (optional)
|
|
20
|
+
# @param opts [Hash] options
|
|
21
|
+
# @option opts [Boolean] :keep_year don't upate reference
|
|
22
|
+
#
|
|
23
|
+
# @return [RelatonBib::BibliographicItem, nil]
|
|
24
|
+
#
|
|
25
|
+
def get(code, year = nil, opts = {})
|
|
26
|
+
code_parts = code_to_parts code
|
|
27
|
+
year ||= code_parts[:year] if code_parts
|
|
28
|
+
|
|
29
|
+
bib_get(code, year, opts)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
#
|
|
33
|
+
# Decopmposes a CEN standard code into its parts.
|
|
34
|
+
#
|
|
35
|
+
# @param [String] code the CEN standard code to decompose
|
|
36
|
+
#
|
|
37
|
+
# @return [MatchData] the decomposition of the code
|
|
38
|
+
#
|
|
39
|
+
def code_to_parts(code)
|
|
40
|
+
%r{^
|
|
41
|
+
(?<code>[^:-]+)(?:-(?<part>\d+))?
|
|
42
|
+
(?::(?<year>\d{4}))?
|
|
43
|
+
(?:\+(?<amd>[A-Z]\d+)(?:(?<amy>\d{4}))?)?
|
|
44
|
+
(?:\/(?<ac>AC\d+:\d{4}))?
|
|
45
|
+
}x.match code
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
private
|
|
49
|
+
|
|
50
|
+
def fetch_ref_err(code, year, missed_years) # rubocop:disable Metrics/MethodLength
|
|
51
|
+
# id = year ? "#{code}:#{year}" : code
|
|
52
|
+
# Util.warn "WARNING: No match found online for `#{id}`. " \
|
|
53
|
+
# "The code must be exactly like it is on the standards website."
|
|
54
|
+
unless missed_years.empty?
|
|
55
|
+
Util.info "There was no match for `#{year}`, though there " \
|
|
56
|
+
"were matches found for `#{missed_years.join('`, `')}`."
|
|
57
|
+
end
|
|
58
|
+
# if /\d-\d/.match? code
|
|
59
|
+
# warn "[relaton-cen] The provided document part may not exist, or "\
|
|
60
|
+
# "the document may no longer be published in parts."
|
|
61
|
+
# else
|
|
62
|
+
# warn "[relaton-cen] If you wanted to cite all document parts for "\
|
|
63
|
+
# "the reference, use \"#{code} (all parts)\".\nIf the document "\
|
|
64
|
+
# "is not a standard, use its document type abbreviation (TS, TR, "]
|
|
65
|
+
# "PAS, Guide)."
|
|
66
|
+
# end
|
|
67
|
+
nil
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
# @param code [String]
|
|
71
|
+
# @return [RelatonCen::HitCollection]
|
|
72
|
+
def search_filter(code) # rubocop:disable Metrics/AbcSize,Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity
|
|
73
|
+
parts = code_to_parts code
|
|
74
|
+
result = search(code)
|
|
75
|
+
result.select! do |i|
|
|
76
|
+
pts = code_to_parts i.hit[:code]
|
|
77
|
+
parts[:code] == pts[:code] &&
|
|
78
|
+
(!parts[:part] || parts[:part] == pts[:part]) &&
|
|
79
|
+
(!parts[:year] || parts[:year] == pts[:year]) &&
|
|
80
|
+
parts[:amd] == pts[:amd] && (!parts[:amy] || parts[:amy] == pts[:amy])
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
# Sort through the results from Isobib, fetching them three at a time,
|
|
85
|
+
# and return the first result that matches the code,
|
|
86
|
+
# matches the year (if provided), and which # has a title (amendments do not).
|
|
87
|
+
# Only expects the first page of results to be populated.
|
|
88
|
+
# Does not match corrigenda etc (e.g. ISO 3166-1:2006/Cor 1:2007)
|
|
89
|
+
# If no match, returns any years which caused mismatch, for error reporting
|
|
90
|
+
def isobib_results_filter(result, year)
|
|
91
|
+
missed_years = []
|
|
92
|
+
result.each do |r|
|
|
93
|
+
/:(?<pyear>\d{4})/ =~ r.hit[:code]
|
|
94
|
+
if !year || year == pyear
|
|
95
|
+
ret = r.item
|
|
96
|
+
return { ret: ret } if ret
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
missed_years << pyear
|
|
100
|
+
end
|
|
101
|
+
{ years: missed_years }
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
def bib_get(code, year, opts) # rubocop:disable Metrics/AbcSize,Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity,Metrics/MethodLength
|
|
105
|
+
ref = year.nil? || code.match?(/:\d{4}/) ? code : "#{code}:#{year}"
|
|
106
|
+
Util.info "Fetching from standards.cencenelec.eu ...", key: ref
|
|
107
|
+
result = search_filter(code) || return
|
|
108
|
+
ret = isobib_results_filter(result, year)
|
|
109
|
+
if ret[:ret]
|
|
110
|
+
bib = year || opts[:keep_year] ? ret[:ret] : ret[:ret].to_most_recent_reference
|
|
111
|
+
Util.info "Found: `#{bib.docidentifier.first&.content}`", key: ref
|
|
112
|
+
bib
|
|
113
|
+
else
|
|
114
|
+
Util.info "Not found.", key: ref
|
|
115
|
+
fetch_ref_err(code, year, ret[:years])
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
end
|
|
121
|
+
end
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
ASD-STAN: Aerospace
|
|
2
|
+
CEN/CLC/ETSI/SMCG: CEN-CENELEC-ETSI Coordination Group on Smart Meters
|
|
3
|
+
CEN/CLC/ETSI/JWG eAcc: eAccessibility
|
|
4
|
+
CEN/CLC/ETSI/SEG-CG: CEN-CENELEC-ETSI Coordination Group on Smart Grids
|
|
5
|
+
CEN/CLC/ETSI/SF-SSCC: CEN-CENELEC-ETSI Sector Forum on Smart and Sustainable Cities and Communities
|
|
6
|
+
CEN/CLC/Guides: Group for CEN-CENELEC Guides
|
|
7
|
+
CEN/CLC/JTC 1: Criteria for conformity assessment bodies
|
|
8
|
+
CEN/CLC/JTC 2: Power Engineering
|
|
9
|
+
CEN/CLC/JTC 3: Quality management and corresponding general aspects for medical devices
|
|
10
|
+
CEN/CLC/JTC 4: Services for fire safety and security systems
|
|
11
|
+
CEN/CLC/JTC 5: Space
|
|
12
|
+
CEN/CLC/JTC 6: Hydrogen in energy systems
|
|
13
|
+
CEN/CLC/JTC 10: Energy-related products - Material Efficiency Aspects for Ecodesign
|
|
14
|
+
CEN/CLC/JTC 11: Accessibility in the built environment
|
|
15
|
+
CEN/CLC/JTC 12: Design for All
|
|
16
|
+
CEN/CLC/JTC 13: Cybersecurity and Data Protection
|
|
17
|
+
CEN/CLC/JTC 14: Energy management and energy efficiency in the framework of energy transition
|
|
18
|
+
CEN/CLC/JTC 15: Energy measurement plan for organizations
|
|
19
|
+
CEN/CLC/JTC 16: CEN/CENELEC Joint Technical Committee on Active Implantable Medical Devices
|
|
20
|
+
CEN/CLC/JTC 17: Gas Appliances with Combined Heat and Power
|
|
21
|
+
CEN/CLC/JTC 18: Non automatic weighing instruments (NAWI)
|
|
22
|
+
CEN/CLC/JTC 19: Blockchain and Distributed Ledger Technologies
|
|
23
|
+
CEN/CLC/JTC 20: Hyperloop systems
|
|
24
|
+
CEN/CLC/JTC 21: Artificial Intelligence
|
|
25
|
+
CEN/CLC/WS 017: Development of a GALILEO enabled label
|
|
26
|
+
CEN/CLC/WS 018: Assessment of the resilience of transport infrastructure to potentially disruptive events
|
|
27
|
+
CEN/CLC/WS SEA-TITAN: Modular and cross-cutting Power Take-Off units for wave energy converters. Recommendations and laboratory testing
|
|
28
|
+
CEN/CLC/WS SEP2: Industry Best Practices and an Industry Code of Conduct for Licensing of Standard Essential Patents in the field of 5G and Internet of Things
|
|
29
|
+
CEN/CLC/WS HECTOS: CEN-CENELEC Workshop on Guidelines on evaluation systems and schemes for physical security products
|
|
30
|
+
CEN/CLC/WS INACHUS: Urban search and rescue (USaR) robotic platform technical and procedural interoperability
|
|
31
|
+
CEN/CLC/WS Monsoon: Predictive management of data intensive industrial processes
|
|
32
|
+
CEN/CLC/WS REEMAIN: CEN/CENELEC Workshop on REEMAIN Methodology for Resource and Energy Efficiency Manufacturing
|
|
33
|
+
CEN/CLC/WS SEP-IoT: Workshop on Best Practices and a Code of Conduct for Licensing Industry Standard Essential Patents in 5G and the Internet of Things (IoT), including the Industrial Internet
|
|
34
|
+
CEN/CLC/WS ZONeSEC: Interoperability of security systems for the surveillance of widezones
|
|
35
|
+
CEN/CLC/WS EINSTEIN: Good Practice Thermal Energy Audits (GPTEA)
|
|
36
|
+
CEN/CLC/WS WiseGRID: Reference model for distribution application for microgrids
|
|
37
|
+
CEN/CLC/WS EFPFInterOp: European Connected Factory Platform for Agile Manufacturing Interoperability
|
|
38
|
+
CEN/CLC/WS ZDMterm: Zero Defects in Digital Manufacturing Terminology
|
|
39
|
+
CEN/SS C20: Explosives and firework
|
|
40
|
+
CEN/SS S08: Air quality
|
|
41
|
+
CEN/SS S12: Gas analysis
|
|
42
|
+
CEN/Guides: Group for CEN Guides
|
|
43
|
+
CEN/SS A03: Postal services
|
|
44
|
+
CEN/SS A07: Translation and Interpretation services
|
|
45
|
+
CEN/SS A08: Funeral services
|
|
46
|
+
CEN/SS A10: Services of Real Estate Agents
|
|
47
|
+
CEN/SS A11: Security services
|
|
48
|
+
CEN/SS A99: Services - Undetermined
|
|
49
|
+
CEN/SS B02: Structures
|
|
50
|
+
CEN/SS B09: Energy Performance of Buildings Directive (EPBD)
|
|
51
|
+
CEN/SS B99: Building and construction - Undetermined
|
|
52
|
+
CEN/SS C01: Food Products
|
|
53
|
+
CEN/SS C10: Starch
|
|
54
|
+
CEN/SS F01: Technical drawings
|
|
55
|
+
CEN/SS F02: Units and symbols
|
|
56
|
+
CEN/SS F05: Measuring Instruments
|
|
57
|
+
CEN/SS F12: Information Processing Systems
|
|
58
|
+
CEN/SS F16: Graphical symbols
|
|
59
|
+
CEN/SS F17: Administrative documents
|
|
60
|
+
CEN/SS F20: Quality assurance
|
|
61
|
+
CEN/SS F23: Energy
|
|
62
|
+
CEN/SS H10: Sewing machines
|
|
63
|
+
CEN/SS H22: Smokers' lighters
|
|
64
|
+
CEN/SS H99: Products for household and leisure use - Undetermined
|
|
65
|
+
|
|
66
|
+
TC 459: ECISS - European Committee for Iron and Steel Standardization
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Relaton
|
|
4
|
+
module Cen
|
|
5
|
+
# Hit.
|
|
6
|
+
class Hit < Relaton::Core::Hit
|
|
7
|
+
attr_writer :item
|
|
8
|
+
|
|
9
|
+
# Parse page.
|
|
10
|
+
# @return [IsoRelatonBib::IsoBibliographicItem]
|
|
11
|
+
def item
|
|
12
|
+
@fetch ||= Scraper.parse_page self
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|