Skip to content

Commit 0ea9dcc

Browse files
committed
updated release 1.0.0 README for codemeta v3.0
No actual vocabulary changes so I opted not to raise the version number
1 parent 4fd926a commit 0ea9dcc

File tree

1 file changed

+44
-31
lines changed

1 file changed

+44
-31
lines changed

release/1.0.0/README.md

Lines changed: 44 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,17 @@ Schema.org profile for specifying software application types, used for software
66

77
**Profile available at**: [https://w3id.org/software-types](https://w3id.org/software-types)
88

9-
**Supported serializations**: [JSON-LD](https://softwareUnderstanding.github.io/software_types/release/1.0.0/software-types.jsonld) (`application/ld+json`), [Turtle](https://softwareUnderstanding.github.io/software_types/release/1.0.0/software-types.ttl) (`text/turtle`) and [HTML](https://softwareunderstanding.github.io/software_types/release/1.0.0/). See the code snippet below for an example on how to retrieve the profile in Turtle with a `curl` command:
9+
**Supported serializations**: [JSON-LD](software-types.jsonld) (`application/ld+json`), [Turtle](software-types.ttl) (`text/turtle`) and HTML (this readme). See the code snippet below for an example on how to retrieve the profile in Turtle with a `curl` command:
1010

1111
```
1212
curl -sH "accept:text/turtle" -L https://w3id.org/software-types
1313
```
1414

15+
Different releases have their own version. For example:
16+
```
17+
curl -sH "accept:text/turtle" -L https://w3id.org/software-types/1.0.0/
18+
```
19+
1520
## Introduction
1621

1722
This profile describes vocabulary terms needed to describe the metadata of software application types (e.g., command line, desktop, software package, software library, etc.). The profile is meant to be used
@@ -51,56 +56,51 @@ interface type. All proposed classes extend `schema:SoftwareApplication`.
5156
* ``SoftwarePackage`` - A software application in the form of a package for any particular package manager. It distributes the application but not necessarily its wider dependency context.
5257
* ``TerminalApplication`` - A software application requiring an interactive terminal text-based user interface. Examples include popular tools like vim, mutt, htop, tmux, ncmpcpp, mc, etc.
5358

59+
Note that the following existing schema.org types are already available for you without needing our extension. Descriptions in *italics* are our own clarifications:
60+
61+
* `schema:WebApplication` - Web applications - *A software application offered through the browser*
62+
* `schema:MobileApplication` - A software application designed specifically to work well on a mobile device such as a telephone.
63+
* `schema:VideoGame` - A video game is an electronic game that involves human interaction with a user interface to generate visual feedback on a video device.
64+
65+
Though not a subclass of `SoftwareApplication` unlike all the others, the following existing class can be used for webservices:
66+
67+
* `schema:WebAPI` - An application programming interface accessible over Web/Internet technologies
5468

5569
## Software types profile: Properties
5670

5771
### Executable name
5872

59-
The name of the executable within a certain run-time context (e.g. an
60-
executable filename or name of an importable module). This documents on a
61-
fairly high level by what name software is invoked from a certain run-time
62-
context. The run-time context itself is turn loosely determined by properties
63-
such as ``schema:runtimePlatform`` and ``schema:operatingSystem``.
73+
The base filename of the executable for the software application. It should not
74+
be a full path, nor should it contain any command-line parameters.
6475

6576
We include this property to make a clear distinction between the human readable
66-
name of the software, and the identifier used in invocation of the software.
77+
name of the software, and the executable used in invocation of the software.
6778
The two may regularly differ with one being more verbose or have stricter
6879
casing than the other.
6980

70-
Examples for this property are:
71-
72-
* The name of the invoked executable as invoked from the command line
73-
* The name of the library as used in the linking stage for compiled languages
74-
* The highest-level name of the module as invoked in an ``import`` or ``include`` statement in languages such as Python, R, Perl, Java.
75-
* The name of the package as passed to a certain package manager (for ``SoftwarePackage``)
76-
* The name of the container as known to a certain container registry (for ``SoftwareImage``)
77-
7881
Examples of this property are also shown in the code snippets A and B.
7982

80-
Note that the executable name should typically not contain any
81-
platform/runtime-specific extensions which may differ across systems
82-
(``.exe``,``.so``,``.dll``,``.dylib``). However, such extensions may be
83-
included if they are static over all possible systems and needed to invoke the
84-
software (``.jar``,``.sh``) and a necessary component in invoking the software
85-
from a specific context.
83+
It's recommended to either leave out any platform-specific extensions like
84+
``.exe`` if the executable differs across platforms, or to simply use the
85+
property multiple times to list all possible variants.
8686

8787
## How are software types terms used with codemeta?
8888

8989
Codemeta, building upon schema.org, describes software metadata focused on the
90-
software's source code (`schema:SoftwareSourceCode`). We call the various
91-
artefacts that can be produced by the source code **target products** and use
92-
use the existing `schema:targetProduct` property to link the source code
93-
description to one or more target products (see discussion
90+
software's source code (`schema:SoftwareSourceCode`). We various artefacts that
91+
can be produced by the source code are linked to it using the `codemeta:isSourceCodeOf` property (see discussion
9492
[here](https://github.com/codemeta/codemeta/issues/267)). These target products
9593
take one of the types defines in our profile, or one of the existing ones
9694
already in schema.org.
9795

96+
**Note:** In Codemeta v2, we used the `schema:targetProduct` property for this because `codemeta:isSourceCodeOf` wasn't introduced yet before v3.
97+
9898
Example A (JSON-LD): An application named [WIDOCO](https://github.com/dgarijo/Widoco/) is both a command line application in Java (JAR), but also a library:
9999

100100
```json
101101
{
102102
"@context": [
103-
"https://raw.githubusercontent.com/codemeta/codemeta/2.0/codemeta.jsonld",
103+
"https://w3id.org/codemeta/v3.0",
104104
"https://raw.githubusercontent.com/schemaorg/schemaorg/main/data/releases/13.0/schemaorgcontext.jsonld",
105105
"https://w3id.org/software-types"
106106
],
@@ -109,7 +109,7 @@ Example A (JSON-LD): An application named [WIDOCO](https://github.com/dgarijo/Wi
109109
"version": "1.14.17",
110110
"codeRepository": "https://github.com/dgarijo/Widoco",
111111
...,
112-
"targetProduct": [
112+
"isSourceCodeOf": [
113113
{
114114
"type": "CommandLineApplication",
115115
"name": "WIDOCO",
@@ -118,7 +118,6 @@ Example A (JSON-LD): An application named [WIDOCO](https://github.com/dgarijo/Wi
118118
},
119119
{
120120
"type": "SoftwareLibrary",
121-
"executableName": "es.oeg.Widoco",
122121
"name": "WIDOCO",
123122
"runtimePlatform": "Linux"
124123
},
@@ -131,15 +130,15 @@ Example B: A python package ([Chowlk](https://github.com/oeg-upm/Chowlk)) can be
131130
```json
132131
{
133132
"@context": [
134-
"https://raw.githubusercontent.com/codemeta/codemeta/2.0/codemeta.jsonld",
133+
"https://w3id.org/codemeta/v3.0",
135134
"https://raw.githubusercontent.com/schemaorg/schemaorg/main/data/releases/13.0/schemaorgcontext.jsonld",
136135
"https://w3id.org/software-types"
137136
],
138137
"@type": "SoftwareSourceCode",
139138
"name": "Chowlk",
140139
"codeRepository": "https://github.com/oeg-upm/Chowlk",
141140
...,
142-
"targetProduct": [
141+
"isSourceCodeOf": [
143142
{
144143
"type": "WebApplication",
145144
"executableName": "chowlk-webapp",
@@ -184,7 +183,7 @@ proposed extension as formulated
184183
[here](https://github.com/schemaorg/schemaorg/issues/1423). These are **not** new properties proposed in this profile.
185184

186185
The link between `SoftwareSourceCode` and subclasses of `SoftwareApplication`,
187-
`WebAPI`, `WebPage` or `WebSite` is established using the `targetProduct`
186+
`WebAPI`, `WebPage` or `WebSite` is established using the `isSourceCodeOf`
188187
property. There is also a reverse property for this called
189188
``codemeta:hasSourceCode`` (see discussion
190189
[here](https://github.com/codemeta/codemeta/pull/229)) that can be used in case of need.
@@ -204,8 +203,22 @@ implemented in the following software:
204203

205204
Many vocabularies exist to describe software or its constituent parts, e.g., the [software description ontology](https://w3id.org/okn/o/sd/), [description of a project vocabulary](http://usefulinc.com/ns/doap#), [hydra](https://www.hydra-cg.com/spec/latest/core/) (for API description), the common workflow language (description of inputs and outputs of software components, etc.), etc. Our proposed profile does not aim to redefine any new term related to software, but propose a lightweight profile that can be easily incorporated into schema.org or codemeta.
206205

206+
## Real Examples
207+
208+
You can consult the following projects as examples that make use of this profile:
209+
210+
* [frog](https://github.com/LanguageMachines/frog/blob/master/codemeta.json)
211+
* [ucto](https://github.com/LanguageMachines/ucto/blob/master/codemeta.json)
212+
* [libfolia](https://github.com/LanguageMachines/libfolia/blob/master/codemeta.json)
213+
214+
Furthermore, the [CLARIAH Tools Portal](https://tools.dev.clariah.nl/) is build on the aforementioned implementations and may offer further examples of codemeta that also incorporates this software application type profile.
215+
207216
## Acknowledgement
208217

209218
This work was indirectly and partially funded through the [CLARIAH-PLUS project](https://clariah.nl).
210219

211220
This work has been supported by the Madrid Government (Comunidad de Madrid-Spain) under the Multiannual Agreement with Universidad Politécnica de Madrid in the line Support for R&D projects for Beatriz Galindo researchers, in the context of the V PRICIT (Regional Programme of Research and Technological Innovation)
221+
222+
## Versions
223+
224+
The development version of software types is what you will find in the root folder of this repository. Different stable versions can be found on the `releases` folder.

0 commit comments

Comments
 (0)