RSFC: Research Software FAIRness Checks

What is RSFC?

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.

How to use it

RSFC can be used via API. The API description is available here.

Example of use for the API


                    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.

Example of use with RSFC package


                    rsfc --repo https://github.com/oeg-upm/rsfc
                

                    
                

For more information on running the RSFC package, you can check the documentation related here

Using RSFC as an automated action

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