codemeta-server

Server for codemeta, in memory triple store, SPARQL endpoint and simple web-based visualisation for end-user

https://github.com/proycon/codemeta-server

Science Score: 26.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (15.4%) to scientific vocabulary

Keywords

codemeta json-ld schema-org software-metadata
Last synced: 6 months ago · JSON representation

Repository

Server for codemeta, in memory triple store, SPARQL endpoint and simple web-based visualisation for end-user

Basic Info
  • Host: GitHub
  • Owner: proycon
  • License: gpl-3.0
  • Language: Python
  • Default Branch: master
  • Homepage:
  • Size: 1.87 MB
Statistics
  • Stars: 5
  • Watchers: 2
  • Forks: 0
  • Open Issues: 0
  • Releases: 8
Topics
codemeta json-ld schema-org software-metadata
Created almost 4 years ago · Last pushed 6 months ago
Metadata Files
Readme License Codemeta

README.md

Project Status: Active -- The project has reached a stable, usable state and is being actively developed. Latest release in the Python Package Index

Codemeta Server

Codemeta server provides a simple portal to software tools, based on software metadata in codemeta and schema.org. It is implemented as an in-memory RDF triple store and provides an API (including SPARQL endpoint) for querying. It builds upon the codemeta2html and codemetapy libraries, which implement most of the functionality. Automatic harvesting of software metadata can be accomplished via codemeta-harvester.

Note: If you want a static site instead of a triple-store backed web application, then you dont need codemeta-server and can just use codemeta2html.

Features:

  • Web-user interface for end-users (i.e. everything from codemeta2html):
    • rich RDFa data (codemeta/schema.org/etc) embedded in the HTML, expressing as much of the input linked data as possible. This means though we visualise for humans, we do not sacrifice on machine parsability and semantic interpretability.
    • index pages (card view & table view)
    • one dedicated page per software source project
    • client-side filtering (faceted search) capabilities
    • direct access to the underlying JSON-LD and Turtle serialisations per source project and for the complete data graph as a whole
    • responsive layout suitable for different devices and screen-sizes
    • Integrates some badges (aka shields) like for GitHub, Repostatus
    • minimal amount of external web calls (only for github/gitlab badges and for external resources references directly by the software metadata itself)
    • minimal client-side javascript, also usable without (except for filtering)
  • Simple server-side search/query facilities
  • Advanced query facilities using SPARQL:
    • SPARQL endpoint
    • YASGUI front-end for end-users.
  • JSON-LD and turtle serialisations for all data, full support for content negotiation
  • Supports various extensions to codemeta:

This software is developed in the scope of the CLARIAH-PLUS project, a Dockerfile for the CLARIAH Tool Discovery pipeline, including both the harvester and this server and API powering the CLARIAH Tool Store, can be found here: https://github.com/CLARIAH/tool-discovery .

Installation

pip install codemeta-server

Usage

In development scenarios, you can run codemeta-server as follows: codemeta-server --graph data.json --baseuri http://localhost:8080/ --baseurl http://localhost:8080/ --port 8080 Check codemeta-server --help for help on all the options.

