Skip to content

Releases: RDFLib/rdflib

RDFlib 6.0.0

20 Jul 13:18
Compare
Choose a tag to compare

6.0.0 is a major stable release that drops support for Python 2 and Python 3 < 3.7. Type hinting is now present in much
of the toolkit as a result.

It includes the formerly independent JSON-LD parser/serializer, improvements to Namespaces that allow for IDE namespace
prompting, simplified use of g.serialize() (turtle default, no need to decode()) and many other updates to
documentation, store backends and so on.

Performance of the in-memory store has also improved since Python 3.6 dictionary improvements.

There are numerous supplementary improvements to the toolkit too, such as:

  • inclusion of Docker files for easier CI/CD
  • black config files for standardised code formatting
  • improved testing with mock SPARQL stores, rather than a reliance on DBPedia etc

RDFlib 5.0.0

18 Apr 04:48
Compare
Choose a tag to compare

5.0.0 is a major stable release and is the last release to support Python 2 & 3.4. 5.0.0 is mostly backwards-
compatible with 4.2.2 and is intended for long-term, bug fix only support.

5.0.0 comes two weeks after the 5.0.0RC1 and includes a small number of additional bug fixes. Note that
rdflib-jsonld has released a version 0.5.0 to be compatible with rdflib 5.0.0.

There is a large list of changes since the 4.2.2 release, see the CHANGELOG for details.

See https://rdflib.dev for the proposed future release schedule.

RDFLib 4.2.2

29 Jan 17:18
Compare
Choose a tag to compare

This is a bug-fix release, and the last release in the 4.X.X series.

Bug fixes:

  • SPARQL bugs fixed:
    • Fix for filters in sub-queries
      #693
    • Fixed bind, initBindings and filter problems
      #294
      #555
      #580
      #586
      #601
      #615
      #617
      #619
      #630
      #653
      #686
      #688
      #692
    • Fixed unexpected None value in SPARQL-update
      #633
      #634
    • Fix sparql, group by and count of null values with optional
      #631
    • Fixed sparql sub-query and aggregation bugs
      #607
      #610
      #628
      #694
    • Fixed parsing Complex BGPs as triples
      #622
      #623
    • Fixed DISTINCT being ignored inside aggregate functions
      #404
      #611
      #678
    • Fix unicode encoding errors in sparql processor
      #446
      #599
    • Fixed SPARQL select nothing no longer returning a None row
      #554
      #592
    • Fixed aggregate operators COUNT and SAMPLE to ignore unbound / NULL values
      #564
      #563
      #567
      #568
    • Fix sparql relative uris
      #523
      #524
    • SPARQL can now compare xsd:date type as well, fixes #532
      #532
      #533
    • fix sparql path order on python3: "TypeError: unorderable types: SequencePath() < SequencePath()""
      #492
      #525
    • SPARQL parser now robust to spurious semicolon
      #381
      #528
    • Let paths be comparable against all nodes even in py3 (preparedQuery error)
      #545
      #552
    • Made behavior of initN in update and query more consistent
      #579
      #600
  • SparqlStore:
    • SparqlStore now closes underlying urllib response body
      #638
      #683
    • SparqlStore injectPrefixes only modifies query if prefixes present and if adds a newline in between
      #521
      #522
  • Fixes and tests for AuditableStore
    #537
    #557
  • Trig bugs fixed:
    • trig export of multiple graphs assigns wrong prefixes to prefixedNames
      #679
    • Trig serialiser writing empty named graph name for default graph
      #433
    • Trig parser can creating multiple contexts for the default graph
      #432
    • Trig serialisation handling prefixes incorrectly
      #428
      #699
  • Fixed Nquads parser handling of triples in default graph
    #535
    #536
  • Fixed TypeError in Turtle serializer (unorderable types: DocumentFragment() > DocumentFragment())
    #613
    #648
    #666
    #676
  • Fixed serialization and parsing of inf/nan
    #655
    #658
  • Fixed RDFa parser from failing on time elements with child nodes
    #576
    #577
  • Fix double reduction of \ escapes in from_n3
    #546
    #548
  • Fixed handling of xsd:base64Binary
    #646
    #674
  • Fixed Collection.setitem broken
    #604
    #605
  • Fix ImportError when main already loaded
    #616
  • Fixed broken top_level.txt file in distribution
    #571
    #572
    #573

