RSFC (Research Software FAIRness Checks) is a tool designed to evaluate how well a research software's repository complies with the FAIR principles (Findable, Accessible, Interoperable and Reusable).
You can find more information about the project here.
RSFC can be used via API. The API description is available here.
curl -X POST "https://api.rsfc.linkeddata.es/assess/test/https://w3id.org/rsfc/test/RSFC-13-1" \
-H "Content-Type: application/json" \
-d '{
"resource_identifier": "https://github.com/oeg-upm/rsfc"
}'
{
"@context": "https://w3id.org/ftr/context",
"@id": "urn:rsfc:d2f8a6c4-8ef6-4240-b9cb-6a8fa35802e9",
"@type": "https://w3id.org/ftr#TestResult",
"identifier": "urn:rsfc:d2f8a6c4-8ef6-4240-b9cb-6a8fa35802e9",
"title": "Output from running test: RSFC-13-1 (https://w3id.org/rsfc/test/RSFC-13-1)",
"description": "Requirements were found in:\n\t- https://raw.githubusercontent.com/oeg-upm/rsfc/main/pyproject.toml\n\t- https://raw.githubusercontent.com/oeg-upm/rsfc/main/requirements.txt\n\t- https://raw.githubusercontent.com/oeg-upm/rsfc/main/doc/web_generation_scripts/requirements.txt\n\t- https://raw.githubusercontent.com/oeg-upm/rsfc/main/README.md",
"suggestion": "No suggestions",
"license": { "@id": "https://creativecommons.org/publicdomain/zero/1.0/" },
"value": "true",
"completion": { "@value": 100 },
"assessmentTarget": {
"title": "rsfc",
"@id": "https://github.com/oeg-upm/rsfc",
"version": "v0.1.3"
},
"log": "Requirements were found in:\n\t- https://raw.githubusercontent.com/oeg-upm/rsfc/main/pyproject.toml\n\t- https://raw.githubusercontent.com/oeg-upm/rsfc/main/requirements.txt\n\t- https://raw.githubusercontent.com/oeg-upm/rsfc/main/doc/web_generation_scripts/requirements.txt\n\t- https://raw.githubusercontent.com/oeg-upm/rsfc/main/README.md",
"outputFromTest": {
"@id": "https://w3id.org/rsfc/test/RSFC-13-1",
"@type": "Test",
"title": "Dependencies are declared",
"description": "Searches for dependencies in project configuration files, README and dependencies files such as requirements.txt"
},
"generatedAtTime": {
"@type": "http://www.w3.org/2001/XMLSchema#date",
"@value": "2026-03-18"
},
"wasGeneratedBy": {
"@type": "TestExecutionActivity",
"@id": "urn:rsfc:d2f8a6c4-8ef6-4240-b9cb-6a8fa35802e9",
"used": { "@id": "https://github.com/oeg-upm/rsfc" },
"wasAssociatedWith": {
"@id": "https://w3id.org/rsfc/test/RSFC-13-1",
"identifier": "https://w3id.org/rsfc/test/RSFC-13-1",
"title": "Dependencies are declared",
"description": "Searches for dependencies in project configuration files, README and dependencies files such as requirements.txt",
"endpointDescription": { "@id": "https://rsfc.linkeddata.es/docs" },
"endpointURL": { "@id": "https://rsfc.linkeddata.es/assess/test/RSFC-13-1" }
},
"endedAtTime": "2026-03-18"
}
}
Additionally, you can install RSFC in your system, either via Github or via PyPI.
To install with PyPI just run in your terminal (preferably with a virtual environment activated):
pip install rsfc
And to install via Github, you can follow the steps stated in RSFC's Github repository.
rsfc --repo https://github.com/oeg-upm/rsfc
For more information on running the RSFC package, you can check the documentation related here
We also provide a Github action that you can include in your repository to run RSFC on pull requests.
name: Run RSFC analysis
on:
workflow_dispatch:
pull_request:
types: [opened, synchronize, reopened]
jobs:
run-rsfc-checks:
uses: oeg-upm/rsfc/.github/workflows/run-rsfc.yml@main
with:
repo_url: https://github.com/${{ github.repository }}
is_fork: ${{ github.event.pull_request.head.repo.full_name != github.repository }}
pr_sha: ${{ github.event.pull_request.head.sha }}
secrets:
RSFC_TOKEN: ${{ secrets.RSFC_TOKEN }}
You can find the details here