Очередной релиз открытого индекса российских научных организаций RIRO включает почти 400 новых организаций, а также значительно расширенные таблицы индентификаторов Wikidata и Scopus.
С окончанием летних отпусков мы с большим удовольствием представляем релиз 1.2 индекса российских научных организаций RIRO.
Важнейшие обновления RIRO 1.2:
увеличено количество головных организаций (с 2812 до 3214);
увеличено количество связанных профилей Scopus (до 4000+);
увеличено количество связанных профилей Wikidata (до 1600+) и изменен формат таблицы.
На иллюстрации ниже показано количество идентификаторов Scopus, ROR, Wikidata, InCites для организаций, включенных в RIRO (v.1.2). Приведенные значения основаны на подсчете идентификаторов для головных и действующих организаций и не учитывают идентификаторы, соответствующие структурным подразделениям или ликвидированным правопредшественникам.
filename <- paste0(img.dir, "chart_upset_v1.2.png")
knitr::include_graphics(filename)
Помимо этого мы опубликовали (и намереваемся продолжать это делать) несколько материалов, иллюстрирующих возможности использования RIRO в прикладных наукометрических исследованиях:
RIRO для идентификации организаций-учредителей научных изданий
Использование массива RIRO для изучения регионального сотрудничества в Scopus и SciVal
Датасет состоит из отдельных таблиц в формате CSV (может быть открыт в Excel или в любых программах по работе с данными), связанных через идентификатор code, который выступает в роли первичного ключа.
Набор таблиц можно скачать с Zenodo вручную или программными средствами, используя OAI-PMH Harvesting API или REST API. Zenodo – один из ведущих репозиториев данных открытой науки, развиваемый на базе ЦЕРН (подробнее).
Способы загрузки датасета описаны в статье Скачиваем датасет RIRO с Zenodo.
Процитировать датасет (без указания версии):
Процитировать датасет RIRO v.1.2 (последняя версия):
Sterligov, Ivan, & Lutay, Aleksei. (2021). Russian Index of the Research Organizations (RIRO) (Version 1.2) [Data set]. Zenodo. http://doi.org/10.5281/zenodo.5502475
riro_versions <- list.dirs(paste0(dir, "/final_tables/"),
recursive = FALSE) %>%
sort(., decreasing = TRUE) %>% .[grepl("1.2",.)]
riro_tables <- list.files(riro_versions, full.names = TRUE)
Ниже будут показаны фрагменты каждой таблицы с информацией о 3 учреждениях, выбранных в качестве примера:
СИБИРСКИЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ
ПЕРМСКИЙ ФЕДЕРАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ ЦЕНТР УРО РАН
ЮЖНЫЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ
Содержит официальные сведения об организации - ОГРН, ИНН/КПП, полное и краткое названия, тип (головное, филиал или представительство) и статус (активное, ликвидировано или в стадии реорганизации). Начиная с версии 1.1. в таблицу 1 также включаются коды и значения Общероссийского классификатора органов государственного управления (ОКОГУ), но только для действующих и головных организаций.
В таблице ниже для экономии места краткие названия и коды ОКОГУ не приведены.
t1 <- riro_tables %>% .[grepl("table1_",.)] %>%
read_csv(col_types = cols(.default = col_character()))
test_group <- t1 %>% filter(ogrn %in% c("1025900517378", "1022402137460", "1026103165241"))
test_group %>% select(code, level, status, name_full, full_okogu, ogrn, inn, kpp) %>%
datatable(rownames = FALSE, filter = "none", escape = FALSE,
class = "row-border",
options = list(columnDefs = list(
list(width = '300px', targets = c(4)),
list(width = '700px', targets = c(3)))
)
)
Поиск по таблице выполнялся по значениям ОГРН, поэтому в таблице появились также действующие филиалы, но каждая строка (запись) имеет свой собственный уникальный код (поле code), который и выступает связующим звеном (ключом) между таблицами.
В этой таблице по значениям code можно найти полный адрес организации (или филиала), отдельные фрагменты адреса, а также код geocode, временной пояс и географические координаты.
t2 <- riro_tables %>% .[grepl("table2_",.)] %>%
read_csv(col_types = cols(.default = col_character()))
t2 %>% filter(code %in% test_group$code) %>%
datatable(rownames = FALSE, filter = "none", escape = FALSE,
class = "row-border",
options = list(columnDefs = list(
list(width = '450px', targets = c(6)))))
Таблица 2 - единственная(!) таблица, поля которой имеют однозначное соответствие с полями таблицы 1 (по значению поля code). Во всех остальных таблицах одному коду (code) могут соответствовать несколько строк.
Данная таблица связывает существующие головные организации с филиалами и правопредшественниками (для удобства в этом документе они обозначены как “дочерние организации”).
Таблица не является абсолютно полной, но для большинства научных организаций включает в себя включает все официальные филиалы (в некоторых случаях и представительства), а также правопредшественников последней реорганизации. Для некоторых организаций часть филиалов не была включена в RIRO из-за отсутствия их связи с научными исследованиями (представительства, базы отдыха, службы охраны и т.п.).
Повторим ещё раз:
для некоторых организаций таблицы 1 и 3 RIRO содержат неполный (!) список филиалов
таблица 1 и 3 не включает всех (!) правопредшественников (только последних и не для всех организаций). При необходимости сбора полных данных мы рекомендуем обратиться к соответствующим официальным источникам информации.
Столбцы code относятся к головной организации, child_code - это code для дочерних организаций, relation - тип отношения (2 значения - “Филиал” или “Правопредшественники”).
t3 <- riro_tables %>% .[grepl("table3_",.)] %>%
read_csv(col_types = cols(.default = col_character()))
full_test <- t3 %>% filter(code %in% test_group$code) %>% arrange(desc(code))
full_test %>%
datatable(rownames = FALSE, filter = "none",
escape = FALSE, class = "row-border",
options = list(autoWidth = FALSE,
columnDefs = list(list(className = 'dt-center',
targets = c(0:2)))))
Итак, используя список из 3 ОГРН, мы из таблицы 1 извлекли 18 строк с различными значениями code, по которым в таблице 3 нашли code правопредшественников, получив в итоге 54 “объектов” с уникальными значениями 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) %>%
left_join(t1 %>% select(parent_code = code, name_short)) %>%
relocate(parent_code, name_short, `Головная`,
`Филиал`, `Правопредшественники`) %>%
datatable(rownames = FALSE, filter = "none",
escape = FALSE, class = "row-border",
options = list(autoWidth = FALSE,
columnDefs = list(list(className = 'dt-center',
targets = c(0, 2:4)))))
Все найденные в таблице 3 дочерние организации содержатся в таблице 1. Филиалы можно было найти в таблице 1 и без обращения к таблице 3 - они имеют те же значения ОГРН и ИНН, что и головные учреждения.
Ниже мы покажем, какую роль в RIRO играют правопредшественники и почему не стоит игнорировать таблицу 3.
Research Organizations Registry – стартовавший в 2019 г. международный общественный проект по созданию открытой базы уникальных идентификаторов научных организаций, по смыслу близкий проекту ORCID для отдельных ученых, построенный с использованием наработок аналогичного проекта GRID (Global Research Identifier Database). Идентификаторы ROR открыто доступны для скачивания как в виде датасета, так и через API. Любой может предложить дополнение или исправление в ROR.
Таблица 4 содержит записи из БД ROR версия 9, которым найдено соответствие в RIRO (ключ code).
Таблица 4 версии RIRO 1.2 не отличается от предыдущей версии.
t4 <- riro_tables %>% .[grepl("table4_",.)] %>%
read_csv(col_types = cols(.default = col_character()))
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_tables %>% .[grepl("table5_",.)] %>%
read_csv(col_types = cols(.default = col_character()))
hierarchy %>% inner_join(t5, by = "code") %>%
arrange(desc(parent_code)) %>%
select(-parent_code, - relation, -wd_item) %>%
mutate_at(c("wikipedia_eng", "wikipedia_rus", "wd_altlabel_eng", "wd_altlabel_rus"),
~ifelse(is.na(.x),.x, paste0(substr(.x,1,60),"...")))%>%
datatable(rownames = FALSE, filter = "none", escape = FALSE, class = "row-border",
options = list(columnDefs = list(
list(width = '250px', targets = c(2:5,7)),
list(width = '120px', targets = c(6,8,9)))))
Начиная с версии 1.2, таблица 5 будет содержать лишь наиболее важные поля, касающиеся идентификации организации и её иерархических связей с другими организациями. В текущей версии в дополнение к свойствам parent/subsidiary, описывающим связь головной организации и филиалов, добавлены свойства replaced_by/replaces, followed_by/follows, is_part_of/has_a_part, а также свойства, указывающие на прекращение существования организации - столбцы disstime и endtime.
Scopus – одна из ведущих мировых баз научного цитирования, аккумулирующая метаданные научных публикаций из десятков тысяч журналов и конференций, а также части книг. Большинство государственных научно-образовательных организаций России имеет к ней доступ в рамках национальной подписки. В рамках этого стандартного доступа всем желающим без дополнительной платы доступен и полноценный API-интерфейс, к которому доступны дружелюбные для неискушенных пользователей API-обертки (wrapper) на python и R, в которых есть функции для сбора информации по идентификаторам организаций.
Таблица содержит идентфикаторы Scopus, которым было найдено соответствие в БД RIRO.
Обращаем внимание, что соответствие профилей организациям определялось по названиям первых и данная таблица не гарантирует полноту или безошибочность их наполнения в Scopus. Приведенное в таблице количество публикаций соответствовало действительности на момент сбора данных (август 2021).
Обращаем также Ваше внимание на то, что в самом низу таблицы 6 для ряда профилей Scopus указано лишь соответствие организации (code), а остальные столбцы пустые. Данные профили больше не отражаются в веб-интерфейсе Scopus, что скорее всего связано с переносом (привязкой) публикаций к основному (главному) профилю организации. В текущей версии таблицы 6 более чем у 800 организаций несколько профилей Scopus - мы надеемся, что с помощью RIRO представители организаций и Elsevier смогут улучшить качество профилей.
О том, как корректировать профиль организации в Scopus можно прочесть на русскоязычном сайте Elsevier.
t6 <- riro_tables %>% .[grepl("table6_",.)] %>%
read_csv(col_types = cols(.default = col_character()))
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 в силу своей большой значимости для инфраструктуры открытой науки будет перезапущен сообществом и идентификаторы какое-то время будут в обращении.
Таблица 7 версии RIRO 1.2 не отличается от предыдущей версии.
t7 <- riro_tables %>% .[grepl("table7_",.)] %>%
read_csv(col_types = cols(.default = col_character()))
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-интерфейса для сбора показателей по организациям, но они доступны для ручного скачивания и связывания с другими данными через название, которое и служит «идентификатором».
Таблица 8 версии RIRO 1.2 не отличается от предыдущей версии.
В таблице приведены официальные названия организации в БД Web of Science и InCites.
t8 <- riro_tables %>% .[grepl("table8_",.)] %>%
read_csv(col_types = cols(.default = col_character()))
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-интерфейсу, который позволяет собирать многочисленные показатели по идентификаторам организаций, представленным в таблице.
Таблица 9 версии RIRO 1.2 не отличается от предыдущей версии.
В таблице приведены официальное название и уникальный идентификатор организации в БД SciVal.
t9 <- riro_tables %>% .[grepl("table9_",.)] %>%
read_csv(col_types = cols(.default = col_character()))
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 открытой веб-страницы с данными о кадрах, финансовой информации, студентах и аспирантах, недвижимости и многом другом, что является очень ценным в соотнесении с данными из других таблиц. Ссылка на профиль Сибирского федерального университеты (id = 1507) выглядит так: https://monitoring.miccedu.ru/iam/2020/_vpo/inst.php?id=1507.
Таблица 10 версии RIRO 1.2 не отличается от предыдущей версии.
t10 <- riro_tables %>% .[grepl("table10_",.)] %>%
read_csv(col_types = cols(.default = col_character()))
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.
К настоящему времени мы распознали лишь часть названий.
Таблица 11 версии RIRO 1.2 не отличается от предыдущей версии.
К сожалению, в рамках централизованной подписки на Web of Science доступ к API-интерфейсам для выгрузки информации об организациях не предоставлен.
t11 <- riro_tables %>% .[grepl("table11_",.)] %>%
read_csv(col_types = cols(.default = col_character()))
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)))))
eLIBRARY.ru - крупнейший российский агрегатор научных изданий. В последние годы компания активно развивает онлайн-сервисы, в том числе и API. Идентификатор организации используется для образования url-адреса профиля организации (например, https://www.elibrary.ru/org_about.asp?orgsid=17548) и некоторыми API принимается в качестве атрибута запроса.
В таблицу 12 включены идентификаторы 1827 крупнейших (по количеству публикаций) организаций.
Таблица 12 версии RIRO 1.2 не отличается от предыдущей версии.
t12 <- riro_tables %>% .[grepl("table12_",.)] %>%
read_csv(col_types = cols(.default = col_character()))
hierarchy %>% inner_join(t12, 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)))))
На иллюстрации ниже для выбранных организаций показано как идентификаторы зарубежных сервисов (ROR, GRID, Scopus Affiliation ID, InCites ID, MAG, Wikidata) и российского оператора (Мониторинг) соответствуют головным организациям, их филиалам и правопредшественникам.
Группы идентификаторов для каждой организации представлены в виде блоков (по горизонтали). В каждом блоке на оси X расположены идентификаторы, по оси Y - сами организации, их филиалы и правпредшественники. Для каждого идентификатора показан тип организации.
filename <- paste0(img.dir, "chart_examples_v1.2.png")
knitr::include_graphics(filename)
Таблицы RIRO содержат не все поля из оригинальных источников (баз данных).
Некоторые таблицы содержат похожие поля. Например, в таблице 4 (ROR) у организаций есть идентификатор Wikidata (ror_wikidata), а в таблице 5 (Wikidata) - идентификатор ROR (wd_ror). Соответствие этих данных друг другу не проверялось.
Отнесение каждого идентификатора к определенной российской организации было сделано, исходя из имеющихся данных (например, по совпадению названия). Корректность содержащейся в профилей информации не гарантирована.
Приоритетными организациями для 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
RIRO (2021, Sept. 15). Russian Index of Research Organizations: RIRO версия 1.2. Retrieved from https://openriro.github.io/posts/rirov12/
BibTeX citation
@misc{riro2021riro, author = {RIRO, Коллектив}, title = {Russian Index of Research Organizations: RIRO версия 1.2}, url = {https://openriro.github.io/posts/rirov12/}, year = {2021} }