Upgrading 4.2.2 to 5.0.0¶
RDFLib version 5.0.0 appeared over 3 years after the previous release, 4.2.2 and contains a large number of both enhancements and bug fixes. Fundamentally though, 5.0.0 is compatible with 4.2.2.
Major Changes¶
Literal Ordering¶
Literal total ordering PR #793 is implemented. That means all literals can now be compared to be greater than or less than any other literal.
This is required for implementing some specific SPARQL features, but it is counter-intuitive to those who are expecting a TypeError when certain normally-incompatible types are compared.
For example, comparing a Literal(int(1), datatype=xsd:integer)
to Literal(datetime.date(10,01,2020), datatype=xsd:date)
using a >
or <
operator in rdflib 4.2.2 and earlier, would normally throw a TypeError,
however in rdflib 5.0.0 this operation now returns a True or False according to the Literal Total Ordering according the rules outlined in PR #793
Removed RDF Parsers¶
The RDFa and Microdata format RDF parsers were removed from rdflib. There are still other python libraries available to implement these parsers.
All Changes¶
This list has been assembled from Pull Request and commit information.
General Bugs Fixed:¶
Pr 451 redux PR #978
NTriples fails to parse URIs with only a scheme ISSUE #920 PR #974
cannot clone it on windows - Remove colons from test result files. Fix #901. ISSUE #901 PR #971
Add requirement for requests to setup.py PR #969
fixed URIRef including native unicode characters PR #961
DCTERMS.format not working ISSUE #932
infixowl.manchesterSyntax do not encode strings PR #906
Fix blank node label to not contain ‘_:’ during parsing PR #886
rename new SPARQLWrapper to SPARQLConnector PR #872
Fix #859. Unquote and Uriquote Literal Datatype. PR #860
Parsing nquads ISSUE #786
ntriples spec allows for upper-cased lang tag, fixes #782 PR #784
Error parsing N-Triple file using RDFlib ISSUE #782
Adds escaped single quote to literal parser PR #736
N3 parse error on single quote within single quotes ISSUE #732
Fixed #725 PR #730
test for issue #725: canonicalization collapses BNodes PR #726
RGDA1 graph canonicalization sometimes still collapses distinct BNodes ISSUE #725
Accept header should use a q parameter PR #720
Added test for Issue #682 and fixed. PR #718
Incompatibility with Python3: unichr ISSUE #687
namespace.py include colon in ALLOWED_NAME_CHARS PR #663
namespace.py fix compute_qname missing namespaces PR #649
RDFa parsing Error!
__init__()
got an unexpected keyword argument ‘encoding’ ISSUE #639Bugfix:
term.Literal.__add__
PR #451fixup of #443 PR #445
Microdata to rdf second edition bak PR #444
Enhanced Features:¶
Register additional serializer plugins for SPARQL mime types. PR #987
Pr 388 redux PR #979
Allows RDF terms introduced by JSON-LD 1.1 PR #970
make SPARQLConnector work with DBpedia PR #941
ClosedNamespace returns right exception for way of access PR #866
Not adding all namespaces for n3 serializer PR #832
Adds basic support of xsd:duration PR #808
Add possibility to set authority and basepath to skolemize graph PR #807
Change notation3 list realization to non-recursive function. PR #805
Suppress warning for not using custom encoding. PR #800
Add support to parsing large xml inputs ISSUE #749 PR #750
improve hash efficiency by directly using str/unicode hash PR #746
Added the csvw prefix to the RDFa initial context. PR #594
syncing changes from pyMicrodata PR #587
Microdata parser: updated the parser to the latest version of the microdata->rdf note (published in December 2014) PR #443
Literal.toPython() support for xsd:hexBinary PR #388
SPARQL Fixes:¶
Total order patch patch PR #862
use <<= instead of deprecated << PR #861
Fix #847 PR #856
RDF Literal “1”^^xsd:boolean should _not_ coerce to True ISSUE #847
Makes NOW() return an UTC date PR #844
NOW() SPARQL should return an xsd:dateTime with a timezone ISSUE #843
fix property paths bug: issue #715 PR #822 ISSUE #715
MulPath: correct behaviour of n3() PR #820
Literal total ordering PR #793
Remove SPARQLWrapper dependency PR #744
made UNION faster by not preventing duplicates PR #741
added a hook to add custom functions to SPARQL PR #723
Issue714 PR #717
Use <<= instead of deprecated << in SPARQL parser PR #417
Custom FILTER function for SPARQL engine ISSUE #274
Code Quality and Cleanups:¶
a slightly opinionated autopep8 run PR #870
remove rdfa and microdata parsers from core RDFLib PR #828
ClosedNamespace KeyError -> AttributeError PR #827
typo in rdflib/plugins/sparql/update.py ISSUE #760
Fix logging in interactive mode PR #731
make namespace module flake8-compliant, change exceptions in that mod… PR #711
delete ez_setup.py? ISSUE #669
code duplication issue between rdflib and pymicrodata ISSUE #582
Transition from 2to3 to use of six.py to be merged in 5.0.0-dev PR #519
sparqlstore drop deprecated methods and args PR #516
python3 code seems shockingly inefficient ISSUE #440
removed md5_term_hash, fixes #240 PR #439 ISSUE #240
Testing:¶
Documentation Fixes:¶
Fix a doc string in the query module PR #976
setup.py: Make the license field use an SPDX identifier PR #789
Update README.md PR #764
Update namespaces_and_bindings.rst PR #757
DOC: README.md: rdflib-jsonld, https uris PR #712
make doctest support py2/py3 ISSUE #707
pip install rdflib
(as per README.md) gets OSError on Mint 18.1 ISSUE #704 PR #717Use <<= instead of deprecated << in SPARQL parser PR #417
Custom FILTER function for SPARQL engine ISSUE #274
Code Quality and Cleanups:¶
a slightly opinionated autopep8 run PR #870
remove rdfa and microdata parsers from core RDFLib PR #828
ClosedNamespace KeyError -> AttributeError PR #827
typo in rdflib/plugins/sparql/update.py ISSUE #760
Fix logging in interactive mode PR #731
make namespace module flake8-compliant, change exceptions in that mod… PR #711
delete ez_setup.py? ISSUE #669
code duplication issue between rdflib and pymicrodata ISSUE #582
Transition from 2to3 to use of six.py to be merged in 5.0.0-dev PR #519
sparqlstore drop deprecated methods and args PR #516
python3 code seems shockingly inefficient ISSUE #440
removed md5_term_hash, fixes #240 PR #439 ISSUE #240
Testing:¶
Documentation Fixes:¶
Fix a doc string in the query module PR #976
setup.py: Make the license field use an SPDX identifier PR #789
Update README.md PR #764
Update namespaces_and_bindings.rst PR #757
DOC: README.md: rdflib-jsonld, https uris PR #712
make doctest support py2/py3 ISSUE #707
pip install rdflib
(as per README.md) gets OSError on Mint 18.1 ISSUE #704