Completing Protobuf / gRPC support (JENA-2167): message-level StreamRDF/RowSet adapters, Protobuf RDFPatch, and RDFLink over gRPC
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 30/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- java
- Ambito
- backend-api-design
Direzione di ricerca
Start by reading the attached reviewed approach and examining Jena's existing Protobuf converters and Thrift schema, which the issue identifies as the relevant starting points. The proposed work spans message-level adapters, RDF Patch support, and a gRPC transport, so confirm the boundaries and expected APIs with maintainers before starting. Done means the agreed work is implemented with the promised test coverage; the issue proposes splitting it into three PRs.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Version
6.x (main)
Feature
TLDR - the full roadmap
I would like to contribute to the Jena project and help improve it's support for Protobuf and gRPC integration. As an apache contributor, I am trying to expand gRPC support in the ecosystem as part of greater efforts for Apache licensed software.
Digging through your tickets, I found some interest in gRPC support. I'd like to propose 3 PRs to get this done.
What I'd like to contribute
- Direct Protobuf message streaming without byte-stream overhead: Allow applications to convert RDF triples, quads, and SPARQL result rows directly to and from Jena's existing Protobuf objects in memory, rather than having to serialize and re-parse them through Java byte streams when using frameworks like gRPC or Kafka.
- Protobuf support for RDF Patch: Bring Jena's Protobuf schema up to parity with its Thrift schema by adding support for RDF Patches, so transactional dataset additions, deletions, and prefix changes can be streamed and recorded in Protobuf format.
- A gRPC server and client for Jena datasets: Provide an optional gRPC transport that plugs into Jena's standard connection APIs and storage engines (such as TDB2) without pulling in an embedded HTTP/servlet server like Jetty.
- End-to-end streaming for graph reads, writes, and SPARQL queries: Support streaming quad pattern lookups, bulk RDF loading, transactional patch replication, and SPARQL query results natively over gRPC streams.
I'd make 3 PRs to get this done.
- Expose the in-memory Protobuf message converters
- RDF Patch support
- gRPC transport module
As far as approach goes, it's pretty straightforward and I attached an AI-assisted approach to it. I've fully vetted and edited it, but because it has massive references to the codebase that a normal human wouldn't write, I have attached it as an ai-generated plan and won't call it my own (but think it's exactly right and would seek feedback).
ai-generated-approach-reviewed.md
I'd recommend we get an implementation going first then we can figure out the server infrastructure for serving gRPC if you're interested.
Prior experience to get this quickly with quality
I've contributed gRPC improvements to a multitude of projects
- Quarkus - fixed critical bugs + massive speed improvements
- Micronaut - created gRPC <--> REST automation
- Apicurio - better serialization of protobufs and better performance enhancements
- OpenNLP - I'm a committer to this project. We're going to push an initial gRPC server that'll support all of OpenNLPs rich feature set (probably early 2027)
- Tika - working with the team to come up with a parser design with their v2 of their grpc service
and many more.
I'll make sure that there's plenty of test coverage, I'll attribute all code that is AI written and review it carefully before opening a PR, and am totally OK if the patch is too large to break it up into smaller tickets that are easy for a maintainer to understand. This is an important feature to me; and I'll start working on it now. If you make a branch for this, push my changes there as a PR from my branch or directly. I'd only recommend this so we can approve the code incrementally and push to a branch before merging a full branch and allowing for contributions and collaboration from maintainers and committers within jena.
Are you interested in contributing a solution yourself?
Yes
- Lingua principale
- Java
- Stelle
- 1.5k
- Fork
- 729
- Merge medio
- 1g 8h
- PR unite (30g)
- 56
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di apache/jena
-
rset command throws NPE in ResultsFormat.guessSyntaxForse già presa @Ostrzyciel l’ha presa 13 giorni fa. Apertabug Cmd
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
bug JSON-LD
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
apache/jena#4175 · 6 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Failing tests on Locale nb-noForse già presa @OyvindLGjesdal l’ha presa 3 giorni fa. Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 55/100
apache/jena#4372 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
OpDatasetNames (empty GRAPH ?g {} in quad form) fails with ClassCastException on TDB2 (& ARQNotImplemented elsewhere)Forse già presa @krickert l’ha presa 3 giorni fa. Apertabug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 55/100
apache/jena#4362 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
I maintainer di solito rispondono entro 1 giorno
Issue simili
-
Type: Bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 1 giorno
-
MCP add-on: JSON responses with non-ASCII characters are truncated (wrong Content-Length)Forse già presa @dhanushbs10 l’ha presa oggi. Apertaadd-on bug in:mcp
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
vaadin-map
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
vaadin/flow-components#10586 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 63/100
wpilibsuite/SystemcoreTesting#446 ·
I maintainer di solito rispondono entro 1 giorno
-
frontend quality-assurance
Difficoltà 2/5 1-3 ore Idoneità per principianti 64/100
Paul-Austin-Oswego-CSC480-HCI521/gift-app#212 ·
I maintainer di solito rispondono entro 1 giorno