Skip to content

front-matter/commonmeta-ruby

Repository files navigation

DOI Gem Version Coverage Maintainability Rating GitHub

commonmeta-ruby

Ruby gem and command-line utility for the conversion of scholarly metadata, including schema.org. Based on the bolognese gem, but using commonmeta as the intermediate format, and supporting additional metadata formats. A Python version is available at commonmeta-py.

Supported Metadata Formats

commonmeta-ruby reads and/or writes these metadata formats:

Format Name Content Type Read Write
Commonmeta commonmeta application/vnd.commonmeta+json yes yes
CrossRef Unixref XML crossref application/vnd.crossref.unixref+xml yes yes
Crossref crossref application/vnd.crossref+json yes no
DataCite datacite application/vnd.datacite.datacite+json yes yes
Schema.org (in JSON-LD) schema_org application/vnd.schemaorg.ld+json yes yes
RDF XML rdf_xml application/rdf+xml no yes
RDF Turtle turtle text/turtle no yes
CSL-JSON csl application/vnd.citationstyles.csl+json yes yes
Formatted text citation citation text/x-bibliography no yes
Codemeta codemeta application/vnd.codemeta.ld+json yes yes
Citation File Format (CFF) cff application/vnd.cff+yaml yes yes
JATS jats application/vnd.jats+xml no yes
CSV csv text/csv no yes
BibTex bibtex application/x-bibtex yes yes
RIS ris application/x-research-info-systems yes yes

Installation

Requires Ruby 3.0 or later (Ruby 2.x has reached its end of life March 2023). Then add the following to your Gemfile to install the latest version:

gem 'commonmeta-ruby'

Then run bundle install to install into your environment.

You can also install the gem system-wide in the usual way:

gem install commonmeta-ruby

Commands

Run the commonmeta command with either an identifier (DOI or URL) or filename:

commonmeta https://doi.org/10.7554/elife.01567
commonmeta example.xml

commonmeta can read BibTeX files (file extension .bib), RIS files (file extension .ris), Crossref files (file extension .xml), DataCite files and CSL-JSON files.

The input format (e.g. Crossref or BibteX) is automatically detected, but you can also provide the format with the --from or -f flag. The supported input formats are listed in the table above.

The output format is determined by the --to or -t flag, and defaults to schema_org.

Show all commands with commonmeta help:

Commands:
  commonmeta                 # convert metadata
  commonmeta --version, -v   # print the version
  commonmeta help [COMMAND]  # Describe available commands or one specific command

Errors

Errors are returned to STDOUT.

All input is validated against the commonmeta JSON schema.

Examples

Read Crossref XML and write as BibTeX:

commonmeta https://doi.org/10.7554/elife.01567 -f crossref_xml -t bibtex

