I found today https://github.com/vemonet/rdflib-endpoint looks promissing.

On Wednesday, June 23, 2021 at 1:21:59 AM UTC+2 
nichol...@surroundaustralia.com wrote:

> Just following up on this:
>
> * *pyLDAPI*
>     * initially a LDP implementation in Python Flask
>     * updated to support ConnegP (
> https://w3c.github.io/dx-connegp/connegp/)
>     * recently updated to work with Pythons newer FastAPI - see 
> https://github.com/rdflib/pyLDAPI/tree/feature/fastapi
>     * a variant of it also supports the OGC's OGC API
>
> We (my company, Australian government) use this API a lot, so it's under 
> active and constant development and use.
>
> We tend to use it on top of a triplestore like Fuseki or GraphDB but also 
> use it on top of non-RDF sources like Oracle, Postgres, WFS etc. for 
> RESTful HTML & RDF too.
>
> Example endpoints:
>
> * https://asgsld.net/2016/ - Postgres back-end
> * http://asgs.surroundaustralia.com/collections - same data as above, 
> Fuseki back-end
> * http://provinces.surroundaustralia.com/collections/agp/items/PR20119 - 
> WFS back-end so slower
> * https://gnafld.net/?_view=reg - large Postgres back-end
>
> We are working on a next-gen API that auto-configures a lot more: just 
> give it data and it will work out how to make the API.
>
> Cheers,
>
> Nick
>
> On Tue, Jun 1, 2021 at 5:53 AM richarddi...@gmail.com <
> richarddi...@gmail.com> wrote:
>
>> Hi Wes,
>>
>> I am impressed by your invertory of relevant available libraries.
>> IMO it's a pitty you have learned pydal just today, it is great. Pydal is 
>> maintained as a seperate library; it has been part of web2py. Pydal is also 
>> part of the py4web stack. Pydal and sqlforms (
>> https://py4web.com/_documentation/static/en/chapter-12.html) can be a 
>> productive combination for RDF model driven UI's.
>>
>> The objectives are complete, we might arrange them by priority. 
>>
>> We could start with a 'simple' sparql endpoint only reading graphs, 
>> serving a general usecase. With rich output options would be already more 
>> useful than Fuseki. 
>>
>> Additions to possible useful libraries:
>> - Shaclgen https://pypi.org/project/shaclgen/ for generating shapes of 
>> relational models
>> - https://github.com/Babibubebon/vue-shacl-form is a a JS library for 
>> Vue forms based on shacl.
>> - https://github.com/rob-metalinkage/django-rdf-io , Utilities to link 
>> Django to RDF stores and inferencers 
>> - also a minimal s-put (SPARQL over HTML, written in Ruby) exists in 
>> Python.
>>
>> Richard
>>
>>
>>
>>
>> On Monday, May 31, 2021 at 10:55:40 AM UTC+2 wes.t...@gmail.com wrote:
>>
>>> ## Objectives
>>> - Develop schema/models and map those onto 
>>> objects/tables/rows/nodes/edges/RDF/RDF* in order to store instances
>>> - Generate HTML + JS forms with clientside validation in order to CRUD 
>>> instances and assure data quality (JSONschema?)
>>> - Generate HTML + JS forms with serverside validation in order to CRUD 
>>> instances and assure data quality (JSONschema?)
>>> - Generate HTTP API for use with:
>>>   - JS client app (browser, desktop, mobile)
>>>   - Mobile app (mobile)
>>>   - Clients that authenticate before making requests
>>> - Pass through SPARQL queries made to the app to the backend SPARQL 
>>> endpoint in order to validate/modify the query (e.g. the LIMIT clause)
>>> - Expose all data through SPARQL endpoint
>>>   - Prevent resource exhaustion ("DoS") due to reasonable use by more 
>>> than one user
>>>   - Support HTTP Content-Range requests and/or Paging/Pagination
>>>   - Support [pass through?] authentication and possibly also 
>>> authorization
>>>   - Determine whether ther ultimate SPARQL server supports rate limiting 
>>> and/or anything like an X-Forwarded-For header
>>>
>>> *****
>>>
>>> - TIL that pydal is the web2py SQL ORM and forms generation and 
>>> validation library:
>>>   http://www.web2py.com/books/default/chapter/29/07/forms-and-validators
>>>
>>> - Django ModelForms (and class-based views) are unfortunately somewhat 
>>> tightly coupled to the Django ORM:
>>>   https://docs.djangoproject.com/en/3.2/topics/forms/modelforms/
>>>
>>>   "Unfortunate" because there may not be a good way to make a graph 
>>> query interface quack exactly like a SQL ORM interface; so more abstraction 
>>> *would be* necessary to maximally reuse the forms validation, CRUD 
>>> scaffolding, and REST API features -- that we use batteries-included 
>>> frameworks for -- with anything other than a SQL database. So, instead of 
>>> trying to do SPARQL on top of SQL -- which is trivial with e.g. Virtuoso -- 
>>> SQL applications can also just publish cached, URI-named JSON-LD documents 
>>> and/or provide an e.g. W3C LDP HTTP API that other apps can easily copy 
>>> data from into an on-disk or in-memory e.g. triplestore database as 
>>> necessary.
>>>
>>> - DRF (Django REST Framework) does lots of APIs very well.
>>>   - I've mentioned why I think it's worth it to do LDP/SPARQL on DRF for 
>>> all on Twitter before in the past;
>>>     because the Django community is huge so high impact and 
>>>     Linked Data in Django could be as easy as models.py / admin.py / 
>>> api.py.
>>>   - IIRC, DRF Validators and (De-)Serializers are not coupled to the 
>>> Django ORM:
>>>     https://www.django-rest-framework.org/api-guide/validators/
>>>     https://www.django-rest-framework.org/api-guide/serializers/ 
>>>   - It's probably pretty easy to frame DRF API responses as JSON-LD; 
>>> with an optional explicit @context that maps the framed JSON document 
>>> structure to RDF; though then what are the named graph URIs for each 
>>> [paged, possibly windowed] HTTP API endpoint responses?
>>>
>>> - Generate HTML+JS forms with validation from one or more {RDFS, SHACL, 
>>> JSONschema, OWL, Fresnel} schema
>>>
>>>   - From 
>>> https://github.com/schemaorg/schemaorg/issues/2790#issuecomment-839263042 
>>> re: 
>>> schema validation [of template output in CI test runs] :
>>>     > Perhaps there's some combination of e.g. 
>>> https://github.com/google/schema-dts and ( 
>>> https://github.com/vazco/uniforms , 
>>> https://github.com/rjsf-team/react-jsonschema-form ) or 
>>> https://github.com/mulesoft-labs/json-ld-schema that would be usable 
>>> offline in frequent, automated builds?
>>>
>>>   - https://github.com/RDFLib/pySHACL#python-module-use
>>>     - Is there a good way to get {pySHACL,} data validation messages to 
>>> display in an HTML+JS form?
>>>     - Can SHACL validation also be done in JS in a browser; for live 
>>> form validation without server load?
>>>     - What are the standards for returning SHACL validation results in 
>>> RDF over HTTP?
>>>
>>> - LDP and/or / instead_of SPARQL:
>>>
>>>   - From https://www.w3.org/wiki/LDP_Implementations 
>>>     TIL about "A LDP server in Python3 using asyncio, aiohttp and 
>>> api_hour" named glutton:
>>>     - name: glutton
>>>     - source: https://github.com/CommonsDev/glutton
>>>     - description: "- 
>>> https://github.com/CommonsDev/glutton/blob/develop/glutton/glutton/__init__.py\n-
>>>  
>>> "
>>>
>>>   - From https://github.com/RDFLib?type=source but not 
>>> https://rdflib.dev/#rdflib-family-of-packages :
>>>
>>>     - https://github.com/RDFLib/rdflib-web
>>>       > Two Flask web-apps for quickly setting up a SPARQL 1.0 Endpoint 
>>> or a LOD app for RDFLib
>>>
>>>     - https://github.com/RDFLib/pyLDAPI
>>>       > 
>>>       > This module contains a small Python module which is intended to 
>>> be added (imported) into a Python Flask 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.
>>>
>>> These for Django would be cool; it'd be great to be able to use the 
>>> batteries included in the framework with Linked Data data sources instead 
>>> of SQL to Object models.
>>>
>>> On Sun, May 30, 2021, 15:18 richarddi...@gmail.com <
>>> richarddi...@gmail.com> wrote:
>>>
>>>> Thank you for the confirmation and the additions.
>>>> Thinking about these DOS attacks will be an issue for all 
>>>> implementations imo; so I will not start taking this a major criterion.
>>>>
>>>> Local graph queries and the RDF store can be used behind this sparql 
>>>> endpoint. Queries supply optionally a graph name in the query or as 
>>>> parameter.
>>>>
>>>> I have already developed RDF model driven apps using web2py. I would 
>>>> like start using py4web (successor of web2py) for the sparql endpoint 
>>>> because of the easy use of py4web. Py4web is rather new but I think it 
>>>> will 
>>>> be sufficient mature within 1 year. Now we have a momentum for RDF based 
>>>> solutions. This type of solutions require always software development. A 
>>>> productive Python ecosystem will lower the effort required for initial RDF 
>>>> model driven applications because specific query might return specific 
>>>> output like charts, graphs, json or formatted tables using specific 
>>>> vocabulaires.
>>>>
>>>> My experience is also with TQ TB Composer and TB EDG. My wep2py apps 
>>>> used EDG as a sparql endpoint for both ontology and data store. TB EDG use 
>>>> GraphQL for form generation; I have been using pydal for instant form 
>>>> generation and data validation based on SHACL.
>>>>
>>>> I am also in contact with the py4web community for their interest in 
>>>> this initiative.
>>>>
>>>>
>>>> On Sunday, May 30, 2021 at 4:38:38 PM UTC+2 wes.t...@gmail.com wrote:
>>>>
>>>>> Rdflib has support for SPARQL queries on local graphs and remote 
>>>>> SPARQL endpoints, but doesn't specify a framework to use to send results 
>>>>> back over HTTP per e.g.  SPARQL 1.1 UPDATE or SPARQL 1.1 Graph Store HTTP 
>>>>> Protocol.
>>>>>
>>>>>
>>>>> https://rdfextras.readthedocs.io/en/latest/working_with.html#working-with-sparql
>>>>>
>>>>> SPARQL 1.1 Update
>>>>> https://www.w3.org/TR/sparql11-update/
>>>>>
>>>>> SPARQL 1.1 Graph Store HTTP Protocol
>>>>> https://www.w3.org/TR/sparql11-http-rdf-update/
>>>>>
>>>>> FWIU, LDP is an alternate way to share subgraphs over HTTP which 
>>>>> specifies how to do pagination, where SPARQL does not and something 
>>>>> should 
>>>>> enforce a default and a maximum LIMIT clause.
>>>>>
>>>>> What does this query do when run by many users concurrently?
>>>>>
>>>>> SELECT ?s,  ?p, ?o LIMIT 1000000000000;
>>>>>
>>>>> That's okay though, because like any database can be trivially DOS'd 
>>>>> if the DB interface is exposed to end users, right?
>>>>>
>>>>> So, there is not an opportunity to eliminate the web application 
>>>>> server tier because SPARQL endpoints cannot be exposed to end users 
>>>>> without 
>>>>> creating a Denial-of-Service vulnerability.
>>>>>
>>>>> Which framework should a reference e.g. LDP or SOLID (LDP+[...]) 
>>>>> implementation be written for?
>>>>>
>>>>> - Django, on top of DRF
>>>>> - Flask, because I want to reinvent auth/authz for every implementation
>>>>> - Flask, because it's more async
>>>>> - ?
>>>>>
>>>>>
>>>>>
>>>>> On Sun, May 30, 2021, 06:59 richarddi...@gmail.com <
>>>>> richarddi...@gmail.com> wrote:
>>>>>
>>>>>> As far as I know no Python based sparql-endpoint (like Fuseki, 
>>>>>> https://jena.apache.org/documentation/fuseki2/) implementations 
>>>>>> exist.
>>>>>>
>>>>>> Do (previous) initiatives exist with this goal?
>>>>>>
>>>>>> -- 
>>>>>> http://github.com/RDFLib
>>>>>> --- 
>>>>>> You received this message because you are subscribed to the Google 
>>>>>> Groups "rdflib-dev" group.
>>>>>> To unsubscribe from this group and stop receiving emails from it, 
>>>>>> send an email to rdflib-dev+...@googlegroups.com.
>>>>>> To view this discussion on the web visit 
>>>>>> https://groups.google.com/d/msgid/rdflib-dev/067098ee-f08e-424c-9cdf-d9e234f635c3n%40googlegroups.com
>>>>>>  
>>>>>> <https://groups.google.com/d/msgid/rdflib-dev/067098ee-f08e-424c-9cdf-d9e234f635c3n%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>> .
>>>>>>
>>>>> -- 
>>>> http://github.com/RDFLib
>>>> --- 
>>>> You received this message because you are subscribed to the Google 
>>>> Groups "rdflib-dev" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>> an email to rdflib-dev+...@googlegroups.com.
>>>>
>>> To view this discussion on the web visit 
>>>> https://groups.google.com/d/msgid/rdflib-dev/75b8b124-da49-4b34-96e5-6ef361eaf047n%40googlegroups.com
>>>>  
>>>> <https://groups.google.com/d/msgid/rdflib-dev/75b8b124-da49-4b34-96e5-6ef361eaf047n%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>> .
>>>>
>>> -- 
>> http://github.com/RDFLib
>> --- 
>> You received this message because you are subscribed to the Google Groups 
>> "rdflib-dev" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to rdflib-dev+...@googlegroups.com.
>>
> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/rdflib-dev/389452c5-b7f7-4dd9-b432-6dda7bf173e0n%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/rdflib-dev/389452c5-b7f7-4dd9-b432-6dda7bf173e0n%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>

-- 
http://github.com/RDFLib
--- 
You received this message because you are subscribed to the Google Groups 
"rdflib-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rdflib-dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rdflib-dev/b6934db8-5164-493d-967d-853ee93a4c0bn%40googlegroups.com.

Reply via email to