Версия 1.0 открытого индекса российских научных организаций.
RIRO - это проект Russian Index of the Research Organizations, запущенный в мае 2021 года. RIRO v.1.0 - представляет из себя набор таблиц, которые связывают российские юридические лица, задействованные в научных исследованиях, с идентификаторами и профилями российских и международных информационных систем:
Все версии датасета будут доступны на Zenodo: https://zenodo.org/communities/riro/.
Фрагменты кода и примеры использования будут выкладываться на GitHub: https://github.com/OpenRIRO.
Основная цель создания RIRO – открыть и связать профили и идентификаторы российских научных организаций в информационных системах. Объединение и соотнесение данных из этих систем необходимо как для изучения, так и для управления сетью организаций на современном этапе развития науки и данных о ней.
Работа по созданию RIRO заключается далеко не только в механическом соединении источников. У каждого из существующих идентификаторов свои “детские болезни”: одни стараются быстро реагировать на переименования и реорганизации, но полностью переписывают историю со всеми правопредшественниками; другие, напротив, привязываются к “славным” именам мифических героев, которые уже не актуальны. В результате одна организация в различных сервисах может быть представлена совершенно различными наборами идентификаторов, что уменьшает и без этого ограниченную применимость наукометрических инструментов для анализа российской науки.
Опубликованный датасет нацелен на решение следующих задач:
предоставить в распоряжение исследователей наборы идентификаторов, учитывающих особенности структуры и истории трансформации российских научных организаций.
отразить актуальность и полноту сведений о российских научных организациях в проприетарных и открытых сервисах.
привлечь внимание исследователей к возможностях новых информационно-аналитических сервисов.
выбранный подход – публикация только идентификаторов и профилей, но не самих показателей – позволяет открыто объединить разнообразные источники данных из коммерческих и некоммерческих, российских и иностранных систем.
На иллюстрации ниже показано наличие идентификаторов Scopus, ROR, Wikidata, InCites для организаций, включенных в RIRO (v.1.0). Приведенные на иллюстрации знчения основаны на подсчете идентификаторов для головных и действующих организаций и не учитывают идентификаторы, соответствующие структурным подразделениям или ликвидированным правопредшественникам.
filename <- paste0(img.dir, "chart_upset.png")
knitr::include_graphics(filename)
Набор таблиц можно скачать с Zenodo вручную или программными средствами, используя OAI-PMH Harvesting API или REST API. Zenodo – один из ведущих репозиториев данных открытой науки, развиваемый на базе ЦЕРН (подробнее).
Датасет состоит из отдельных таблиц в стандартном формате CSV (может быть открыт в Excel и любых программах по работе с данными), связанных через идентификатор code, который выступает в роли первичного ключа.
riro_versions <- list.dirs(paste0(dir, "/final_tables/"),
recursive = FALSE) %>%
sort(., decreasing = TRUE) %>% .[grepl("1.0",.)]
riro_tables <- list.files(riro_versions, full.names = TRUE)
riro_data <- map(riro_tables, ~read_csv(.x,
col_types = cols(.default = col_character())))
Ниже будут показаны фрагменты каждой таблицы с информацией о 3 учреждениях, выбранных в качестве примера:
Содержит официальные сведения об организации - ОГРН, ИНН/КПП, полное и краткое названия, тип (головное, филиал или представительство) и статус (активное, ликвидировано или в стадии реорганизации).
В таблице ниже для экономии места краткие названия не приведены.
t1 <- riro_data[[1]]
test_group <- t1 %>%
filter(ogrn %in% c("1021100511332", "1037739552740", "1027000861568"))
test_group %>% select(code, level, status, name_full, ogrn, inn, kpp) %>%
datatable(rownames = FALSE, filter = "none", escape = FALSE,
class = "row-border",
options = list(columnDefs = list(
list(width = '600px', targets = c(3)))))
Поиск по таблице выполнялся по значениям ОГРН, поэтому в таблице появились также действующие филиалы, но каждая строка (запись) имеет свой собственный уникальный код (поле code), который и выступает связующим звеном (ключом) между таблицами.
В этой таблице по значениям code можно найти полный адрес организации (или филиала), отдельные фрагменты адреса, а также код geocode, временной пояс и географические координаты. В примере приведены данные для всех записей, приведенных в таблице выше.
Таблица 2 - единственная(!) таблица, которая имеет уникальное соответствие с таблицей 1 (по полю code), по сути это продолжение таблицы 1. Во всех остальных таблицах одному коду (code) могут соответствовать несколько строк.
Данная таблица связывает существующие головные организации с филиалами и правопредшественниками (для удобства в этом документе они обозначены как “дочерние организации”).
Таблица не является абсолютно полной, но для большинства научных организаций включает в себя включает все официальные филиалы и представительства (на момент сборки), а также правопредшественников последней реорганизации. Для некоторых учреждений (например, больниц) в таблице присутствуют только головные учреждения.
Столбцы code относятся к головной организации, child_code - это code для дочерних организаций, relation - тип отношения (2 значения - “Филиал” или “Правопредшественники”).
Итак, используя список из 3 ОГРН, мы из таблицы 1, извлекли 6 code, по которым в таблице 3 извлекли дополнительные code для правопредшественников, получим в итоге значений 42 “объекта” с уникальными значениями code.
Соберем теперь группы вида: {code головной организации} - {все родственные коды} - {отношение}.
hierarchy <- full_test %>%
add_row(code = unique(full_test$code),
child_code = unique(full_test$code),
relation = "Головная") %>%
rename(parent_code = code, code = child_code) %>%
arrange(parent_code, relation)
hierarchy %>% count(parent_code, relation) %>%
pivot_wider(names_from = relation,
values_from = n, values_fill = 0) %>%
relocate(parent_code, `Головная`,
`Филиал`, `Правопредшественники`) %>%
datatable(rownames = FALSE, filter = "none",
escape = FALSE, class = "row-border",
options = list(autoWidth = FALSE,
columnDefs = list(list(className = 'dt-center',
targets = c(0:3)))))
Несмотря на то, что все найденные в таблице 3 дочерние организации также содержатся в таблице 1, легко найти в последней удастся только филиалы (они имеют одинаковые значения ОГРН и ИНН с головной организацией). Поэтому, если Вас интересуют только головные учреждения или филиалы, но не правопредшественники, Вы можете использовать для поиска только таблицу 1.
Однако, не спешите закрывать документ, ниже мы покажем, какую роль в RIRO играют правопредшественники и почему не стоит игнорировать таблицу 3.
Research Organizations Registry – стартовавший в 2019 г. международный общественный проект по созданию открытой базы уникальных идентификаторов научных организаций, по смыслу близкий проекту ORCID для отдельных ученых, построенный с использованием наработок аналогичного проекта GRID (Global Research Identifier Database). Идентификаторы ROR открыто доступны для скачивания как в виде датасета, так и через API. Любой может предложить дополнение или исправление в ROR.
Таблица содержит записи из БД ROR, которым найдено соответствие в RIRO (ключ code).
t4 <- riro_data[[4]]
hierarchy %>% inner_join(t4, by = "code") %>%
arrange(parent_code) %>% select(-parent_code, - relation) %>%
datatable(rownames = FALSE, filter = "none",
escape = FALSE, class = "row-border",
options = list(columnDefs = list(
list(width = '250px', targets = c(3:5)),
list(width = '400px', targets = c(8)))))
Некоторые записи в поле Relationships содержат композитную строку следующего вида:
label:xxxx|type:yyyyyy|id:https://ror.org/zzzzz
которая содержит 3 компонента label (название), type (тип отношений) и id (ROR идентификатор) для организации, которая по мнению создателей ROR имеет отношение искомой.
WikiData – общественный репозиторий всевозможных структурированных характеристик разнообразных объектов (в нашем случае – научных организаций), дополнять и редактировать которые может любой. Данные из WikiData доступны открыто через разнообразные интерфейсы.
Важно понимать, что обилие информации в WikiData (от профилей в twitter до списка ректоров) внесено разнообразными людьми без системной верификации и нередко содержит неточности и неофициальную информацию.
Таблица содержит фрагменты записей из БД Wikidata, которым было найдено соответствие в реестре RIRO.
t5 <- riro_data[[5]]
hierarchy %>% inner_join(t5, by = "code") %>%
arrange(parent_code) %>%
select(-parent_code, - relation, -wd_item) %>%
mutate_at(c("wikipedia_eng", "wikipedia_rus", "wd_itemaltlabel", "wd_altlabel"),
~ifelse(is.na(.x),.x, paste0(substr(.x,1,40),"...")))%>%
datatable(rownames = FALSE, filter = "none", escape = FALSE, class = "row-border",
options = list(columnDefs = list(
list(width = '250px', targets = c(2:4)),
list(width = '150px', targets = c(6:9)))))
Scopus – одна из ведущих мировых баз научного цитирования, аккумулирующая метаданные научных публикаций из десятков тысяч журналов и конференций, а также части книг. Большинство государственных научно-образовательных организаций России имеет к ней доступ в рамках национальной подписки. В рамках этого стандартного доступа всем желающим без дополнительной платы доступен и полноценный API-интерфейс, к которому доступны дружелюбные для неискушенных пользователей API-обертки (wrapper) на python и R, в которых есть функции для сбора информации по идентификаторам организаций.
Таблица содержит идентфикаторы Scopus, которым было найдено соответствие в БД RIRO.
Обращаем внимание, что соответствие профилей организациям определялось по названиям первых и данная таблица не гарантирует полноту или безошибочность их наполнения в Scopus. Приведенное в таблице количество публикаций соответствовало действительности на момент сбора данных (апрель-май 2021).
О том, как корректировать профиль организации в Scopus можно прочесть на русскоязычном сайте Elsevier.
t6 <- riro_data[[6]]
hierarchy %>% inner_join(t6, by = "code") %>%
arrange(parent_code) %>% select(-parent_code, - relation) %>%
datatable(rownames = FALSE, filter = "none", escape = FALSE, class = "row-border",
options = list(columnDefs = list(
list(className = 'dt-center', targets = c(0,6)),
list(width = '350px', targets = c(2:3)))))
Microsoft Academic Graph (MAG) – проект исследовательского подразделения Microsoft по созданию базы научного цитирования и метаданных на основе информации, собираемой парсерами Bing с сайтов журналов и PDF-файлов (подробнее). В этом заключается главное отличие MAG от Web of Science и Scopus, которые получают информацию от издателей.
За счет сочетания открытости и сбора роботом MAG является уникальным источником, особенно в «горячей» и приоритетной области Computer Science, и основой для ряда инструментов нового поколения (Lens, Semantic Scholar, Open Academic Graph).
Несмотря на последние новости о прекращении работы Microsoft Academic, было принято решение включить идентификаторы MAG в RIRO. Есть вероятность, что проект MAG в силу своей большой значимости для инфраструктуры открытой науки будет перезапущен сообществом.
t7 <- riro_data[[7]]
hierarchy %>% inner_join(t7, by = "code") %>%
arrange(parent_code) %>% select(-parent_code, - relation) %>%
datatable(rownames = FALSE, filter = "none", escape = FALSE, class = "row-border",
options = list(autoWidth = FALSE,
columnDefs = list(
list(className = 'dt-center', targets = c(0:1)),
list(width = '450px', targets = c(2)))))
InCites – аналитическая надстройка над базой Web of Science Core Collection, доступная части российских вузов. К сожалению, в системе нет API-интерфейса для сбора показателей по организациям, но они доступны для ручного скачивания и связывания с другими данными через название, которое и служит «идентификатором».
В таблице приведены официальные названия организации в БД Web of Science и InCites.
t8 <- riro_data[[8]]
hierarchy %>% inner_join(t8, by = "code") %>%
arrange(parent_code) %>% select(-parent_code, - relation) %>%
datatable(rownames = FALSE, filter = "none", escape = FALSE, class = "row-border",
options = list(autoWidth = FALSE,
columnDefs = list(
list(className = 'dt-center', targets = c(0,3)),
list(width = '450px', targets = c(1:2)))))
SciVal – аналитическая надстройка над базой Scopus, доступная части российских вузов. У ряда подписчиков системы есть доступ к API-интерфейсу, который позволяет собирать многочисленные показатели по идентификаторам организаций, представленным в таблице.
В таблице приведены официальное название и уникальный идентификатор организации в БД SciVal.
t9 <- riro_data[[9]]
hierarchy %>% inner_join(t9, by = "code") %>%
arrange(parent_code) %>% select(-parent_code, - relation) %>%
datatable(rownames = FALSE, filter = "none", escape = FALSE, class = "row-border",
options = list(autoWidth = FALSE,
columnDefs = list(
list(className = 'dt-center', targets = c(0:1)),
list(width = '450px', targets = c(2)))))
Мониторинг эффективности вузов Минобрнауки – основной национальный сбор данных всевозможной информации о работе вузов, включает все организации высшего образования, кроме относящихся к силовым ведомствам.
Идентификатор в системе мониторинга однозначно указывает на URL открытой веб-страницы с данными о кадрах, финансовой информации, студентах и аспирантах, недвижимости и многом другом, что является очень ценным в соотнесении с данными из других таблиц.
t10 <- riro_data[[10]]
hierarchy %>% inner_join(t10, by = "code") %>%
arrange(parent_code) %>% select(-parent_code, - relation) %>%
datatable(rownames = FALSE, filter = "none", escape = FALSE, class = "row-border",
options = list(autoWidth = FALSE,
columnDefs = list(list(className = 'dt-center',
targets = c(0:1)))))
Web of Science – старейшая и наиболее известная в мире наукометрическая база данных, доступная для большинства научно-образовательных организаций России в рамках национальной подписки.
В настоящий момент Web of Science не предоставляет пользователям уникальные идентификаторы организаций, вместо них используются «официальные» варианты названий, но ситуация осложняется тем, что вместе с ними существует и множество неофициальных. И те, и другие представлены в таблице 11 в том виде, в котором они встречаются в результатах поиска в интерфейсе онлайн-сервиса Web of Science.
Все эти варианты можно использовать для автоматизации процессов сбора сведений о публикациях с участием организаций (через выгрузку вариантов названий из модуля analyze results с последующим сопоставлением вариантов названий с теми, что присутствуют в таблице 11.
К моменту запуска релиза 1.0 мы распознали лишь часть названий. Надеемся, что нам удастся увеличить количество строк в этой таблице в следующих релизах.
К сожалению, в рамках централизованной подписки на Web of Science доступ к API-интерфейсам для выгрузки информации об организациях не предоставлен.
t11 <- riro_data[[11]]
hierarchy %>% inner_join(t11, by = "code") %>%
arrange(parent_code) %>% select(-parent_code, - relation) %>%
datatable(rownames = FALSE, filter = "none",
escape = FALSE, class = "row-border",
options = list(autoWidth = FALSE,
columnDefs = list(
list(className = 'dt-center', targets = c(0)),
list(width = '450px', targets = c(1,3)))))
На иллюстрации ниже для выбранных организаций показано как идентификаторы зарубежных сервисов (ROR, GRID, Scopus Affiliation ID, InCites ID, MAG, Wikidata) и российского оператора (Мониторинг) соответствуют головным организациям, их филиалам и правопредшественникам.
Группы идентификаторов для каждой организации представлены в виде блоков (по горизонтали). В каждом блоке на оси X расположены идентификаторы, по оси Y - сами организации, их филиалы и правпредшественники. Для каждого идентификатора показан тип организации.
filename <- paste0(img.dir, "chart_examples.png")
knitr::include_graphics(filename)
Таблицы RIRO содержат не все поля из оригинальных баз данных.
Содержимое столбцов в таблицах 4-11 соответствует тому, что находится в базах данных.
Некоторые таблицы содержат похожие поля. Например, в таблице 4 (ROR) у организаций есть идентификатор Wikidata (ror_wikidata), а в таблице 5 (Wikidata) - идентификатор ROR (wd_ror). Соответствие этих данных друг другу не проверялось.
Соответствие каждого идентификатора определенной российской организации было сделано, исходя из имеющихся данных (совпадение названия и города). 100% корректность не гарантирована.
Приоритетными организациями для RIRO являются:
государственные организации федерального и регионального подчинения, которые участвуют прямо или опосредованно в научных исследованиях (научные центры и институты, вузы, крупные лечебно-профилактические учреждения и научно-клинические центры, заповедники, музеи и т.д.);
частные организации, которые проводят совместные исследования с государственными организациями.
Форма для обратной связи предусматривает следующие варианты:
Ваши замечания и предложения помогут улучшить RIRO.
Allaire J, Xie Y, McPherson J, Luraschi J, Ushey K, Atkins A, Wickham H, Cheng J, Chang W, Iannone R (2021). rmarkdown: Dynamic Documents for R. R package version 2.7, <URL: https://github.com/rstudio/rmarkdown>.
Blondel E (2021). zen4R: Interface to ‘Zenodo’ REST API. R package version 0.4-3, <URL: https://github.com/eblondel/zen4R>.
Chang, W (2014). extrafont: Tools for using fonts. R package version 0.17, <URL: https://CRAN.R-project.org/package=extrafont>.
Henry L, Wickham H (2020). purrr: Functional Programming Tools. R package version 0.3.4, <URL: https://CRAN.R-project.org/package=purrr>.
Krassowski M (2020). “ComplexUpset.” doi: 10.5281/zenodo.3700590 (URL: https://doi.org/10.5281/zenodo.3700590), <URL: https://doi.org/10.5281/zenodo.3700590>.
Lex A, Gehlenborg N, Strobelt H, Vuillemot R, Pfister H (2014). “UpSet: Visualization of Intersecting Sets,.” IEEE Transactions on Visualization and Computer Graphics, 20(12), 1983–1992. doi: 10.1109/TVCG.2014.2346248 (URL: https://doi.org/10.1109/TVCG.2014.2346248), <URL: https://doi.org/10.1109/TVCG.2014.2346248>.
Wickham H (2020). tidyr: Tidy Messy Data. R package version 1.1.2, <URL: https://CRAN.R-project.org/package=tidyr>.
Wickham H (2016). ggplot2: Elegant Graphics for Data Analysis. Springer-Verlag New York. ISBN 978-3-319-24277-4, <URL: https://ggplot2.tidyverse.org>.
Wickham H (2019). stringr: Simple, Consistent Wrappers for Common String Operations. R package version 1.4.0, <URL: https://CRAN.R-project.org/package=stringr>.
Wickham H, Francois R, Henry L, Muller K (2021). dplyr: A Grammar of Data Manipulation. R package version 1.0.3, <URL: https://CRAN.R-project.org/package=dplyr>.
Wickham H, Hester J (2020). readr: Read Rectangular Text Data. R package version 1.4.0, <URL: https://CRAN.R-project.org/package=readr>.
Wickham H, Seidel D (2020). scales: Scale Functions for Visualization. R package version 1.1.1, <URL: https://CRAN.R-project.org/package=scales>.
Xie Y (2020). knitr: A General-Purpose Package for Dynamic Report Generation in R. R package version 1.30, <URL: https://yihui.org/knitr/>.
Xie Y (2015). Dynamic Documents with R and knitr, 2nd edition. Chapman and Hall/CRC, Boca Raton, Florida. ISBN 978-1498716963, <URL: https://yihui.org/knitr/>.
Xie Y (2014). “knitr: A Comprehensive Tool for Reproducible Research in R.” In Stodden V, Leisch F, Peng RD (eds.), Implementing Reproducible Computational Research. Chapman and Hall/CRC. ISBN 978-1466561595, <URL: http://www.crcpress.com/product/isbn/9781466561595>.
Xie Y, Allaire J, Grolemund G (2018). R Markdown: The Definitive Guide. Chapman and Hall/CRC, Boca Raton, Florida. ISBN 9781138359338, <URL: https://bookdown.org/yihui/rmarkdown>.
Xie Y, Cheng J, Tan X (2021). DT: A Wrapper of the JavaScript Library ‘DataTables’. R package version 0.17, <URL: https://CRAN.R-project.org/package=DT>.
Xie Y, Dervieux C, Riederer E (2020). R Markdown Cookbook. Chapman and Hall/CRC, Boca Raton, Florida. ISBN 9780367563837, <URL: https://bookdown.org/yihui/rmarkdown-cookbook>.
Text and figures are licensed under Creative Commons Attribution CC BY 4.0. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: "Figure from ...".
For attribution, please cite this work as
Lutai & Sterligov (2021, May 25). Russian Index of Research Organizations: RIRO версия 1.0. Retrieved from https://openriro.github.io/posts/rirov10/
BibTeX citation
@misc{lutai2021riro, author = {Lutai, Aleksei and Sterligov, Ivan}, title = {Russian Index of Research Organizations: RIRO версия 1.0}, url = {https://openriro.github.io/posts/rirov10/}, year = {2021} }