All Projects → RDFLib → pyLDAPI

RDFLib / pyLDAPI

Licence: BSD-3-Clause license
A very small module to add Linked Data API functionality to a Python Flask installation

Programming Languages

python
139335 projects - #7 most used programming language
HTML
75241 projects

Projects that are alternatives of or similar to pyLDAPI

basex-rdf
RDF parsing for BaseX
Stars: ✭ 16 (-42.86%)
Mutual labels:  linked-data, rdf
semagrow
A SPARQL query federator of heterogeneous data sources
Stars: ✭ 27 (-3.57%)
Mutual labels:  linked-data, rdf
ControlledVocabularyManager
Rails application with Blazegraph for managing controlled vocabularies in RDF.
Stars: ✭ 20 (-28.57%)
Mutual labels:  linked-data, rdf
Grafter
Linked Data & RDF Manufacturing Tools in Clojure
Stars: ✭ 174 (+521.43%)
Mutual labels:  linked-data, rdf
matcha
🍵 SPARQL-like DSL for querying in memory Linked Data Models
Stars: ✭ 18 (-35.71%)
Mutual labels:  linked-data, rdf
Rdf4j
Eclipse RDF4J: scalable RDF for Java
Stars: ✭ 242 (+764.29%)
Mutual labels:  linked-data, rdf
Islandora-Metadata-Interest-Group
The purpose of the Islandora Metadata Interest Group (IMIG) is to investigate and provide metadata solutions that help improve metadata creation, maintenance and enhancement in Islandora.
Stars: ✭ 29 (+3.57%)
Mutual labels:  linked-data, rdf
Hypergraphql
GraphQL interface for querying and serving linked data on the Web.
Stars: ✭ 112 (+300%)
Mutual labels:  linked-data, rdf
Processor
Ontology-driven Linked Data processor and server for SPARQL backends. Apache License.
Stars: ✭ 54 (+92.86%)
Mutual labels:  linked-data, rdf
mayktso
🌌 mayktso: encounters at an endpoint
Stars: ✭ 19 (-32.14%)
Mutual labels:  linked-data, rdf
Nspm
🤖 Neural SPARQL Machines for Knowledge Graph Question Answering.
Stars: ✭ 156 (+457.14%)
Mutual labels:  linked-data, rdf
carml
A pretty sweet RML engine, for RDF.
Stars: ✭ 74 (+164.29%)
Mutual labels:  linked-data, rdf
Hypergraphql
GraphQL interface for querying and serving linked data on the Web.
Stars: ✭ 120 (+328.57%)
Mutual labels:  linked-data, rdf
Php Json Ld
PHP implementation of a JSON-LD Processor and API
Stars: ✭ 246 (+778.57%)
Mutual labels:  linked-data, rdf
Community Server
Community Solid Server: an open and modular implementation of the Solid specifications
Stars: ✭ 117 (+317.86%)
Mutual labels:  linked-data, rdf
jsonld-context-parser.js
Parses JSON-LD contexts
Stars: ✭ 20 (-28.57%)
Mutual labels:  linked-data, rdf
Rdflib
RDFLib is a Python library for working with RDF, a simple yet powerful language for representing information.
Stars: ✭ 1,584 (+5557.14%)
Mutual labels:  linked-data, rdf
Ckanext Dcat
CKAN ♥ DCAT
Stars: ✭ 107 (+282.14%)
Mutual labels:  linked-data, rdf
LD-Connect
LD Connect is a Linked Data portal for IOS Press in collaboration with the STKO Lab at UC Santa Barbara.
Stars: ✭ 0 (-100%)
Mutual labels:  linked-data, rdf
viziquer
Tool for Search in Structured Semantic Data
Stars: ✭ 12 (-57.14%)
Mutual labels:  linked-data, rdf

pyLDAPI Logo

Welcome to pyLDAPI

The Python Linked Data API (pyLDAPI) is:

A very small module to add Linked Data API functionality to a Python FastAPI installation.

PyPI version

What is it?

This module contains a small Python module which is intended to be added (imported) into a FastAPI (v4.x +) or Python Flask (v3.x) installation to add a small library of Renderer classes which can be used to handle requests and return responses in a manner consistent with Linked Data principles of operation.

The intention is to make it easy to "Linked Data-enable" web APIs.

An API using this module will get:

  • an alt profile for each endpoint that uses a Renderer class to return responses that the API delivers
    • this is a profile, or view of the resource that lists all other available profiles
  • a Register of Registers
    • a start-up function that auto-generates a Register of Registers is run when the API is launched.
  • a basic, over-writeable template for Registers' HTML & RDF
  • all of the functionality defined by the W3C's Content Negotiation by Profile specification
    • to allow for requests of content that conform to data specifications and profiles

The main parts of pyLDAPI are as follows:

Block diagram of pyLDAPI's main parts

Web requests arrive at a Web Server, such as Apache or nginx, which then forwards (some of) them on to FastAPI, a Python web framework. FastAPI calls Python functions for web requests defined in a request/function mapping and may call pyLDAPI elements. FastAPI need not call pyLDAPI for all requests, just as Apache/nginx need not forward all web request to FastAPI. pyLDAPI may then draw on any Python data source, such as database APIs, and uses the rdflib Python module to formulate RDF responses.

Definitions

Alt Profile

The model view that lists all other views. This API uses the definition of Alternate Profiles Data Model as an OWL ontology presented at https://www.w3.org/TR/dx-prof-conneg/#altr-owl.

Linked Data Principles

The principles of making things available over the internet in both human and machine-readable forms. Codified by the World Wide Web Consortium. See https://www.w3.org/standards/semanticweb/data.

Model View

A set of properties of a Linked Data object codified according to a standard or profile of a standard.

Object

Any individual thing delivered according to Linked Data principles.

Register

A simple listing of URIs of objects, delivered according to Linked Data principles.

Register of Registers

A register that lists all other registers which this API provides.

pyLDAPI in action

Block diagram of the GNAF implementation

Parts of the GNAF implementation

Block diagram of the ASGS implementation

Parts of the ASGS implementation

Documentation

Detailed documentation can be found at https://pyldapi.readthedocs.io/

Licence

This is licensed under GNU General Public License (GPL) v3.0. See the LICENSE deed for more details.

Contact

Dr Nicholas Car (lead)

Ashley Sommer (senior developer)

Informatics Software Engineer

Related work

pyLDAPI Client

  • A Simple helper library for consuming registers, indexes, and instances of classes exposed via a pyLDAPI endpoint.

Changelog

4.x

  • Version 4+ uses FastAPI, not Flask. For Flask, use <=3.11

3.11

  • tokens applied to Representations in Alternate View profile, not Profiles

3.0

  • Content Negotiation specification by Profile supported
  • replaced all references to "format" with "Media Type" and "view" with "profile"
  • renamed class View to Profile
  • added unit tests for all profile functions
  • added unit tests for main ConnegP functions
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].