cffr: R 패키지용 CITATION.cff 파일 생성

새로운 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개의 다른 키를 허용 하므로 추가 필드(예: versionyear또는 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의 예를 참조하십시오 .

Zotero(참조 관리 소프트웨어)의 경우 URL에서 라이브러리에 해당 저장소를 추가할 때 저장소의 CITATION.cff 파일에 있는 정보가 감지됩니다.

이 편리한 기능은 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-citationGitHub에서 인용 정보를 생성하는 데 사용되는 특수 필드 에 유의하십시오 . 이 필드가 없으면 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 에게도 감사드립니다 .


  1. 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 
  2. 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 
  3. 드루스카트, 스테판. (2021년 9월 27일). 소프트웨어 인용을 쉽게 만들기 – 인용 파일 형식과 그 통합. 제노도 . https://doi.org/10.5281/zenodo.5529914 
  4. 매튜 B. 존스, 칼 보티거, 애비 카부녹 메이스, 아폰 스미스, 피터 슬로터, 카일 니마이어, 욜란다 길, 마틴 페너, 크지슈토프 노왁, 마크 하넬, 루크 코이, 앨리스 앨런, 머세 크로사스, 애슐리 샌즈, 닐 추 홍, 패트리샤 크루즈, 다니엘 S. 카츠, 캐롤 고블. 2017. CodeMeta: 소프트웨어 메타데이터에 대한 교환 스키마. 버전 2.0. KNB 데이터 저장소. https://doi.org/10.5063/schema/codemeta-2.0 
  5. 칼 보티거와 마엘 연어(2021). codemetar: R 패키지에 대한 ‘CodeMeta’ 메타데이터를 생성합니다. https://github.com/ropensci/codemetar , https://docs.ropensci.org/codemetar/ 
  6. Rich FitzJohn, Rob Ashton, Mathias Buus 및 Evgeny Poberezkin(2021). jsonvalidate: ‘JSON’ 스키마를 확인합니다. R 패키지 버전 1.3.2 . https://CRAN.R-project.org/package=jsonvalidate 
  7. M. Kearney (2019년 10월 24일). rtweet: Twitter 데이터 수집 및 분석. 오픈 소스 소프트웨어 저널 . 오픈 저널. http://doi.org/10.21105/joss.01829 
  8. Gábor Csárdi, Kirill Müller 및 Jim Hester (2021). desc: 설명 파일을 조작합니다. R 패키지 버전 1.4.0 . https://CRAN.R-project.org/package=desc 

Leave a Comment