You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
"description": "The 'Codemeta' Project defines a 'JSON-LD' format for describing\n software metadata, as detailed at <https://codemeta.github.io>. This package\n provides utilities to generate, parse, and modify 'codemeta.jsonld' files \n automatically for R packages, as well as tools and examples for working with\n 'codemeta' 'JSON-LD' more generally.",
5
+
"description": "The 'CodeMeta' Project defines a 'JSON-LD' format for describing\n software metadata, as detailed at <https://codemeta.github.io>. This package\n provides utilities to generate, parse, and modify 'codemeta.jsonld' files \n automatically for R packages, as well as tools and examples for working with\n 'codemeta' 'JSON-LD' more generally.",
6
6
"name": "codemetar: Generate CodeMeta Metadata for R Packages",
Copy file name to clipboardExpand all lines: content/_index.md
+1-4Lines changed: 1 addition & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,22 +2,19 @@
2
2
title: "The CodeMeta Project"
3
3
---
4
4
5
-
6
5
## Motivation
7
6
8
7
Research relies heavily on scientific software, and a large and growing fraction of researchers are engaged in developing software as part of their own research ([Hannay et al 2009](https://doi.org/10.1109/SECSE.2009.5069155 "How do scientists develop and use scientific software?")). Despite this, _infrastructure to support the preservation, discovery, reuse, and attribution of software_ lags substantially behind that of other research products such as journal articles and research data. This lag is driven not so much by a lack of technology as it is by a lack of unity: existing mechanisms to archive, document, index, share, discover, and cite software contributions are heterogeneous among both disciplines and archives and rarely meet best practices ([Howison 2015](https://doi.org/10.1002/asi.23538 "Software in the scientific literature: Problems with seeing, finding, and using software mentioned in the biology literature")). Fortunately, a rapidly growing movement to improve preservation, discovery, reuse and attribution of academic software is now underway: a recent [NIH report](http://softwarediscoveryindex.org), conferences and working groups of [FORCE11](https://www.force11.org/), [WSSSPE](http://wssspe.researchcomputing.org.uk/) & [Software Sustainability Institute](http://www.software.ac.uk/), and the rising adoption of repositories like [GitHub](https://github.com), [Zenodo](https://zenodo.org), [figshare](https://figshare.com) & [DataONE](https://www.dataone.org) by academic software developers. Now is the time to improve how these resources can talk to each other.
9
8
10
-
11
9
## What can software metadata do for you?
12
10
13
11
What metadata you want from software is determined by your use case. If your primary concerns are credit for academic software, then you're most interested in _citation_ metadata. If you're trying to replicate some analysis, you worry more about versions and dependencies than about authors and titles. And if you seek to discover software you don't already know about that is suitable for a particular task, well then you are interested more in keywords and descriptions. Frequently, developers of scientific software, repositories that host that software, and users themselves are interested in more than one of these objectives, and others besides.
14
12
15
13
Different software repositories, software languages and scientific domains denote this information in different ways, which makes it difficult or impossible for tools to work across these different sources without losing valuable information along the way. For instance, a fantastic collaboration between GitHub and figshare provides researchers a way to import software on the former into the persistent archive of the latter, getting a permanent identifier, a DOI in the process. To assign a DOI, figshare must then pass metadata about the object to DataCite, the central DOI provider for all repositories. While this makes DataCite a powerful aggregator, the lack of a crosswalk table means that much valuable metadata is currently lost along the way, such as the original software license, platform, and so forth. Any tool or approach working across software repositories faces similar challenges without a crosswalk table to translate between these.
16
14
17
-
18
15
For more detail, [visit the project on GitHub](https://github.com/codemeta/codemeta) or check back here soon.
[Cargo](https://doc.rust-lang.org/cargo/) is the Rust package manager.
8
+
9
+
The `Cargo.toml` file for each package is called its manifest. Cargo uses the metadata in the manifest to download Rust package’s dependencies, compile packages, make distributable packages, and upload them to crates.io, the Rust community’s package registry.
10
+
11
+
The manifest format is described in [the Cargo Book](https://doc.rust-lang.org/cargo/reference/manifest.html).
Copy file name to clipboardExpand all lines: content/crosswalk/trove.md
+1-2Lines changed: 1 addition & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -3,7 +3,6 @@ title: "Crosswalk for Trove Software Map"
3
3
image: "/img/sourceforge.png"
4
4
---
5
5
6
-
[Trove Software Map](https://sourceforge.net/p/easyhtml5/tracinst/Software%20Map%20and%20Trove/#what-is-trove). Trove is the system used by SourceForge.net to classify software projects.
7
-
6
+
[Trove Software Map](https://sourceforge.net/p/easyhtml5/tracinst/Software%20Map%20and%20Trove/#what-is-trove). Trove is the system used by SourceForge.net to classify software projects.
Copy file name to clipboardExpand all lines: content/developer-guide.md
+18-16Lines changed: 18 additions & 16 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,7 +7,7 @@ methodology for creating software package descriptions. For example, this guide
7
7
designing software to generate or read CodeMeta JSON software descriptions.
8
8
9
9
Users that only require instructions for manually creating CodeMeta software descriptions may wish to
10
-
review the upcoming [User Guide](/user-guide/).
10
+
review the upcoming [User Guide](/user-guide/).
11
11
12
12
## CodeMeta Overview
13
13
@@ -47,43 +47,46 @@ An example usage of the CodeMeta document is for the author of research software
47
47
48
48
The producer of an CodeMeta Document, i.e. the creators of the software, must use the JSON names from the CodeMeta context file. The consumer of the CodeMeta Document can use these same JSON names from the CodeMeta Document for any necessary processing tasks.
49
49
50
-
As an alternative to using the producer supplied JSON names, the consumer can use the [JSON-LD API](https://www.w3.org/TR/json-ld-api/) to translate the JSON names to their own local JSON names that may be in use by their local processing scripts. This is done by first using the JSON-LD *expand* function that replaces each JSON name in the CodeMeta Document with it's corresponding IRI from the CodeMeta context file. For example, the producer's CodeMeta Document may contain the following line:
50
+
As an alternative to using the producer supplied JSON names, the consumer can use the [JSON-LD API](https://www.w3.org/TR/json-ld-api/) to translate the JSON names to their own local JSON names that may be in use by their local processing scripts. This is done by first using the JSON-LD *expand* function that replaces each JSON name in the CodeMeta Document with it's corresponding IRI from the CodeMeta context file. For example, the producer's CodeMeta Document may contain the following line:
Next, the consumer can use their own context file that maps from each IRI to their own local JSON names. For example, the consumer may have a context that maps the local JSON name 'repository' (as in `package.json` documents used by NPM, see [/crosswalk/node/]) to "http://schema.org/codeRepository", so using the JSON API *compact* function would result in a new CodeMeta Document with the entry:
When the CodeMeta Document has been compacted, it can then be used by the consumer for any necessary processing, using the local JSON names.
63
69
64
70
Note that this expansion and compaction process assumes that both the producer and consumer JSON-LD context files share overlapping sets of IRIs.
65
71
66
-
67
72
## Crosswalk Table
68
73
69
74
## Tools and Integrations
70
75
71
-
72
76
To facilitate automated ingest of research software into repositories such as [figshare](https://figshare.com/), [Zenodo](https://zenodo.org/), the [Knowledge Network for Biocomplexity](https://knb.ecoinformatics.org/) and others, these repositories will update
73
77
their submission processes to use CodeMeta Document which will provide the metadata necessary for the submission and indexing of the software.
74
78
75
79
Tools will be created that assist in the generation of CodeMeta documents. For example, a tool written in the R language would generate a CodeMeta document from an R package that was authored to support a research project, automatically collecting available metadata and possibly prompting the user for any additional required metadata. The CodeMeta document would then be used to assist in publishing the software to a repository. An example CodeMeta document is shown in Appendix C.
76
80
77
81
## Generating Citations from a CodeMeta documents
78
82
79
-
[ TBD ]
80
-
83
+
[ TBD ]
81
84
82
85
## Extending the CodeMeta Context
83
86
84
-
CodeMeta explicitly defines the terms it uses from <http://schema.org>, rather than merely extending <http://schema.org> with a few additional terms. To use additional terms from <http://schema.org> not listed on the [terms page](/terms/) (or terms from any other context), you must extend your context appropriately. For instance, to combine codemeta (v2.0-rc) with all terms available in schema.org, you would do:
87
+
CodeMeta explicitly defines the terms it uses from <http://schema.org>, rather than merely extending <http://schema.org> with a few additional terms. To use additional terms from <http://schema.org> not listed on the [terms page](/terms/) (or terms from any other context), you must extend your context appropriately. For instance, to combine codemeta (v2.0-rc) with all terms available in schema.org, you would do:
@@ -96,7 +99,7 @@ The intent of JSON-LD is to provide a mechanism to represent linked data using s
96
99
For example, in the CodeMeta document, the JSON-LD "@id" keyword is used to associate an IRI with a JSON object. When the JSON-LD CodeMeta document is serialized to RDF, this becomes the graph node identifier, or the subject of the resulting RDF triple. If an @id is not specified for a JSON object, then a blank node identifier is assigned to the resulting graph node for the output RDF graph. The JSON object `role` from the example
When the JSON-LD "@type" keyword is applied to a simple JSON type, the serialized RDF will have that type appended to the object, for example, the following entry from the example CodeMeta document:
113
116
114
-
```
117
+
```json
115
118
"dateCreated":"2016-05-27"
116
119
```
117
120
118
121
is serialized to the following RDF ([N-Triples format](https://www.w3.org/TR/n-triples/)):
The CodeMeta project also introduces the following additional properties, which lack clear equivalents in <https://schema.org> but can play an important role in software metadata records covered by the CodeMeta crosswalk.
Copy file name to clipboardExpand all lines: content/tools.md
+5-10Lines changed: 5 additions & 10 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,10 +1,10 @@
1
-
###Tools
1
+
# Tools
2
2
3
3
This page lists some existing tools to help with CodeMeta files
4
4
5
-
####File Generation
5
+
## File Generation
6
6
7
-
Some of the early tools still need a little updating to use the latest version of the codemeta context.
7
+
Some of the early tools still need a little updating to use the latest version of the codemeta context.
8
8
9
9
{.table .table-striped}
10
10
@@ -23,26 +23,21 @@ tool | language | codemeta version | maintainer | notes
23
23
[AutoCodemeta Generator](https://w3id.org/autocodemeta) | Javascript | 3.0.0 | [dgarijo](http://github.com/dgarijo) | Optimized version of CodeMeta Generator that automatically creates a codemeta file from a given repository
24
24
[Somef](https://github.com/KnowledgeCaptureAndDiscovery/somef) | Python | OEG developers | [dgarijo](http://github.com/dgarijo) | Tool that automatically extracts software metadata from repositories and scientific publications.
25
25
26
-
#### Integrations
27
-
26
+
## Integrations
28
27
29
28
Integrations indicate existing platforms & services which understand CodeMeta descriptions. These do not provide a user-facing software tool for generating codemeta.json, but can ingest
30
29
existing codemeta.json files automatically.
31
30
32
31
{.table .table-striped}
33
32
34
-
Name | Description | Authors | Language | Codemeta Version
33
+
Name | Description | Authors | Language | CodeMeta Version
0 commit comments