This repository has been developed as part of the FAIR4CoreEOSC project to address two project's pillars (Describe and Cite).
Note
A demonstrable version can be accessed here: Demo Version
Sample snapshot of the codemeta generator and converter demo:
It currently addresses metadata conversions for the following use cases:
| From | To |
|---|---|
| CodeMeta | DataCite 1 |
| CodeMeta | BibLatex 2 |
| CodeMeta | BibTex 3 |
The codemeta conversion pattern to the above schemes is extendable to other metadata schemes as template classes located under Schemes directory. The initial keys correspondence is defined in this repository 4.
Note
There's a scheme template class that can help see this pattern. Please consult the crosswalk 4 and scheme documentations to properly construct this class.
1) Clone this project.
2) Open a console session and navigate to the cloned directory:
Run "composer install"
This should involve installing the PHP REPL, PsySH
3) (optional) Add psysh to PATH
Example, Bash:
echo 'export PATH="$PATH:/The_Cloned_Directory/vendor/bin"' >> ~/.bashrc
source ~/.bashrc
4) (Optional) Create your local branch.
- In a console session inside the cloned directory, start the php REPL:
$ psysh // if not added to PATH replace with: vendor/bin/psysh
Psy Shell v0.12.0 (PHP 8.2.0 — cli) by Justin Hileman- Define namespace:
> namespace Conversions;
> use Conversions;- Specify codemeta.json path:
> $codeMetaPath = 'CodeMeta/codeMeta.json'Note
By default, codemeta.json is located under 'CodeMeta' directory where an example already exists.
$codeMetaPath can also directly take codemeta.json as an array
- Specify target scheme (as fully qualified class name)
> $dataCite = \Schemes\DataCite::class
> $bibLatex = \Schemes\BibLatex::class
> $bibTex = \Schemes\BibTex::classNote
By default, scheme classes are located under 'Schemes' directory.
- Get the conversion from the specified Codemeta.json:
> $errors = NULL; // initialise errors variable
> $dataCiteFromCodeMeta = CodeMetaConversion::To($dataCite, $codeMetaPath, $errors) // array-formatted
> $bibLatexFromCodeMeta = CodeMetaConversion::To($bibLatex, $codeMetaPath, $errors) // string-formatted
> $bibTexFromCodeMeta = CodeMetaConversion::To($bibTex, $codeMetaPath, $errors) // string-formatted- Retrieve errors (if occurred) from the
Illuminate\Support\MessageBag()instance:
> $errors->messages() // gets error messages as specified in CodeMeta/conversionsValidations.php
> $errors->keys() // gets codemeta keys where errors occurred
> $errors->first() // gets the first occurred error message
> $errors->has('identifier') // checks whether an error has occurred in the codemeta `identifier` keyNote
Validations use the Illuminate\Validation\Validator package.
Error messages and rules can be customised in CodeMeta/conversionsValidations.php as per the package syntax.