Use case · Track your project

Track your library: what the internet says about it and its neighbours.

You maintain a library, and what matters to you is spread over the issues and releases of your repository and its neighbours. Name them, say what you want and how each item is summarised, and read one feed. Below is a real channel.

By the feedql team · Read live from a feedql channel

Updated

Give feedql a fixed list of repositories, one instruction saying which items you want (about) and one saying how each summary is written (format), and a single topic turns issues and releases of eight RDF libraries into a short list of what could affect your code, each with the original link.

What does it look like right now?

This list is the newest items of a read-only channel owned by the feedql house account. It follows tggo/goRDFlib, a Go library for RDF, and seven similar libraries: rdflib, Apache Jena, rdf4j, Oxigraph, N3.js, knakk/rdf and deiu/rdf2go. The list is read on the server when you open the page and kept for ten minutes. The grey label says whether the summary is in the shape the topic asks for or the usual summary.

Live from a feedql channel, read

  1. oxigraph/oxigraphissue

    oxrdfxml rejects <!ENTITY> declarations whose value is in single quotes

    Summary in the topic's format Issue: oxrdfxml rejects <!ENTITY> declarations whose value is in single quotes What broke: The RDF/XML parser fails on a DOCTYPE entity declaration with a single-quoted value, such as <!ENTITY rdf 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'>, returning the error "<!ENTITY values should be enclosed in double quotes". Double-quoted entities parse correctly. Expected: both forms yield the same triple. Version: oxrdfx…

    github

  2. oxigraph/oxigraphissue

    Allow configuring RocksDB’s WAL size threshold

    Summary in the topic's format Title: Allow configuring RocksDB's WAL size threshold Source: GitHub (Oxigraph) This is a feature request, not a reported bug. It asks whether Oxigraph can expose RocksDB's max_total_wal_size setting. RocksDB uses this threshold to trigger column-family flushes so older WAL files can be removed. Making it configurable would help deployments with limited disk space balance WAL size against flush frequency. The settin…

    github

  3. eclipse-rdf4j/rdf4jissue

    Add an interactive Graph Explorer to RDF4J Workbench

    Summary in the topic's format Title: Add an interactive Graph Explorer to RDF4J Workbench Type: feature request (GitHub source) The request asks for a Graph Explorer page for each repository in the RDF4J Workbench. Users would load a sample, find resources, or run CONSTRUCT/DESCRIBE or SELECT queries, then add results to a graph workspace. The workspace would support incremental node expansion, remaining-link counts, pan/zoom/drag/pin/hide, path…

    github

  4. eclipse-rdf4j/rdf4jissue

    Enable scope-aware FILTER pushdown and UNION pruning

    Summary in the topic's format Title: Enable scope-aware FILTER pushdown and UNION pruning (source: GitHub issue) Problem: The query optimizer treats a UNION that introduces branch-local variables as a general barrier to FILTER placement, leaving safe branch-specific FILTER simplification and rejection unused. Example: FILTER(BOUND(?x)) after UNION of { VALUES ?x { 1 2 } } and { VALUES ?y { 3 } } is true for the first branch and rejects the secon…

    github

  5. rdflib/rdflibissue

    Relative IRI resolution and relativization deviate from RFC 3986

    Summary in the topic's format Issue: Relative IRI resolution and relativization deviate from RFC 3986 What broke: rdflib does not resolve or produce relative IRIs as RFC 3986 §5 specifies. Each case parses but names a different IRI. Problems 1-3 are in join() in rdflib/plugins/parsers/notation3.py, used by the Turtle, TriG and N3 parsers. Problem 4 is in the serializers. Problems: 1. The base's fragment is kept. join("http://example.org/doc#", "…

    github

  6. rdflib/rdflibissue

    SPARQL `ORDER BY` on an expression that errors raises `TypeError`

    Summary in the topic's format Title: SPARQL ORDER BY on an expression that errors raises TypeError Source: github (rdflib) What broke: In rdflib's SPARQL evaluator, evalOrderBy sorts with a key that calls _val on the result of the sort expression. When the expression errors for a solution, _val returns None, and Python's sorted then raises TypeError (for example "'<' not supported between instances of 'NoneType' and 'NoneType'") out of the query…

    github

  7. rdflib/rdflibissue

    SPARQL `||` / `&&`: a bare unbound operand makes the whole expression an error

    Summary in the topic's format Issue: SPARQL `||` / `&&` with a bare unbound operand makes the whole expression an error. What broke: In `ConditionalOrExpression` and `ConditionalAndExpression` (rdflib/plugins/sparql/operators.py), operands are read as `e.expr` and `e.other`, which calls `value()` with `errors=False`. A bare unbound variable raises `NotBoundError` before the operator's error-tolerant logic runs, so the whole expression becomes an…

    github

  8. rdflib/rdflibissue

    `Graph.parse(source=<file object>)` resolves relative IRIs against the raw filesystem path, which fails on Windows

    Summary in the topic's format Issue: Graph.parse(source=<file object>) resolves relative IRIs against the raw filesystem path, which fails on Windows. Which version: not stated. What broke: When an open file is passed as source=, create_input_source uses the file's name as the system ID unchanged. The same file passed as file= is converted to a file URI via pathlib.Path(name).absolute().as_uri(), so the two arguments disagree. On Windows, a name…

    github

  9. rdflib/rdflibissue

    `Graph.parse(file=...)` fails for a text-mode `SpooledTemporaryFile` with the nt, nquads, json-ld and hext parsers

    Summary in the topic's format Issue: Graph.parse(file=...) fails for a text-mode SpooledTemporaryFile (mode="w+") with the nt, nquads, json-ld and hext parsers. What broke: Parsing a text-mode SpooledTemporaryFile through file= raises TypeError: can't concat str to bytes for nt, nquads and json-ld, and AttributeError: '_io.TextIOWrapper' object has no attribute 'read1' for hext. turtle, n3, trig and xml parse successfully. Before #3583 every par…

    github

  10. rdflib/rdflibissue

    SPARQL IN/NOT IN: an unbound variable in the list makes the whole expression an error

    Summary in the topic's format Issue: SPARQL IN/NOT IN with an unbound variable in the list Source: GitHub issue (rdflib) What broke: In rdflib, an unbound variable anywhere in the list of an IN expression makes the whole IN expression an error. SPARQL 1.1 §17.4.1.9 says an error should affect only the comparison involving that term, so a match elsewhere in the list should still succeed. Example: with a graph containing (urn:ex:s, urn:ex:p, 2), t…

    github

  11. rdflib/rdflibissue

    longturtle canon=True raises ValueError for a Dataset

    Summary in the topic's format Issue: longturtle canon=True raises ValueError for a Dataset What broke: Calling serialize(format="longturtle", canon=True) on an rdflib Dataset raises "ValueError: too many values to unpack (expected 3)". Without canon, the call works. Version: not stated. Cause: LongTurtleSerializer.canonize() passes the store to rdflib.compare.to_canonical_graph, which iterates it as triples. A Dataset iterates quads, so the unpa…

    github

  12. oxigraph/oxigraphissue

    In-memory store never reclaims removed quads or unused strings

    Summary in the topic's format Issue: In-memory store never reclaims removed quads or unused strings What broke: In lib/oxigraph/src/storage/memory.rs, removing a quad closes its VersionRange, but the QuadListNode stays in quad_set and in the four previous* chains, and nothing removes it. Memory grows with every removal without bound on long-running stores that churn values. quads_for_pattern walks dead nodes, so scans by subject slow down as val…

    github

What do you give feedql?

Nothing here is specific to libraries. feedql does not know what a library is and does not look for competitors by itself: the list of neighbours is yours. A person or their AI agent gives one topic five things.

  • Search words and names. goRDFlib, sparql, turtle, and must_see names such as tggo/goRDFlib, which always show whatever else the topic decides.
  • A fixed list of links. The GitHub repositories above. Following a repository brings its issues and releases.
  • about: which items you want. It is an instruction that the selecting model reads: "I maintain goRDFlib. Show bug reports, releases and feature requests of these RDF libraries that could affect it or that it could learn from: parser and serializer bugs, SPARQL and SHACL behaviour, performance, breaking changes. No job posts, tutorials or bot noise."
  • format: how each summary is written. "For an issue: what broke, which version, a workaround, and whether it could affect a Go RDF library. For a release: what changed that matters to a library that parses, stores or queries RDF."
  • Optionally, a search for more sources. feedql can look for further sources, but that can bring false matches, such as another project with the same name, so an agent should show each candidate and add only the ones you confirm.

An AI agent connected to feedql over MCP gets all of this from the track_project prompt: it asks you for the words, the names and the list, writes the two instructions, runs a test and follows the topic.

How is it built?

  • Selection is the model reading about. Each item from the followed repositories is scored against your instruction; what falls below the topic's threshold is not shown, and the reason is one tap away.
  • The format changes the summary, nothing else. When an item of the topic is opened, or an app asks for its summary, a small model writes it in your shape and the topic keeps it. The text of the issue is only data to that model: an issue that says "ignore your instructions" is summarised, not obeyed, and a format cannot change anyone else's summaries.
  • It has a price and a ceiling. One small model call per item read, charged to the topic, at most 40 a day; after that the usual summary stays and the item says so.
  • It works for any language. Ask for lang=uk and the summaries are written in Ukrainian.

What does it not do?

  • It does not find your competitors. The list is yours. A search for more sources is optional and can bring false matches.
  • The summary is a model's reading. It can miss a detail or state one wrongly; the original issue is always linked, and the format asks for "not stated" when the text does not say.
  • It does not read private repositories or your code. It knows what is public. "Does it affect my code" means "could it affect a library like mine", not an analysis of your repository.
  • New repositories need a moment. Items arrive as the sources are read, and a summary is written the first time its item is opened or requested.
Do I need to be a library author to use this?

No. Nothing in the setup is specific to libraries: a topic takes search words, names, a fixed list of links, an instruction saying which items you want and another saying how each summary is written. A product team can follow its own repository and its competitors' release notes the same way.

Does feedql find similar projects for me?

No. You give the list. feedql can optionally search for more sources, but that can bring false matches, so each candidate should be confirmed before it is added.

What does the summary format cost?

One small model call for each item you open or request in that topic, charged to the topic, at most 40 a day. When the day's number is used the usual summary stays.

Can an issue text make the model do something else?

No. The text of an item is given to the summary model as data, apart from your format and from the fixed rules, and an answer is stored only as a summary for your topic.

Track your project

Leave your email and the repository you maintain. The first seats go to a small group.