Enhancements:

  • Added support for Python 3.5+
    #526
  • More aliases for common formats (nt, turtle)
    #701
  • Improved RDF1.1 ntriples support
    #695
    #700
  • Dependencies updated and improved compatibility with pyparsing, html5lib, SPARQLWrapper and elementtree
    #550
    #589
    #606
    #641
    #642
    #650
    #671
    #675
    #684
    #696
  • Improved prefix for SPARQL namespace in XML serialization
    #493
    #588
  • Performance improvements:
    • SPARQL Aggregation functions don't build up memory for each row
      #678
    • Collections now support += (iadd), fixes slow creation of large lists
      #609
      #612
      #691
    • SPARQL Optimisation to expand BGPs in a smarter way
      #547
  • SPARQLStore improvements
    • improved SPARQLStore BNode customizability
      #511
      #512
      #513
      #603
    • Adding the option of using POST for long queries in SPARQLStore
      #672
      #673
    • Exposed the timeout of SPARQLWrapper
      #531
  • SPARQL prepared query now carries the original (unparsed) parameters
    #565
  • added .n3 methods for path objects
    #553
  • Added support for xsd:gYear and xsd:gYearMonth
    #635
    #636
  • Allow duplicates in rdf:List
    #223
    #690
  • Improved slicing of Resource objects
    #529

Cleanups:

  • cleanup: SPARQL Prologue and Query new style classes
    #566
  • Reduce amount of warnings, especially closing opened file pointers
    #518
    #651
  • Improved ntriples parsing exceptions to actually tell you what's wrong
    #640
    #643
  • remove ancient and broken 2.3 support code.
    #680
    #681
  • Logger output improved
    #662
  • properly cite RGDA1
    #624
  • Avoid class reference to imported function
    #574
    #578
  • Use find_packages for package discovery.
    ...
Read more

RDFLib 4.2.1

12 Aug 14:52
Compare
Choose a tag to compare

This is a bug-fix release.

Minor enhancements:

  • Added a Networkx connector
    #471,
    #507
  • Added a graph_tool connector
    #473
  • Added a graphs method to the Dataset object
    #504,
    #495
  • Batch commits for SPARQLUpdateStore
    #486

Bug fixes:

  • Fixed bnode collision bug
    #506,
    #496,
    #494
  • fix util.from_n3() parsing Literals with datatypes and Namespace support
    #503,
    #502
  • make Identifier.__hash__ stable wrt. multi processes
    #501,
    #500
  • fix handling URLInputSource without content-type
    #499,
    #498
  • no relative import in algebra when run as a script
    #497
  • Duplicate option in armstrong theme.conf removed
    #491
  • Variable.__repr__ returns a python representation string, not n3
    #488
  • fixed broken example
    #482
  • trig output fixes
    #480
  • set PYTHONPATH to make rdfpipe tests use the right rdflib version
    #477
  • fix RDF/XML problem with unqualified use of rdf:about
    #470,
    #468
  • AuditableStore improvements
    #469,
    #463
  • added asserts for graph.set([s,p,o]) so s and p aren't None
    #467
  • threading.RLock instances are context managers
    #465
  • SPARQLStore does not transform Literal('') into Literal('None') anymore
    #459,
    #457
  • slight performance increase for graph.all_nodes()
    #458

Testing improvements:

  • travis: migrate to docker container infrastructure
    #508
  • test for narrow python builds (chars > 0xFFFF) (related to
    #453,
    #454
    )
    #456,
    #509
  • dropped testing py3.2
    #448
  • Running a local fuseki server on travis and making it failsafe
    #476,
    #475,
    #474,
    #466,
    #460
  • exclude def main(): functions from test coverage analysis
    #472

RDFLib 4.2.0

19 Feb 13:48
Compare
Choose a tag to compare

This is a new minor version of RDFLib including a handful of new features:

  • Supporting N-Triples 1.1 syntax using UTF-8 encoding
    #447,
    #449,
    #400
  • Graph comparison now really works using RGDA1 (RDF Graph Digest Algorithm 1)
    #441
    #385
  • More graceful degradation than simple crashing for unicode chars > 0xFFFF on
    narrow python builds. Parsing such characters will now work, but issue a
    UnicodeWarning. If you run python -W all you will already see a warning on
    import rdflib will show a warning (ImportWarning).
    #453,
    #454
  • URLInputSource now supports json-ld
    #425
  • SPARQLStore is now graph aware
    #401,
    #402
  • SPARQLStore now uses SPARQLWrapper for updates
    #397
  • Certain logging output is immediately shown in interactive mode
    #414
  • Python 3.4 fully supported
    #418

Minor enhancements & bugs fixed:

  • Fixed double invocation of 2to3
    #437
  • PyRDFa parser missing brackets
    #434
  • Correctly handle \uXXXX and \UXXXXXXXX escapes in n3 files
    #426
  • Logging cleanups and keeping it on stderr
    #420
    #414
    #413
  • n3: allow @base URI to have a trailing '#'
    #407
    #379
  • microdata: add file:// to base if it's a filename so rdflib can parse its own
    output
    #406
    #403
  • TSV Results parse skips empty bindings in result
    #390
  • fixed accidental test run due to name
    #389
  • Bad boolean list serialization to Turtle & fixed ambiguity between
    Literal(False) and None
    #387
    #382
  • Current version number & PyPI link in README.md
    #383