Skip to main content

Python implementation of CSV on the Web

Project description


csvwlib is a Python implementation of the W3C CSV on the Web recommendations.

This enables converting tabular data, and optionally its associated metadata, to a semantic graph in RDF or JSON-LD format.

Tabular data includes CSV files, TSV files, and upstream may be coming from spreadsheets, RDBMS export, etc.

Requires Python 3.6 or later.


pip install csvwlib


The library exposes one class - CSVWConverter which has methods to_json() and to_rdf()

Both of these methods have similar API, and require 3+ parameters:

  • csv_url - URL of a CSV file; default None
  • metadata_url - optional URL of a metadata file; default None
  • mode - conversion mode; default standard, or minimal

The are three ways of starting the conversion process:

  • pass only csv_url - corresponding metadata will be looked up based on csv_url as described in Locating Metadata

  • pass both csv_url and metadata_url - metadata by user will be used. If url field is set in metadata, the CSV file will be retrieved from that location which can cause, that passed csv_url will be ignored

  • pass only metadata_url - associated CSV files will be retrieved based on metadata url field

You can also specify the conversion mode - standard or minimal, the default is standard. From the W3C documentation:

Standard mode conversion frames the information gleaned from the cells of the tabular data with details of the rows, tables, and a group of tables within which that information is provided.
Minimal mode conversion includes only the information gleaned from the cells of the tabular data.

After conversion to JSON, you receive a dict object, when converting to RDF it is more complex. If you pass format parameter, graph will be serialized to this format and returned as string. From the rdflib docs:

Format support can be extended with plugins, but "xml", "n3", "turtle", "nt", "pretty-xml", "trix", "trig" and "nquads" are built in.

If you don't specify the format, you will receive a rdflib.Graph object.


Example data+metadata files can be found at

Starting with CSV:

from csvwlib import CSVWConverter

CSVWConverter.to_rdf("", format="ttl")

Minimal mode:

from csvwlib import CSVWConverter

CSVWConverter.to_rdf("", mode="minimal", format="ttl")

Starting with metadata only:

from csvwlib import CSVWConverter

CSVWConverter.to_rdf(metadata_url="", format="ttl")

Both CSV and metadata URL specified:

from csvwlib import CSVWConverter

CSVWConverter.to_rdf("", "", format="ttl")

Starting with metadata:

from csvwlib import CSVWConverter


Starting with CSV:

from csvwlib import CSVWConverter



Authored by @Aleksander-Drozd

Maintained by @DerwenAI

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

csvwlib-0.3.2.tar.gz (24.8 kB view hashes)

Uploaded source

Built Distribution

csvwlib-0.3.2-py3-none-any.whl (32.8 kB view hashes)

Uploaded py3

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page