새로운 R 패키지인 cffr 이 개발 되었으며 rOpenSci 에서 동료 검토 를 받았으며 CRAN 에서 승인했습니다 . 이 패키지의 목적은 R 패키지의 메타데이터를 사용하여 유효한 CITATION.cff 파일을 만드는 것입니다.
CITATION.cff 파일과 중요한 이유
인용 파일 형식 (CFF)는 인간 – 기계가 읽을 인용 소프트웨어에 대한 정보 (및 데이터 세트)와 일반 텍스트 파일입니다 (1) .
내부적으로 CFF 파일은 YAML 파일입니다. YAML은 모든 사용자가 쉽게 이해할 수 있다는 장점이 있으며 JSON 또는 XML과 같은 다른 데이터 직렬화 언어로 쉽게 변환할 수도 있습니다. 다음은 유효한 CITATION.cff 파일의 최소 콘텐츠 예입니다.
cff 버전: 1.2.0 메시지: '출판물에서 패키지 "cffr"을 인용하려면:' 제목: 'cffr: R 패키지에 대한 인용 파일 형식(''cff'') 메타데이터 생성' 저자: - 성: Hernangómez 이름: 디에고
이 예에서 소프트웨어와 작성자의 식별은 필드 title
및 에서 제공되므로 매우 간단합니다 authors
. CFF 파일에 포함될 수 있는 정보 는 Citation File Format 스키마 버전 1.2.0 이 21개의 다른 키를 허용 하므로 추가 필드(예: version
, year
또는 doi
) 로 더욱 풍부해질 수 있습니다 .
CFF 파일이 중요한 이유는 무엇입니까?
책, 기사 또는 논문을 인용하는 것은 어렵지 않습니다. 대부분의 경우 제목, 저자 및 발행일을 쉽게 식별할 수 있습니다. 그러나 소프트웨어는 연구 프로젝트에서 거의 인용되지 않습니다. 그 이유 중 하나는 이전 게시물( Make Your R Package를 인용하기 쉽게 만들기) 에서 이미 언급한 바와 같이 “패키지 개발자의 명확한 인용 정보 부족” 입니다. 개발자는 새롭고 흥미로운 소프트웨어를 개발하거나 기존 소프트웨어에 새로운 기능을 추가하는 데 수천 시간을 소비하므로 소프트웨어를 인용하는 것은 크레딧이 필요한 곳에 크레딧을 제공하는 문제입니다. R 소프트웨어를 인용하는 것이 중요한 더 많은 이유는 Steffi LaZerte 의 블로그 게시물 How to Cite R and R Packages를 참조하십시오 .
2021년 7월, GitHub는 모든 소프트웨어 사용자가 APA 또는 BibTeX 스타일의 모든 리포지토리를 인용할 수 있는 내장 인용 기능 을 발표했습니다 .
이 기본 제공 기능은 CITATION.cff 파일의 정보를 앞서 언급한 스타일로 렌더링하는 CFF 형식에 크게 의존합니다.
이 발표는 제 개인적인 의견으로는 소프트웨어 인용 생태계의 판도를 바꾼 것이었습니다. 그 증거로 다음 이틀에 Zenodo 와 Zotero 는 GitHub 통합에서 CITATION.cff 파일에 대한 지원을 발표했습니다.
Zenodo와의 통합은 Zenodo 를 통해 GitHub 저장소용 DOI (Digital Object Identifier )를 생성할 때 저장소의 CITATION.cff 파일에 포함된 메타데이터에 따라 DOI가 생성된다는 것을 의미합니다. 이 기능은 개발자가 메타데이터 측면에서 DOI와 소프트웨어를 일관성 있게 만드는 추가 노력을 줄여줍니다. 제목, 설명 및 작성자가 cffr CITATION.cff 파일 에서 수집된 cffr DOI의 예를 참조하십시오 .
이 편리한 기능은 GitHub 저장소가 효과적으로 DOI, ISBN 또는 arXiv ID로 작동할 수 있음을 의미합니다. Zotero는 사용자의 개인 Zotero 참조 라이브러리를 포함하여 저장소의 작성자, 제목, 날짜 및 기타 관련 메타데이터를 인식합니다.
그리고 아직 더 있습니다! CiteAs 서비스는 CFF 파일 2 도 지원 하며 앞으로 JabRef 또는 GitLab 3 과 같은 더 많은 플랫폼 에서 CITATION.cff 파일에 대한 지원을 추가할 수 있습니다( CRAN 또는 BioConductor가 아닌 이유는 무엇입니까?).
기타 소프트웨어 인용 프로젝트
CodeMeta 프로젝트 (4)는 저장소 및 조직 전체 소프트웨어 메타 데이터의 교환을 표준화하는 데 사용할 수있는 개념 어휘를 만듭니다. codemeta.json 파일의 많은 용도 중 하나는 제목, 저자, 출판 연도 또는 버전과 같은 인용 메타데이터를 제공하는 것입니다. codemetar의 패키지 5 는 R 패키지 메타 데이터에서 codemeta.json 파일을 생성 할 수 있습니다.
cffr 사용
cffr을 시작하는 것은 매우 쉽습니다. 패키지 cff_write()
의 메타데이터(이미 DESCRIPTION 및 inst/CITATION 파일에 포함되어 있음 ) 를 추출하고 CITATION.cff 파일로 변환하고 jsonvalidate 6을 사용하여 최신 CFF 유효성 검사 스키마 에 대해 유효성을 검사합니다 .
라이브러리(cffr) # 개발 중인 패키지의 경우 cff_write() #> #> CITATION.cff 생성 #> #> cff_결과 확인----- #> 축하합니다! 이 .cff 파일은 유효합니다.
cff
개체 작업
또한 cff
컴퓨터에 로컬로 설치된 패키지에 대한 개체(사용자 지정 인쇄 방법을 사용하는 일반 R 목록) 를 만들 수도 있습니다 . 다음 예 cff
에서는 rtweet 7 패키지에 대한 개체를 만듭니다 .
라이브러리(cffr) cff_rtweet <- cff_create("rtweet") cff_rtweet #> cff 버전: 1.2.0 #> 메시지: '출판물에서 패키지 "rtweet"을 인용하려면:' #> 유형: 소프트웨어 #> 라이선스: MIT #> title: 'rtweet: Twitter 데이터 수집' #> 버전: 0.7.0 #> 도이: 10.21105/joss.01829 #> abstract: '트위터 데이터를 수집하고 구성하도록 설계된 호출 구현 #> Twitter의 REST 및 스트림 API(응용 프로그램 인터페이스)를 통해 #> URL <https://developer.twitter.com/en/docs>에서 찾을 수 있습니다. 이 패키지 #>은(는) rOpenSci(v. 0.6.9)에서 동료 검토를 받았습니다.' #> 저자: #> - 성: Kearney #> 이름: Michael W. #> 이메일: kearneymw@missouri.edu #> 난초 : https://orcid.org/0000-0002-0730-4694 #> 우선 인용: #> 유형: 기사 #> title: 'rtweet: 트위터 데이터 수집 및 분석' #> 저자: #> - 성: Kearney #> 이름: Michael W. #> 연도: '2019' #> 저널: 오픈 소스 소프트웨어 저널 #> 볼륨: '4' #> 번호: '42' #> 페이지: '1829' #> 도이: 10.21105/joss.01829 #> URL: https://joss.theoj.org/papers/10.21105/joss.01829 #> 저장소: https://CRAN.R-project.org/package=rtweet #> 저장소 코드: https://github.com/ropensci/rtweet #> URL: https://CRAN.R-project.org/package=rtweet #> 발매일 : '2020-01-08' #> 연락처: #> - 성: Kearney #> 이름: Michael W. #> 이메일: kearneymw@missouri.edu #> 난초 : https://orcid.org/0000-0002-0730-4694 #> 키워드: #> - r #> - 트위터
preferred-citation
GitHub에서 인용 정보를 생성하는 데 사용되는 특수 필드 에 유의하십시오 . 이 필드가 없으면 GitHub는 파일의 다른 키를 재사용하여 인용 참조를 자동 생성합니다.
이미 언급했듯이 cffr은 설명( desc 8 패키지 를 통해 )과 inst/CITATION 파일의 정보를 사용하여 메타데이터를 추출합니다. 이제 rtweet의 인용 정보와 cffr이 생성한 정보를 비교하는 데 중점을 둘 것입니다.
toBibtex(인용("rtweet")) #> @Article{rtweet-package, #> title = {rtweet: Twitter 데이터 수집 및 분석}, #> 저자 = {Michael W. Kearney}, #> 연도 = {2019}, #> 참고 = {R 패키지 버전 0.7.0}, #> 저널 = {오픈 소스 소프트웨어 저널}, #> 볼륨 = {4}, #> 숫자 = {42}, #> 페이지 = {1829}, #> 도이 = {10.21105/joss.01829}, #> URL = {https://joss.theoj.org/papers/10.21105/joss.01829}, #> } cff_rtweet$`우선 인용` #> 유형: 기사 #> title: 'rtweet: 트위터 데이터 수집 및 분석' #> 저자: #> - 성: Kearney #> 이름: Michael W. #> 연도: '2019' #> 저널: 오픈 소스 소프트웨어 저널 #> 볼륨: '4' #> 번호: '42' #> 페이지: '1829' #> 도이: 10.21105/joss.01829 #> URL: https://joss.theoj.org/papers/10.21105/joss.01829
rtweet 인용의 핵심 정보가 cff
객체에 포함되어 있는지 확인할 수 있으며 rtweet의 DESCRIPTION 파일에 포함된 필드도 확인할 수 있습니다.
packageDescription("rtweet", 필드 = c( "제목", "설명", "저자", "버전", "URL" ) ) #> 제목: Twitter 데이터 수집 #> 설명: Twitter를 수집하고 구성하도록 설계된 호출 구현 #> Twitter의 REST 및 스트림 애플리케이션 프로그램 인터페이스를 통한 데이터 #>(API)는 다음 URL에서 찾을 수 있습니다. #> <https://developer.twitter.com/en/docs>. 이 패키지는 #> rOpenSci(v. 0.6.9)의 동료 검토. #> 저자: Michael W. Kearney [aut, cre] (<https://orcid.org/0000-0002-0730-4694>), #> Andrew Heiss [rev] (<https://orcid.org/0000-0002-3948-3914>), Francois #> 브리아테 [rev] #> 버전: 0.7.0 #> URL: https://CRAN.R-project.org/package=rtweet #> #> -- 파일: C:/Users/diego/Documents/R/win-library/4.1/rtweet/Meta/package.rds #> -- 읽은 필드: 제목, 설명, 작성자, 버전, URL
다음 청크에서 cff
객체 의 해당 필드와 비교 합니다.
as.cff(cff_rtweet[ c("제목", "추상", "저자", "버전", "URL") ]) #> title: 'rtweet: Twitter 데이터 수집' #> abstract: '트위터 데이터를 수집하고 구성하도록 설계된 호출 구현 #> Twitter의 REST 및 스트림 API(응용 프로그램 인터페이스)를 통해 #> URL <https://developer.twitter.com/en/docs>에서 찾을 수 있습니다. 이 패키지 #>은(는) rOpenSci(v. 0.6.9)에서 동료 검토를 받았습니다.' #> 저자: #> - 성: Kearney #> 이름: Michael W. #> 이메일: kearneymw@missouri.edu #> 난초 : https://orcid.org/0000-0002-0730-4694 #> 버전: 0.7.0 #> URL: https://CRAN.R-project.org/package=rtweet
유효한 키
다음은 CFF 스키마의 모든 유효한 키 목록입니다. 대부분은 DESCRIPTION 및 inst/CITATION 파일의 필드(또는 필드 조합)와 명시적으로 매핑됩니다.
요약 | 식별자 | 저장소 |
저자 | 키워드 | 저장소-아티팩트 |
cff 버전 | 특허 | 저장소 코드 |
저 지르다 | 라이센스 URL | 제목 |
연락하다 | 메세지 | 유형 |
출시일 | 우선 인용 | URL |
도이 | 참조 | 버전 |
cffr 패키지에는 이러한 필드가 몇 가지 예와 함께 계산되는 방법을 설명하는 광범위한 비네트 도 포함되어 있습니다.
cff
개체 유효성 검사
cff
객체를 생성한 후에는 cff_validate()
함수를 사용하여 유효성을 확인할 수 있습니다 . 이 함수는 cff
개체 및 CITATION.cff 파일과 함께 사용할 수 있습니다 . 오류가 있는 경우 출력 메시지가 개체를 디버그하는 데 도움이 됩니다.
cff_validate(cff_rtweet) #> #> cff_결과 확인----- #> 축하합니다! 이 cff 개체는 유효합니다. # cff 객체에서 CITATION.cff 파일 생성 및 유효성 검사 cff_rtweet %>% # 임시 파일에 쓰기 cff_write(tempfile("인용", fileext = ".cff"), 자세한 = 거짓, 검증 = 거짓 ) %>% cff_validate() #> #> cff_결과 확인----- #> 축하합니다! 이 cff 개체는 유효합니다. # 고의적인 오류를 생성하고 유효성 검사기를 사용합니다. # 기본값을 키 매개변수로 재정의 잘못된 키 <- 목록( url = "나는 url이 아니다", doi = "나는 doi가 아닙니다" ) cff_create("rtweet", 키 = wrong_keys) %>% cff_validate() #> #> cff_결과 확인----- #> 앗! 이 cff 개체에는 다음 오류가 있습니다. #> 필드 메시지 #> 1 data.doi 참조 스키마가 일치하지 않습니다 #> 2 data.url 참조 스키마가 일치하지 않습니다
cff
메시지에서 볼 수 있듯이 초기 개체의 유효성 검사 가 만족스럽습니다. 그러나 keys
매개변수를 사용하여 일부 잘못된 값을 강제 실행한 두 번째 예에서는 텍스트 문자열이 해당 필드의 예상 패턴(예: URL의 경우 “http*”)과 일치하지 않기 때문에 doi
및 url
필드에 오류 플래그가 지정 되었음을 알 수 있습니다. 및 DOI의 경우 “10XXXX/XXXX”).
CITATION.cff 파일을 최신 상태로 유지
CITATION.cff에는 패키지의 버전, 릴리스 날짜 및 DOI에 대한 관련 정보가 포함되어 있으므로 이 정보를 최신 상태로 유지하는 것이 좋습니다. cffr에는 작업 을 수행 하는 GitHub 작업 이 포함되어 있습니다.
리포지토리에 설치 cff_gha_update()
하거나 .github/workflows
폴더에 복사할 수 있으며 다음 이벤트에서 CITATION.cff 파일을 업데이트합니다.
- GitHub 리포지토리에 패키지의 새 릴리스를 게시할 때.
- 설명 또는 inst/CITATION 파일을 수정할 때마다.
- 또한 작업을 수동으로 실행할 수도 있습니다.
이렇게 하면 패키지 인용이 항상 정확합니다.
결론
지난 몇 달 동안 과학 인용 생태계에서 CITATION.cff 파일에 대한 지원이 증가했습니다. cffr 패키지를 사용하면 모든 R-패키지 개발자가 GitHub에서 도입한 지원을 활용하는 CITATION.cff 파일 생성을 통해 인용 정보를 다양한 서비스와 쉽게 통합할 수 있습니다.
감사의 말
Carl Boettiger , Maëlle Salmon 및 codemetar 패키지 의 나머지 기여자 에게 감사드립니다 . 이 패키지는 cffr 개발에 대한 주요 영감이며 소프트웨어 개발자의 노력에 대한 인식을 높이는 공통 목표를 공유합니다.
패키지와 문서를 개선하는 데 도움을 준 철저한 검토 에 대해 João Martins 와 Scott Chamberlain , 검토 프로세스 를 처리한 Emily Riederer 에게도 감사드립니다 .
- Druskat, S., Spaaks, JH, Chue Hong, N., Haines, R., Baker, J., Bliven, S., Willighagen, E., Pérez-Suárez, D., & Konovalov, A. (2021) . 인용 파일 형식(버전 1.2.0) [컴퓨터 소프트웨어]. https://doi.org/10.5281/zenodo.5171937 ︎
- Du, C., Cohoon, J., Priem, J., Piwowar, H., Meyer, C. 및 Howison, J. (2021, 10월 23일). CiteAs: 더 나은 소프트웨어 인용을 위한 사회적 기술 변화를 통한 더 나은 소프트웨어. 2021년 컴퓨터 지원 협동 작업 및 소셜 컴퓨팅 컨퍼런스의 동반자 간행물 . ACM. http://doi.org/10.1145/3462204.3482889 ︎
- 드루스카트, 스테판. (2021년 9월 27일). 소프트웨어 인용을 쉽게 만들기 – 인용 파일 형식과 그 통합. 제노도 . https://doi.org/10.5281/zenodo.5529914 ︎
- 매튜 B. 존스, 칼 보티거, 애비 카부녹 메이스, 아폰 스미스, 피터 슬로터, 카일 니마이어, 욜란다 길, 마틴 페너, 크지슈토프 노왁, 마크 하넬, 루크 코이, 앨리스 앨런, 머세 크로사스, 애슐리 샌즈, 닐 추 홍, 패트리샤 크루즈, 다니엘 S. 카츠, 캐롤 고블. 2017. CodeMeta: 소프트웨어 메타데이터에 대한 교환 스키마. 버전 2.0. KNB 데이터 저장소. https://doi.org/10.5063/schema/codemeta-2.0 ︎
- 칼 보티거와 마엘 연어(2021). codemetar: R 패키지에 대한 ‘CodeMeta’ 메타데이터를 생성합니다. https://github.com/ropensci/codemetar , https://docs.ropensci.org/codemetar/ ︎
- Rich FitzJohn, Rob Ashton, Mathias Buus 및 Evgeny Poberezkin(2021). jsonvalidate: ‘JSON’ 스키마를 확인합니다. R 패키지 버전 1.3.2 . https://CRAN.R-project.org/package=jsonvalidate ︎
- M. Kearney (2019년 10월 24일). rtweet: Twitter 데이터 수집 및 분석. 오픈 소스 소프트웨어 저널 . 오픈 저널. http://doi.org/10.21105/joss.01829 ︎
- Gábor Csárdi, Kirill Müller 및 Jim Hester (2021). desc: 설명 파일을 조작합니다. R 패키지 버전 1.4.0 . https://CRAN.R-project.org/package=desc