Skip to main content

Tools for working with RDF from Croissant JSON-LD resources

Project description

croissant-rdf

A proud Biohackathon project 🧑‍💻🧬👩‍💻

Open In Colab

Open in Spaces

image

huggingface_rdf is a Python tool that generates RDF (Resource Description Framework) data from datasets available on Hugging Face. This tool enables researchers and developers to convert data into a machine-readable format for enhanced querying and data analysis.

This is made possible due to an effort to align to the MLCommons Croissant schema, which HF and others conform to.

Features

  • Fetch datasets from Hugging Face.
  • Convert datasets to RDF format.
  • Generate Turtle (.ttl) files for easy integration with SPARQL endpoints.

Installation

To install huggingface_rdf, clone the repository and install the package using pip:

git clone https://github.com/david4096/croissant-rdf.git
cd croissant-rdf
pip install .

Usage

After installing the package, you can use the command-line interface (CLI) to generate RDF data:

export HF_API_KEY={YOUR_KEY}
huggingface-rdf --fname huggingface.ttl --limit 10

Check out the qlever_scripts directory to get help loading the RDF into qlever for querying.

You can also easily use Jena fuseki and load the generated .ttl file from the Fuseki ui.


docker run -it -p 3030:3030 stain/jena-fuseki

Extracting data from Kaggle

You'll need to get a Kaggle API key and it comes in a file called kaggle.json, you have to put the username and key into environment variables.

export KAGGLE_USERNAME={YOUR_USERNAME}
export KAGGLE_KEY={YOUR_KEY}
kaggle-rdf --fname kaggle.ttl --limit 10

Using Docker

To launch a jupyter notebook server to run and develop on the project locally run the following:

docker build -t croissant-rdf .

docker run -p 8888:8888 -v $(pwd):/app croissant-rdf

The run command works for mac and linux for windows in PowerShell you need to use the following:

docker run -p 8888:8888 -v ${PWD}:/app croissant-rdf

After that, you can access the Jupyter notebook server at http://localhost:8888.

Useful SPARQL Queries

SPARQL (SPARQL Protocol and RDF Query Language) is a query language used to retrieve and manipulate data stored in RDF (Resource Description Framework) format, typically within a triplestore. Here are a few useful SPARQL query examples you can try to implement on https://huggingface.co/spaces/david4096/huggingface-rdf

The basic structure of a SPQRQL query is SELECT: which you have to include a keywords that you would like to return in the result. WHERE: Defines the triple pattern we want to match in the RDF dataset.

  1. This query is used to retrieve distinct predicates from an Huggingface RDF dataset
SELECT DISTINCT ?b WHERE {?a ?b ?c}
  1. To retrieve information about a dataset, including its name, predicates, and the count of objects associated with each predicate. Includes a filters in the results to include only resources that are of type https://schema.org/Dataset.
SELECT ?name ?p (count(?o) as ?predicate_count)
WHERE {
    ?dataset <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <https://schema.org/Dataset> .
    ?dataset <https://schema.org/name> ?name .
    ?dataset ?p ?o .
}
GROUP BY ?p ?dataset
  1. To retrieve distinct values with the keyword "bio" associated with the property https://schema.org/keywords regardless of the case.
SELECT DISTINCT ?c 
WHERE {
  ?a <https://schema.org/keywords> ?c .
  FILTER(CONTAINS(LCASE(?c), "bio"))
}
  1. To retrieve distinct values for croissant columns associated with the predicate.
SELECT DISTINCT ?c 
WHERE {
  ?a <http://mlcommons.org/croissant/column> ?c
}
  1. To retrieves the names of creators and the count of items they are associated with.
SELECT ?creatorName (COUNT(?a) AS ?count)
WHERE {
  ?a <https://schema.org/creator> ?c.
  ?c <https://schema.org/name> ?creatorName.
}
GROUP BY ?creatorName
ORDER BY DESC(?count)

Contributing

We welcome contributions! Please open an issue or submit a pull request!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

croissant_rdf-0.1.1.tar.gz (8.6 kB view details)

Uploaded Source

Built Distribution

croissant_rdf-0.1.1-py3-none-any.whl (10.9 kB view details)

Uploaded Python 3

File details

Details for the file croissant_rdf-0.1.1.tar.gz.

File metadata

  • Download URL: croissant_rdf-0.1.1.tar.gz
  • Upload date:
  • Size: 8.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.20

File hashes

Hashes for croissant_rdf-0.1.1.tar.gz
Algorithm Hash digest
SHA256 48340eda39b4af8458147014c2f03a1d22d87080c211406bca5b3acffbdfbe57
MD5 e8265bace65a4d7583c6d00d81f115bd
BLAKE2b-256 1e04fe6a3d735c76eae091e9ead1108b0d8a6d5aa9269a1f118c65a04d3c0c84

See more details on using hashes here.

File details

Details for the file croissant_rdf-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for croissant_rdf-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 5d1a66fe064aae545f6a9377ea54effb4bf26ff29f3ad35045dd48824dc0b71e
MD5 c067f5c05117c5e7b63f327e45d8d33e
BLAKE2b-256 7ca1956c29e6da56eeb10f03253fecabbb011637385260019a8a56295ac2434e

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page