METADATA 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293
  1. Metadata-Version: 2.1
  2. Name: rdflib
  3. Version: 7.6.0
  4. Summary: RDFLib is a Python library for working with RDF, a simple yet powerful language for representing information.
  5. Home-page: https://github.com/RDFLib/rdflib
  6. License: BSD-3-Clause
  7. Author: Daniel 'eikeon' Krech
  8. Author-email: eikeon@eikeon.com
  9. Maintainer: RDFLib Team
  10. Maintainer-email: rdflib-dev@googlegroups.com
  11. Requires-Python: >=3.8.1
  12. Classifier: License :: OSI Approved :: BSD License
  13. Classifier: Natural Language :: English
  14. Classifier: Operating System :: OS Independent
  15. Classifier: Programming Language :: Python
  16. Classifier: Programming Language :: Python :: 3
  17. Classifier: Programming Language :: Python :: 3.9
  18. Classifier: Programming Language :: Python :: 3.10
  19. Classifier: Programming Language :: Python :: 3.11
  20. Classifier: Programming Language :: Python :: 3.12
  21. Classifier: Programming Language :: Python :: 3.13
  22. Classifier: Programming Language :: Python :: 3.14
  23. Classifier: Programming Language :: Python :: 3.8
  24. Classifier: Topic :: Software Development :: Libraries :: Python Modules
  25. Provides-Extra: berkeleydb
  26. Provides-Extra: graphdb
  27. Provides-Extra: html
  28. Provides-Extra: lxml
  29. Provides-Extra: networkx
  30. Provides-Extra: orjson
  31. Provides-Extra: rdf4j
  32. Requires-Dist: berkeleydb (>=18.1.0,<19.0.0) ; extra == "berkeleydb"
  33. Requires-Dist: html5rdf (>=1.2,<2) ; extra == "html"
  34. Requires-Dist: httpx (>=0.28.1,<0.29.0) ; extra == "rdf4j" or extra == "graphdb"
  35. Requires-Dist: isodate (>=0.7.2,<1.0.0) ; python_version < "3.11"
  36. Requires-Dist: lxml (>=4.3,<6.0) ; extra == "lxml"
  37. Requires-Dist: networkx (>=2,<4) ; extra == "networkx"
  38. Requires-Dist: orjson (>=3.9.14,<4) ; extra == "orjson"
  39. Requires-Dist: pyparsing (>=2.1.0,<4)
  40. Project-URL: Documentation, https://rdflib.readthedocs.org/
  41. Project-URL: Repository, https://github.com/RDFLib/rdflib
  42. Description-Content-Type: text/markdown
  43. ![](docs/_static/RDFlib.png)
  44. # RDFLib
  45. [![Build Status](https://github.com/RDFLib/rdflib/actions/workflows/validate.yaml/badge.svg?branch=main)](https://github.com/RDFLib/rdflib/actions?query=branch%3Amain)
  46. [![Documentation Status](https://readthedocs.org/projects/rdflib/badge/?version=latest)](https://rdflib.readthedocs.io/en/latest/?badge=latest)
  47. [![Coveralls branch](https://img.shields.io/coveralls/RDFLib/rdflib/main.svg)](https://coveralls.io/r/RDFLib/rdflib?branch=main)
  48. [![GitHub stars](https://img.shields.io/github/stars/RDFLib/rdflib.svg)](https://github.com/RDFLib/rdflib/stargazers)
  49. [![Downloads](https://pepy.tech/badge/rdflib/week)](https://pepy.tech/project/rdflib)
  50. [![PyPI](https://img.shields.io/pypi/v/rdflib.svg)](https://pypi.python.org/pypi/rdflib)
  51. [![PyPI](https://img.shields.io/pypi/pyversions/rdflib.svg)](https://pypi.python.org/pypi/rdflib)
  52. [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.6845245.svg)](https://doi.org/10.5281/zenodo.6845245)
  53. [![Contribute with Gitpod](https://img.shields.io/badge/Contribute%20with-Gitpod-908a85?logo=gitpod)](https://gitpod.io/#https://github.com/RDFLib/rdflib)
  54. [![Gitter](https://badges.gitter.im/RDFLib/rdflib.svg)](https://gitter.im/RDFLib/rdflib?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
  55. [![Matrix](https://img.shields.io/matrix/rdflib:matrix.org?label=matrix.org%20chat)](https://matrix.to/#/#RDFLib_rdflib:gitter.im)
  56. RDFLib is a pure Python package for working with [RDF](http://www.w3.org/RDF/). RDFLib contains most things you need to work with RDF, including:
  57. * parsers and serializers for RDF/XML, N3, NTriples, N-Quads, Turtle, TriX, Trig, JSON-LD and even HexTuples
  58. * a Graph interface which can be backed by any one of a number of Store implementations
  59. * Store implementations for in-memory, persistent on disk (Berkeley DB) and remote SPARQL endpoints
  60. * additional Stores can be supplied via plugins
  61. * a SPARQL 1.1 implementation - supporting SPARQL 1.1 Queries and Update statements
  62. * SPARQL function extension mechanisms
  63. ## RDFlib Family of packages
  64. The RDFlib community maintains many RDF-related Python code repositories with different purposes. For example:
  65. * [rdflib](https://github.com/RDFLib/rdflib) - the RDFLib core
  66. * [sparqlwrapper](https://github.com/RDFLib/sparqlwrapper) - a simple Python wrapper around a SPARQL service to remotely execute your queries
  67. * [pyLODE](https://github.com/RDFLib/pyLODE) - An OWL ontology documentation tool using Python and templating, based on LODE.
  68. * [pyrdfa3](https://github.com/RDFLib/pyrdfa3) - RDFa 1.1 distiller/parser library: can extract RDFa 1.1/1.0 from (X)HTML, SVG, or XML in general.
  69. * [pymicrodata](https://github.com/RDFLib/pymicrodata) - A module to extract RDF from an HTML5 page annotated with microdata.
  70. * [pySHACL](https://github.com/RDFLib/pySHACL) - A pure Python module which allows for the validation of RDF graphs against SHACL graphs.
  71. * [OWL-RL](https://github.com/RDFLib/OWL-RL) - A simple implementation of the OWL2 RL Profile which expands the graph with all possible triples that OWL RL defines.
  72. Please see the list for all packages/repositories here:
  73. * <https://github.com/RDFLib>
  74. Help with maintenance of all of the RDFLib family of packages is always welcome and appreciated.
  75. ## Versions & Releases
  76. * `main` branch in this repository is the current unstable release - version 8 alpha
  77. * `7.6.0` GraphDB Client, and many improvements and fixes. See changelog for details
  78. * `7.5.0` RDF4J Store integration, RDF4J Client, and other improvements. See changelog for details
  79. * `7.4.0` a few small fixes, add test matrix for active python versions, and move v7 documentation to MkDocs
  80. * `7.3.0` many fixes and usability improvements, particularly for the Dataset class. See changelog for details
  81. * `7.2.1` tiny clean up release, relaxes Python version requirement
  82. * `7.2.0` general fixes and usability improvements, see changelog for details
  83. * `7.1.4` tidy-up release, possibly last 7.x release
  84. * `7.1.3` current stable release, small improvements to 7.1.1
  85. * `7.1.2` previously deleted release
  86. * `7.1.1` previous stable release
  87. * see <https://github.com/RDFLib/rdflib/releases/tag/7.1.1>
  88. * `7.0.0` previous stable release, supports Python 3.8.1+ only.
  89. * see [Releases](https://github.com/RDFLib/rdflib/releases)
  90. * `6.x.y` supports Python 3.7+ only. Many improvements over 5.0.0
  91. * see [Releases](https://github.com/RDFLib/rdflib/releases)
  92. * `5.x.y` supports Python 2.7 and 3.4+ and is [mostly backwards compatible with 4.2.2](https://rdflib.readthedocs.io/en/stable/upgrade4to5.html).
  93. See <https://github.com/RDFLib/rdflib/releases/> for the release details.
  94. ## Documentation
  95. See <https://rdflib.readthedocs.io> for our documentation built from the code. Note that there are `latest`, `stable` and versioned builds, such as `5.0.0`, matching releases.
  96. ## Installation
  97. The stable release of RDFLib may be installed with Python's package management tool *pip*:
  98. $ pip install rdflib
  99. Some features of RDFLib require optional dependencies which may be installed using *pip* extras:
  100. $ pip install rdflib[berkeleydb,networkx,html,lxml,orjson]
  101. Alternatively manually download the package from the Python Package
  102. Index (PyPI) at https://pypi.python.org/pypi/rdflib
  103. ### Installation of the current main branch (for developers)
  104. With *pip* you can also install rdflib from the git repository with one of the following options:
  105. $ pip install git+https://github.com/rdflib/rdflib@main
  106. or
  107. $ pip install -e git+https://github.com/rdflib/rdflib@main#egg=rdflib
  108. or from your locally cloned repository you can install it with one of the following options:
  109. $ poetry install # installs into a poetry-managed venv
  110. or
  111. $ pip install -e .
  112. ## Getting Started
  113. RDFLib aims to be a pythonic RDF API. RDFLib's main data object is a `Graph` which is a Python collection
  114. of RDF *Subject, Predicate, Object* Triples:
  115. To create graph and load it with RDF data from DBPedia then print the results:
  116. ```python
  117. from rdflib import Graph
  118. g = Graph()
  119. g.parse('http://dbpedia.org/resource/Semantic_Web')
  120. for s, p, o in g:
  121. print(s, p, o)
  122. ```
  123. The components of the triples are URIs (resources) or Literals
  124. (values).
  125. URIs are grouped together by *namespace*, common namespaces are included in RDFLib:
  126. ```python
  127. from rdflib.namespace import DC, DCTERMS, DOAP, FOAF, SKOS, OWL, RDF, RDFS, VOID, XMLNS, XSD
  128. ```
  129. You can use them like this:
  130. ```python
  131. from rdflib import Graph, URIRef, Literal
  132. from rdflib.namespace import RDFS, XSD
  133. g = Graph()
  134. semweb = URIRef('http://dbpedia.org/resource/Semantic_Web')
  135. type = g.value(semweb, RDFS.label)
  136. ```
  137. Where `RDFS` is the RDFS namespace, `XSD` the XML Schema Datatypes namespace and `g.value` returns an object of the triple-pattern given (or an arbitrary one if multiple exist).
  138. Or like this, adding a triple to a graph `g`:
  139. ```python
  140. g.add((
  141. URIRef("http://example.com/person/nick"),
  142. FOAF.givenName,
  143. Literal("Nick", datatype=XSD.string)
  144. ))
  145. ```
  146. The triple (in n-triples notation) `<http://example.com/person/nick> <http://xmlns.com/foaf/0.1/givenName> "Nick"^^<http://www.w3.org/2001/XMLSchema#string> .`
  147. is created where the property `FOAF.givenName` is the URI `<http://xmlns.com/foaf/0.1/givenName>` and `XSD.string` is the
  148. URI `<http://www.w3.org/2001/XMLSchema#string>`.
  149. You can bind namespaces to prefixes to shorten the URIs for RDF/XML, Turtle, N3, TriG, TriX & JSON-LD serializations:
  150. ```python
  151. g.bind("foaf", FOAF)
  152. g.bind("xsd", XSD)
  153. ```
  154. This will allow the n-triples triple above to be serialised like this:
  155. ```python
  156. print(g.serialize(format="turtle"))
  157. ```
  158. With these results:
  159. ```turtle
  160. PREFIX foaf: <http://xmlns.com/foaf/0.1/>
  161. PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
  162. <http://example.com/person/nick> foaf:givenName "Nick"^^xsd:string .
  163. ```
  164. New Namespaces can also be defined:
  165. ```python
  166. dbpedia = Namespace('http://dbpedia.org/ontology/')
  167. abstracts = list(x for x in g.objects(semweb, dbpedia['abstract']) if x.language=='en')
  168. ```
  169. See also [./examples](./examples)
  170. ## Features
  171. The library contains parsers and serializers for RDF/XML, N3,
  172. NTriples, N-Quads, Turtle, TriX, JSON-LD, RDFa and Microdata.
  173. The library presents a Graph interface which can be backed by
  174. any one of a number of Store implementations.
  175. This core RDFLib package includes store implementations for
  176. in-memory storage and persistent storage on top of the Berkeley DB.
  177. A SPARQL 1.1 implementation is included - supporting SPARQL 1.1 Queries and Update statements.
  178. RDFLib is open source and is maintained on [GitHub](https://github.com/RDFLib/rdflib/). RDFLib releases, current and previous
  179. are listed on [PyPI](https://pypi.python.org/pypi/rdflib/)
  180. Multiple other projects are contained within the RDFlib "family", see <https://github.com/RDFLib/>.
  181. ## Running tests
  182. ### Running the tests on the host
  183. Run the test suite with `pytest`.
  184. ```shell
  185. poetry install
  186. poetry run pytest
  187. ```
  188. ### Running test coverage on the host with coverage report
  189. Run the test suite and generate a HTML coverage report with `pytest` and `pytest-cov`.
  190. ```shell
  191. poetry run pytest --cov
  192. ```
  193. ### Viewing test coverage
  194. Once tests have produced HTML output of the coverage report, view it by running:
  195. ```shell
  196. poetry run pytest --cov --cov-report term --cov-report html
  197. python -m http.server --directory=htmlcov
  198. ```
  199. ## Contributing
  200. RDFLib survives and grows via user contributions!
  201. Please read our [contributing guide](https://rdflib.readthedocs.io/en/latest/CONTRIBUTING.html) and [developers guide](https://rdflib.readthedocs.io/en/latest/developers.html) to get started.
  202. Please consider lodging Pull Requests here:
  203. * <https://github.com/RDFLib/rdflib/pulls>
  204. To get a development environment consider using Gitpod or Google Cloud Shell.
  205. [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/RDFLib/rdflib)
  206. [![Open in Cloud Shell](https://gstatic.com/cloudssh/images/open-btn.svg)](https://shell.cloud.google.com/cloudshell/editor?cloudshell_git_repo=https%3A%2F%2Fgithub.com%2FRDFLib%2Frdflib&cloudshell_git_branch=main&cloudshell_open_in_editor=README.md)
  207. You can also raise issues here:
  208. * <https://github.com/RDFLib/rdflib/issues>
  209. ## Support & Contacts
  210. For general "how do I..." queries, please use https://stackoverflow.com and tag your question with `rdflib`.
  211. Existing questions:
  212. * <https://stackoverflow.com/questions/tagged/rdflib>
  213. If you want to contact the rdflib maintainers, please do so via:
  214. * the rdflib-dev mailing list: <https://groups.google.com/group/rdflib-dev>
  215. * the chat, which is available at [gitter](https://gitter.im/RDFLib/rdflib) or via matrix [#RDFLib_rdflib:gitter.im](https://matrix.to/#/#RDFLib_rdflib:gitter.im)