The file data.json is produced by codemetapy (possibly via codemeta-harvester and contains the full linked data graph of all tools you want to show. Say you have codemeta.json files for two resources, then you can use codemetapy to create a graph as follows:

codemetapy --baseuri http://localhost:8080/ --graph resource1.codemeta.json resource2.codemeta.json > data.json

If you have no codemeta files at all yet, then still you can use codemetapy (via codemeta-harvester to automatically extract metadata from other known schemas.

For production scenarios, you'll want to run codemeta-server via WSGI/ASGI, check the Dockerfile in https://github.com/CLARIAH/tool-discovery .

Screenshots

Excerpt of a tool index in the default 'card' view:

Index - card view

Excerpt of a tool index in the table view:

Index - table view

An example page for a specific tool:

Tool page

The SPARQL frontend (Yasgui):

SPARQL frontend

Owner

  • Name: Maarten van Gompel
  • Login: proycon
  • Kind: user
  • Location: Eindhoven, the Netherlands
  • Company: KNAW Humanities Cluster & CLST, Radboud University

Research software engineer - NLP - AI - 🐧 Linux & open-source enthusiast - 🐍 Python/ 🌊C/C++ / 🦀 Rust / 🐚 Shell - 🔐 InfoSec - https://git.sr.ht/~proycon

CodeMeta (codemeta.json)

{
  "@context": [
    "https://w3id.org/codemeta/3.0",
    "http://schema.org",
    "https://w3id.org/software-types",
    "https://w3id.org/software-iodata"
  ],
  "@id": "https://github.com/proycon/codemetapy.git",
  "@type": "SoftwareSourceCode",
  "applicationCategory": "Software Development",
  "audience": [
    {
      "@id": "/audience/developers",
      "@type": "Audience",
      "audienceType": "Developers"
    },
    {
      "@id": "/audience/researchers",
      "@type": "Audience",
      "audienceType": "Researchers"
    }
  ],
  "author": {
    "@id": "https://orcid.org/0000-0002-1046-0006",
    "@type": "Person",
    "affiliation": {
      "@id": "https://huc.knaw.nl"
    },
    "email": "proycon@anaproy.nl",
    "familyName": "van Gompel",
    "givenName": "Maarten",
    "url": "https://proycon.anaproy.nl"
  },
  "codeRepository": "https://github.com/proycon/codemetapy.git",
  "contributor": {
    "@id": "https://orcid.org/0000-0002-1046-0006",
    "@type": "Person",
    "affiliation": {
      "@id": "https://huc.knaw.nl"
    },
    "email": "proycon@anaproy.nl",
    "familyName": "van Gompel",
    "givenName": "Maarten",
    "url": "https://proycon.anaproy.nl"
  },
  "dateCreated": "2022-03-22",
  "dateModified": "2025-08-18",
  "description": "Web API serving codemeta software metadata using codemeta and schema.org, provides a SPARQL endpoint and also offers a human web-interface ",
  "developmentStatus": [
    "https://www.repostatus.org/#active",
    "https://w3id.org/research-technology-readiness-levels#Level7ReleaseCandidate"
  ],
  "funding": [
    {
      "@type": "Grant",
      "name": "CLARIAH-PLUS (NWO grant 184.034.023)",
      "funder": {
        "@type": "Organization",
        "name": "NWO",
        "url": "https://www.nwo.nl"
      }
    }
  ],
  "identifier": "codemeta-server",
  "issueTracker": "https://github.com/proycon/codemeta-server/issues",
  "keywords": [
    "metadata",
    "scientific",
    "codemeta",
    "rdf",
    "software metadata",
    "schema.org",
    "linked data"
  ],
  "license": "https://spdx.org/licenses/GPL-3.0-only",
  "maintainer": {
    "@id": "https://orcid.org/0000-0002-1046-0006",
    "@type": "Person",
    "affiliation": {
      "@id": "https://huc.knaw.nl"
    },
    "email": "proycon@anaproy.nl",
    "familyName": "van Gompel",
    "givenName": "Maarten",
    "url": "https://proycon.anaproy.nl"
  },
  "name": "codemeta-server",
  "operatingSystem": [
    "Linux",
    "BSD",
    "macOS"
  ],
  "producer": {
    "@id": "https://huc.knaw.nl",
    "@type": "Organization",
    "name": "KNAW Humanities Cluster",
    "url": "https://huc.knaw.nl",
    "parentOrganization": {
      "@id": "https://knaw.nl",
      "@type": "Organization",
      "name": "KNAW",
      "url": "https://knaw.nl",
      "location": {
        "@type": "Place",
        "name": "Amsterdam"
      }
    }
  },
  "readme": "https://github.com/proycon/codemeta-server/blob/master/README.md",
  "runtimePlatform": [
    "Python 3.6",
    "Python 3.8",
    "Python 3.9",
    "Python 3",
    "Python 3.7",
    "Python 3.10",
    "Python 3.11"
  ],
  "softwareRequirements": [
    {
      "@id": "/dependency/codemetapy",
      "@type": "SoftwareApplication",
      "identifier": "codemetapy",
      "name": "codemetapy",
      "runtimePlatform": "Python 3"
    },
    {
      "@id": "/dependency/fastapi",
      "@type": "SoftwareApplication",
      "identifier": "fastapi",
      "name": "fastapi",
      "runtimePlatform": "Python 3"
    },
    {
      "@id": "/dependency/rdflib-endpoint",
      "@type": "SoftwareApplication",
      "identifier": "rdflib-endpoint",
      "name": "rdflib-endpoint",
      "runtimePlatform": "Python 3"
    },
    {
      "@id": "/dependency/uvicorn",
      "@type": "SoftwareApplication",
      "identifier": "uvicorn",
      "name": "uvicorn",
      "runtimePlatform": "Python 3"
    }
  ],
  "screenshot": [
    "https://raw.githubusercontent.com/proycon/codemeta-server/master/screenshot_index_cards.jpg",
    "https://raw.githubusercontent.com/proycon/codemeta-server/master/screenshot_index_table.jpg",
    "https://raw.githubusercontent.com/proycon/codemeta-server/master/screenshot_page.jpg",
    "https://raw.githubusercontent.com/proycon/codemeta-server/master/screenshot_sparql.jpg"
  ],
  "isSourceCodeOf": [
    {
      "@id": "/commandlineapplication/codemeta-server",
      "@type": "ServerApplication",
      "executableName": "codemeta-server",
      "name": "codemeta-server",
      "runtimePlatform": "Python 3"
    }
  ],
  "url": "https://github.com/proycon/codemeta-server.git",
  "version": "0.5.1"
}

GitHub Events

Total
  • Release event: 2
  • Watch event: 1
  • Push event: 5
  • Create event: 1
Last Year
  • Release event: 2
  • Watch event: 1
  • Push event: 5
  • Create event: 1

Issues and Pull Requests

Last synced: 10 months ago

All Time
  • Total issues: 2
  • Total pull requests: 0
  • Average time to close issues: about 1 month
  • Average time to close pull requests: N/A
  • Total issue authors: 2
  • Total pull request authors: 0
  • Average comments per issue: 1.0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • proycon (1)
  • vemonet (1)
Pull Request Authors
Top Labels
Issue Labels
Pull Request Labels

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 69 last-month
  • Total dependent packages: 0
  • Total dependent repositories: 1
  • Total versions: 8
  • Total maintainers: 1
pypi.org: codemeta-server

Web API serving codemeta software metadata using codemeta and schema.org, provides a SPARQL endpoint and also offers a human web-interface

  • Versions: 8
  • Dependent Packages: 0
  • Dependent Repositories: 1
  • Downloads: 69 Last month
Rankings
Dependent packages count: 10.0%
Dependent repos count: 21.7%
Average: 22.7%
Downloads: 24.4%
Stargazers count: 27.8%
Forks count: 29.8%
Maintainers (1)
Last synced: 6 months ago

Dependencies

requirements.txt pypi
  • codemetapy >=2.2.0
  • fastapi *
  • rdflib-endpoint *
setup.py pypi