@article{https://doi.org/10.7554/elife.01567,
  doi = {10.7554/elife.01567},
  url = {https://elifesciences.org/articles/01567},
  author = {Sankar, Martial and Nieminen, Kaisa and Ragni, Laura and Xenarios, Ioannis and Hardtke, Christian S},
  title = {Automated quantitative histology reveals vascular morphodynamics during Arabidopsis hypocotyl secondary growth},
  journal = {eLife},
  volume = {3},
  pages = {e01567},
  publisher = {eLife Sciences Publications, Ltd},
  year = {2014},
  copyright = {CC-BY-3.0}
}

Convert Crossref to schema.org/JSON-LD:

commonmeta https://doi.org/10.7554/elife.01567

{
    "@context": "http://schema.org",
    "@type": "ScholarlyArticle",
    "@id": "https://doi.org/10.7554/elife.01567",
    "url": "http://elifesciences.org/lookup/doi/10.7554/eLife.01567",
    "additionalType": "JournalArticle",
    "name": "Automated quantitative histology reveals vascular morphodynamics during Arabidopsis hypocotyl secondary growth",
    "author": [{
        "@type": "Person",
        "givenName": "Martial",
        "familyName": "Sankar"
    }, {
        "@type": "Person",
        "givenName": "Kaisa",
        "familyName": "Nieminen"
    }, {
        "@type": "Person",
        "givenName": "Laura",
        "familyName": "Ragni"
    }, {
        "@type": "Person",
        "givenName": "Ioannis",
        "familyName": "Xenarios"
    }, {
        "@type": "Person",
        "givenName": "Christian S",
        "familyName": "Hardtke"
    }],
    "license": "http://creativecommons.org/licenses/by/3.0/",
    "datePublished": "2014-02-11",
    "dateModified": "2015-08-11T05:35:02Z",
    "isPartOf": {
        "@type": "Periodical",
        "name": "eLife",
        "issn": "2050-084X"
    },
    "citation": [{
        "@type": "CreativeWork",
        "@id": "https://doi.org/10.1038/nature02100",
        "position": "1",
        "datePublished": "2003"
    }, {
        "@type": "CreativeWork",
        "@id": "https://doi.org/10.1534/genetics.109.104976",
        "position": "2",
        "datePublished": "2009"
    }, {
        "@type": "CreativeWork",
        "@id": "https://doi.org/10.1034/j.1399-3054.2002.1140413.x",
        "position": "3",
        "datePublished": "2002"
    }, {
        "@type": "CreativeWork",
        "@id": "https://doi.org/10.1162/089976601750399335",
        "position": "4",
        "datePublished": "2001"
    }, {
        "@type": "CreativeWork",
        "position": "5",
        "datePublished": "1995"
    }, {
        "@type": "CreativeWork",
        "position": "6",
        "datePublished": "1993"
    }, {
        "@type": "CreativeWork",
        "@id": "https://doi.org/10.1016/j.semcdb.2009.09.009",
        "position": "7",
        "datePublished": "2009"
    }, {
        "@type": "CreativeWork",
        "@id": "https://doi.org/10.1242/dev.091314",
        "position": "8",
        "datePublished": "2013"
    }, {
        "@type": "CreativeWork",
        "@id": "https://doi.org/10.1371/journal.pgen.1002997",
        "position": "9",
        "datePublished": "2012"
    }, {
        "@type": "CreativeWork",
        "@id": "https://doi.org/10.1038/msb.2010.25",
        "position": "10",
        "datePublished": "2010"
    }, {
        "@type": "CreativeWork",
        "@id": "https://doi.org/10.1016/j.biosystems.2012.07.004",
        "position": "11",
        "datePublished": "2012"
    }, {
        "@type": "CreativeWork",
        "@id": "https://doi.org/10.1016/j.pbi.2005.11.013",
        "position": "12",
        "datePublished": "2006"
    }, {
        "@type": "CreativeWork",
        "@id": "https://doi.org/10.1105/tpc.110.076083",
        "position": "13",
        "datePublished": "2010"
    }, {
        "@type": "CreativeWork",
        "@id": "https://doi.org/10.1073/pnas.0808444105",
        "position": "14",
        "datePublished": "2008"
    }, {
        "@type": "CreativeWork",
        "@id": "https://doi.org/10.1016/0092-8674(89)90900-8",
        "position": "15",
        "datePublished": "1989"
    }, {
        "@type": "CreativeWork",
        "@id": "https://doi.org/10.1126/science.1066609",
        "position": "16",
        "datePublished": "2002"
    }, {
        "@type": "CreativeWork",
        "@id": "https://doi.org/10.1104/pp.104.040212",
        "position": "17",
        "datePublished": "2004"
    }, {
        "@type": "CreativeWork",
        "@id": "https://doi.org/10.1038/nbt1206-1565",
        "position": "18",
        "datePublished": "2006"
    }, {
        "@type": "CreativeWork",
        "@id": "https://doi.org/10.1073/pnas.77.3.1516",
        "position": "19",
        "datePublished": "1980"
    }, {
        "@type": "CreativeWork",
        "@id": "https://doi.org/10.1093/bioinformatics/btq046",
        "position": "20",
        "datePublished": "2010"
    }, {
        "@type": "CreativeWork",
        "@id": "https://doi.org/10.1105/tpc.111.084020",
        "position": "21",
        "datePublished": "2011"
    }, {
        "@type": "CreativeWork",
        "@id": "https://doi.org/10.5061/dryad.b835k",
        "position": "22",
        "datePublished": "2014"
    }, {
        "@type": "CreativeWork",
        "@id": "https://doi.org/10.1016/j.cub.2008.02.070",
        "position": "23",
        "datePublished": "2008"
    }, {
        "@type": "CreativeWork",
        "@id": "https://doi.org/10.1111/j.1469-8137.2010.03236.x",
        "position": "24",
        "datePublished": "2010"
    }, {
        "@type": "CreativeWork",
        "@id": "https://doi.org/10.1007/s00138-011-0345-9",
        "position": "25",
        "datePublished": "2012"
    }, {
        "@type": "CreativeWork",
        "@id": "https://doi.org/10.1016/j.cell.2012.02.048",
        "position": "26",
        "datePublished": "2012"
    }, {
        "@type": "CreativeWork",
        "@id": "https://doi.org/10.1038/ncb2764",
        "position": "27",
        "datePublished": "2013"
    }],
    "funder": [{
        "@type": "Organization",
        "name": "SystemsX"
    }, {
        "@type": "Organization",
        "@id": "https://doi.org/10.13039/501100003043",
        "name": "EMBO"
    }, {
        "@type": "Organization",
        "@id": "https://doi.org/10.13039/501100001711",
        "name": "Swiss National Science Foundation"
    }, {
        "@type": "Organization",
        "@id": "https://doi.org/10.13039/501100006390",
        "name": "University of Lausanne"
    }],
    "provider": {
        "@type": "Organization",
        "name": "Crossref"
    }
}

Convert Crossref to DataCite:

commonmeta https://doi.org/10.7554/elife.01567 -t datacite

{
  "id": "https://doi.org/10.7554/elife.01567",
  "doi": "10.7554/elife.01567",
  "url": "https://elifesciences.org/articles/01567",
  "types": {
    "resourceTypeGeneral": "JournalArticle",
    "bibtex": "article",
    "citeproc": "article-journal",
    "ris": "JOUR",
    "schemaOrg": "ScholarlyArticle"
  },
  "creators": [
    {
      "name": "Sankar, Martial",
      "nameType": "Personal",
      "givenName": "Martial",
      "familyName": "Sankar",
      "affiliation": [
        {
          "name": "Department of Plant Molecular Biology, University of Lausanne, Lausanne, Switzerland"
        }
      ]
    },
    {
      "name": "Nieminen, Kaisa",
      "nameType": "Personal",
      "givenName": "Kaisa",
      "familyName": "Nieminen",
      "affiliation": [
        {
          "name": "Department of Plant Molecular Biology, University of Lausanne, Lausanne, Switzerland"
        }
      ]
    },
    {
      "name": "Ragni, Laura",
      "nameType": "Personal",
      "givenName": "Laura",
      "familyName": "Ragni",
      "affiliation": [
        {
          "name": "Department of Plant Molecular Biology, University of Lausanne, Lausanne, Switzerland"
        }
      ]
    },
    {
      "name": "Xenarios, Ioannis",
      "nameType": "Personal",
      "givenName": "Ioannis",
      "familyName": "Xenarios",
      "affiliation": [
        {
          "name": "Vital-IT, Swiss Institute of Bioinformatics, Lausanne, Switzerland"
        }
      ]
    },
    {
      "name": "Hardtke, Christian S",
      "nameType": "Personal",
      "givenName": "Christian S",
      "familyName": "Hardtke",
      "affiliation": [
        {
          "name": "Department of Plant Molecular Biology, University of Lausanne, Lausanne, Switzerland"
        }
      ]
    }
  ],
  "titles": [
    {
      "title": "Automated quantitative histology reveals vascular morphodynamics during Arabidopsis hypocotyl secondary growth"
    }
  ],
  "publisher": "eLife Sciences Publications, Ltd",
  "container": {
    "type": "Journal",
    "title": "eLife",
    "identifier": "2050-084X",
    "identifierType": "ISSN",
    "volume": "3"
  },
  "subjects": [

  ],
  "contributors": [

  ],
  "dates": [
    {
      "date": "2014-02-11",
      "dateType": "Issued"
    },
    {
      "date": "2022-03-26",
      "dateType": "Updated"
    }
  ],
  "alternateIdentifiers": [

  ],
  "rightsList": [
    {
      "rightsIdentifier": "cc-by-3.0",
      "rightsUri": "https://creativecommons.org/licenses/by/3.0/legalcode",
      "rights": "Creative Commons Attribution 3.0 Unported",
      "rightsIdentifierScheme": "SPDX",
      "schemeUri": "https://spdx.org/licenses/"
    }
  ],
  "descriptions": [
    {
      "description": "Among various advantages, their small size makes model organisms preferred subjects of investigation. Yet, even in model systems detailed analysis of numerous developmental processes at cellular level is severely hampered by their scale. For instance, secondary growth of Arabidopsis hypocotyls creates a radial pattern of highly specialized tissues that comprises several thousand cells starting from a few dozen. This dynamic process is difficult to follow because of its scale and because it can only be investigated invasively, precluding comprehensive understanding of the cell proliferation, differentiation, and patterning events involved. To overcome such limitation, we established an automated quantitative histology approach. We acquired hypocotyl cross-sections from tiled high-resolution images and extracted their information content using custom high-throughput image processing and segmentation. Coupled with automated cell type recognition through machine learning, we could establish a cellular resolution atlas that reveals vascular morphodynamics during secondary growth, for example equidistant phloem pole formation.",
      "descriptionType": "Abstract"
    }
  ],
  "fundingReferences": [
    {
      "funderName": "SystemsX"
    },
    {
      "funderName": "EMBO longterm post-doctoral fellowships"
    },
    {
      "funderName": "Marie Heim-Voegtlin"
    },
    {
      "funderName": "University of Lausanne",
      "funderIdentifier": "https://doi.org/10.13039/501100006390",
      "funderIdentifierType": "Crossref Funder ID"
    },
    {
      "funderName": "SystemsX"
    },
    {
      "funderName": "EMBO",
      "funderIdentifier": "https://doi.org/10.13039/501100003043",
      "funderIdentifierType": "Crossref Funder ID"
    },
    {
      "funderName": "Swiss National Science Foundation",
      "funderIdentifier": "https://doi.org/10.13039/501100001711",
      "funderIdentifierType": "Crossref Funder ID"
    },
    {
      "funderName": "University of Lausanne",
      "funderIdentifier": "https://doi.org/10.13039/501100006390",
      "funderIdentifierType": "Crossref Funder ID"
    }
  ],
  "relatedIdentifiers": [
    {
      "relatedIdentifier": "https://doi.org/10.1038/nature02100",
      "relatedIdentifierType": "DOI",
      "relationType": "References"
    },
    {
      "relatedIdentifier": "https://doi.org/10.1534/genetics.109.104976",
      "relatedIdentifierType": "DOI",
      "relationType": "References"
    },
    {
      "relatedIdentifier": "https://doi.org/10.1034/j.1399-3054.2002.1140413.x",
      "relatedIdentifierType": "DOI",
      "relationType": "References"
    },
    {
      "relatedIdentifier": "https://doi.org/10.1162/089976601750399335",
      "relatedIdentifierType": "DOI",
      "relationType": "References"
    },
    {
      "relatedIdentifier": "https://doi.org/10.1007/bf00994018",
      "relatedIdentifierType": "DOI",
      "relationType": "References"
    },
    {
      "relatedIdentifier": "https://doi.org/10.1242/dev.119.1.71",
      "relatedIdentifierType": "DOI",
      "relationType": "References"
    },
    {
      "relatedIdentifier": "https://doi.org/10.1016/j.semcdb.2009.09.009",
      "relatedIdentifierType": "DOI",
      "relationType": "References"
    },
    {
      "relatedIdentifier": "https://doi.org/10.1242/dev.091314",
      "relatedIdentifierType": "DOI",
      "relationType": "References"
    },
    {
      "relatedIdentifier": "https://doi.org/10.1371/journal.pgen.1002997",
      "relatedIdentifierType": "DOI",
      "relationType": "References"
    },
    {
      "relatedIdentifier": "https://doi.org/10.1038/msb.2010.25",
      "relatedIdentifierType": "DOI",
      "relationType": "References"
    },
    {
      "relatedIdentifier": "https://doi.org/10.1016/j.biosystems.2012.07.004",
      "relatedIdentifierType": "DOI",
      "relationType": "References"
    },
    {
      "relatedIdentifier": "https://doi.org/10.1016/j.pbi.2005.11.013",
      "relatedIdentifierType": "DOI",
      "relationType": "References"
    },
    {
      "relatedIdentifier": "https://doi.org/10.1105/tpc.110.076083",
      "relatedIdentifierType": "DOI",
      "relationType": "References"
    },
    {
      "relatedIdentifier": "https://doi.org/10.1073/pnas.0808444105",
      "relatedIdentifierType": "DOI",
      "relationType": "References"
    },
    {
      "relatedIdentifier": "https://doi.org/10.1016/0092-8674(89)90900-8",
      "relatedIdentifierType": "DOI",
      "relationType": "References"
    },
    {
      "relatedIdentifier": "https://doi.org/10.1126/science.1066609",
      "relatedIdentifierType": "DOI",
      "relationType": "References"
    },
    {
      "relatedIdentifier": "https://doi.org/10.1104/pp.104.040212",
      "relatedIdentifierType": "DOI",
      "relationType": "References"
    },
    {
      "relatedIdentifier": "https://doi.org/10.1038/nbt1206-1565",
      "relatedIdentifierType": "DOI",
      "relationType": "References"
    },
    {
      "relatedIdentifier": "https://doi.org/10.1073/pnas.77.3.1516",
      "relatedIdentifierType": "DOI",
      "relationType": "References"
    },
    {
      "relatedIdentifier": "https://doi.org/10.1093/bioinformatics/btq046",
      "relatedIdentifierType": "DOI",
      "relationType": "References"
    },
    {
      "relatedIdentifier": "https://doi.org/10.1105/tpc.111.084020",
      "relatedIdentifierType": "DOI",
      "relationType": "References"
    },
    {
      "relatedIdentifier": "https://doi.org/10.5061/dryad.b835k",
      "relatedIdentifierType": "DOI",
      "relationType": "References"
    },
    {
      "relatedIdentifier": "https://doi.org/10.1016/j.cub.2008.02.070",
      "relatedIdentifierType": "DOI",
      "relationType": "References"
    },
    {
      "relatedIdentifier": "https://doi.org/10.1111/j.1469-8137.2010.03236.x",
      "relatedIdentifierType": "DOI",
      "relationType": "References"
    },
    {
      "relatedIdentifier": "https://doi.org/10.1007/s00138-011-0345-9",
      "relatedIdentifierType": "DOI",
      "relationType": "References"
    },
    {
      "relatedIdentifier": "https://doi.org/10.1016/j.cell.2012.02.048",
      "relatedIdentifierType": "DOI",
      "relationType": "References"
    },
    {
      "relatedIdentifier": "https://doi.org/10.1038/ncb2764",
      "relatedIdentifierType": "DOI",
      "relationType": "References"
    }
  ],
  "schemaVersion": "http://datacite.org/schema/kernel-4",
  "agency": "Crossref",
  "state": "findable"
}

Convert Crossref to BibTeX:

commonmeta https://doi.org/10.7554/elife.01567 -t bibtex

@article{https://doi.org/10.7554/elife.01567,
  doi = {10.7554/eLife.01567},
  url = {http://elifesciences.org/lookup/doi/10.7554/eLife.01567},
  author = {Sankar, Martial and Nieminen, Kaisa and Ragni, Laura and Xenarios, Ioannis and Hardtke, Christian S},
  title = {Automated quantitative histology reveals vascular morphodynamics during Arabidopsis hypocotyl secondary growth},
  journal = {eLife},
  year = {2014}
}

Convert DataCite to schema.org/JSON-LD:

commonmeta 10.5061/DRYAD.8515

{
    "@context": "http://schema.org",
    "@type": "Dataset",
    "@id": "https://doi.org/10.5061/dryad.8515",
    "additionalType": "DataPackage",
    "name": "Data from: A new malaria agent in African hominids.",
    "alternateName": "Ollomo B, Durand P, Prugnolle F, Douzery EJP, Arnathau C, Nkoghe D, Leroy E, Renaud F (2009) A new malaria agent in African hominids. PLoS Pathogens 5(5): e1000446.",
    "author": [{
        "@type": "Person",
        "givenName": "Benjamin",
        "familyName": "Ollomo"
    }, {
        "@type": "Person",
        "givenName": "Patrick",
        "familyName": "Durand"
    }, {
        "@type": "Person",
        "givenName": "Franck",
        "familyName": "Prugnolle"
    }, {
        "@type": "Person",
        "givenName": "Emmanuel J. P.",
        "familyName": "Douzery"
    }, {
        "@type": "Person",
        "givenName": "Céline",
        "familyName": "Arnathau"
    }, {
        "@type": "Person",
        "givenName": "Dieudonné",
        "familyName": "Nkoghe"
    }, {
        "@type": "Person",
        "givenName": "Eric",
        "familyName": "Leroy"
    }, {
        "@type": "Person",
        "givenName": "François",
        "familyName": "Renaud"
    }],
    "license": "http://creativecommons.org/publicdomain/zero/1.0/",
    "version": "1",
    "keywords": "Phylogeny, Malaria, Parasites, Taxonomy, Mitochondrial genome, Africa, Plasmodium",
    "datePublished": "2011",
    "hasPart": [{
        "@type": "CreativeWork",
        "@id": "https://doi.org/10.5061/dryad.8515/1"
    }, {
        "@type": "CreativeWork",
        "@id": "https://doi.org/10.5061/dryad.8515/2"
    }],
    "citation": [{
        "@type": "CreativeWork",
        "@id": "https://doi.org/10.1371/journal.ppat.1000446"
    }],
    "schemaVersion": "http://datacite.org/schema/kernel-3",
    "publisher": {
        "@type": "Organization",
        "name": "Dryad Digital Repository"
    },
    "provider": {
        "@type": "Organization",
        "name": "DataCite"
    }
}

Convert DataCite JSON to Codemeta:

commonmeta https://doi.org/10.5063/f1m61h5x -t codemeta

{
   "@context":"https://raw.githubusercontent.com/codemeta/codemeta/master/codemeta.jsonld",
   "@type":"SoftwareSourceCode",
   "@id":"https://doi.org/10.5063/f1m61h5x",
   "identifier":"https://doi.org/10.5063/f1m61h5x",
   "title":"dataone: R interface to the DataONE network of data repositories",
   "agents":{
      "@type":"Person",
      "givenName":"Matthew B.",
      "familyName":"Jones"
   },
   "datePublished":"2016",
   "publisher":{
      "@type":"Organization",
      "name":"KNB Data Repository"
   }
}

Convert DataCite to BibTeX:

commonmeta 10.5061/DRYAD.8515 -t bibtex

@misc{https://doi.org/10.5061/dryad.8515,
  doi = {10.5061/DRYAD.8515},
  author = {Ollomo, Benjamin and Durand, Patrick and Prugnolle, Franck and Douzery, Emmanuel J. P. and Arnathau, Céline and Nkoghe, Dieudonné and Leroy, Eric and Renaud, François},
  keywords = {Phylogeny, Malaria, Parasites, Taxonomy, Mitochondrial genome, Africa, Plasmodium},
  title = {Data from: A new malaria agent in African hominids.},
  publisher = {Dryad Digital Repository},
  year = {2011}
}

Convert schema.org/JSON-LD to BibTeX:

commonmeta https://blog.datacite.org/eating-your-own-dog-food -t bibtex

@article{https://doi.org/10.5438/4k3m-nyvg,
  doi = {10.5438/4k3m-nyvg},
  url = {https://blog.datacite.org/eating-your-own-dog-food},
  author = {Fenner, Martin},
  keywords = {datacite, doi, metadata, featured},
  title = {Eating your own Dog Food},
  publisher = {DataCite},
  year = {2016}
}

Convert Codemeta to schema.org/JSON-LD:

commonmeta https://github.com/datacite/maremma

{
  "@context":"http://schema.org",
  "@type":"SoftwareSourceCode",
  "@id":"https://doi.org/10.5438/qeg0-3gm3",
  "url":"https://github.com/datacite/maremma",
  "name":"Maremma: a Ruby library for simplified network calls",
  "author":{
    "@type":"person",
    "@id":"http://orcid.org/0000-0003-0077-4738",
    "name":"Martin Fenner"
  },
  "description":"Simplifies network calls, including json/xml parsing and error handling. Based on Faraday.",
  "keywords":"faraday, excon, net/http",
  "dateCreated":"2015-11-28",
  "datePublished":"2017-02-24",
  "dateModified":"2017-02-24",
  "publisher":{
    "@type":"Organization",
    "name":"DataCite"
  }
}

Convert Codemeta to DataCite:

commonmeta https://github.com/datacite/maremma -t datacite

<?xml version="1.0" encoding="UTF-8"?>
<resource xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://datacite.org/schema/kernel-4" xsi:schemaLocation="http://datacite.org/schema/kernel-4 http://schema.datacite.org/meta/kernel-4/metadata.xsd">
  <identifier identifierType="DOI">10.5438/qeg0-3gm3</identifier>
  <creators>
    <creator>
      <creatorName>Martin Fenner</creatorName>
      <nameIdentifier schemeURI="http://orcid.org/" nameIdentifierScheme="ORCID">http://orcid.org/0000-0003-0077-4738</nameIdentifier>
    </creator>
  </creators>
  <titles>
    <title>Maremma: a Ruby library for simplified network calls</title>
  </titles>
  <publisher>DataCite</publisher>
  <publicationYear>2017</publicationYear>
  <resourceType resourceTypeGeneral="Software">SoftwareSourceCode</resourceType>
  <subjects>
    <subject>faraday</subject>
    <subject>excon</subject>
    <subject>net/http</subject>
  </subjects>
  <dates>
    <date dateType="Created">2015-11-28</date>
    <date dateType="Issued">2017-02-24</date>
    <date dateType="Updated">2017-02-24</date>
  </dates>
  <descriptions>
    <description descriptionType="Abstract">Simplifies network calls, including json/xml parsing and error handling. Based on Faraday.</description>
  </descriptions>
</resource>

Development

We use rspec for unit testing:

bundle exec rspec

Follow along via Github Issues. Please open an issue if conversion fails or metadata are not properly supported.

Note on Patches/Pull Requests

  • Fork the project
  • Write tests for your new feature or a test that reproduces a bug
  • Implement your feature or make a bug fix
  • Do not mess with Rakefile, version or history
  • Commit, push and make a pull request. Bonus points for topical branches.

License

commonmeta-ruby is released under the MIT License.