-
Notifications
You must be signed in to change notification settings - Fork 571
/
Copy pathCHANGELOG.md
3954 lines (3009 loc) · 160 KB
/
CHANGELOG.md
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
## 2023-08-02 RELEASE 7.0.0
This is a major release with relatively slight breaking changes, new
features and bug fixes.
The most notable breaking change relates to how RDFLib handles the
`publicID` parameter of the `Graph.parse` and `Dataset.parse` methods.
Most users should not be affected by this change.
Instructions on adapting existing code to the breaking changes can be
found in the upgrade guide from Version 6 to Version 7 which should be
available [here](https://rdflib.readthedocs.io/en/stable/).
It is likely that the next couple of RDFLib releases will all be major
versions, mostly because there are some more shortcomings of RDFLib's
public interface that should be addressed.
If you use RDFLib, please consider keeping an eye on
[discussions](https://github.com/RDFLib/rdflib/discussions?discussions_q=label%3A%22feedback+wanted%22),
issues and pull-requests labelled with ["feedback
wanted"](https://github.com/RDFLib/rdflib/labels/feedback%20wanted).
A big thanks to everyone who contributed to this release.
### BREAKING CHANGE: don't use `publicID` as the name for the default graph. (#2406)
Commit [4b96e9d](https://github.com/RDFLib/rdflib/commit/4b96e9d), closes [#2406](https://github.com/RDFLib/rdflib/issues/2406).
When parsing data into a `ConjunctiveGraph` or `Dataset`, the triples in the
default graphs in the sources were loaded into a graph named `publicID`.
This behaviour has been changed, and now the triples from the default graph in
source RDF documents will be loaded into `ConjunctiveGraph.default_context` or
`Dataset.default_context`.
The `publicID` parameter to `ConjunctiveGraph.parse` and `Dataset.parse`
constructors will now only be used as the base URI for relative URI resolution.
- Fixes https://github.com/RDFLib/rdflib/issues/2404
- Fixes https://github.com/RDFLib/rdflib/issues/2375
- Fixes https://github.com/RDFLib/rdflib/issues/436
- Fixes https://github.com/RDFLib/rdflib/issues/1804
### BREAKING CHANGE: drop support for python 3.7 (#2436)
Commit [1e5f56b](https://github.com/RDFLib/rdflib/commit/1e5f56b), closes [#2436](https://github.com/RDFLib/rdflib/issues/2436).
Python 3.7 will be end-of-life on the 27th of June 2023 and the next release of
RDFLib will be a new major version.
This changes the minimum supported version of Python to 3.8.1 as some of the
dependencies we use are not too fond of python 3.8.0. This change also removes
all accommodations for older python versions.
### feat: add `curie` method to `NamespaceManager` (#2365)
Commit [f200722](https://github.com/RDFLib/rdflib/commit/f200722), closes [#2365](https://github.com/RDFLib/rdflib/issues/2365).
Added a `curie` method to `NamespaceManager`, which can be used to generate a
CURIE from a URI.
Other changes:
- Fixed `NamespaceManager.expand_curie` to work with CURIES that have blank
prefixes (e.g. `:something`), which are valid according to [CURIE Syntax
1.0](https://www.w3.org/TR/2010/NOTE-curie-20101216/).
- Added a test to confirm <https://github.com/RDFLib/rdflib/issues/2077>.
Fixes <https://github.com/RDFLib/rdflib/issues/2348>.
### feat: add optional `target_graph` argument to `Graph.cbd` and use it for DESCRIBE queries (#2322)
Commit [81d13d4](https://github.com/RDFLib/rdflib/commit/81d13d4), closes [#2322](https://github.com/RDFLib/rdflib/issues/2322).
Add optional keyword only `target_graph` argument to `rdflib.graph.Graph.cbd` and use this new argument in `evalDescribeQuery`.
This makes it possible to compute a concise bounded description without creating a new graph to hold the result, and also without potentially having to copy it to another final graph.
### feat: Don't generate prefixes for unknown URIs (#2467)
Commit [bd797ac](https://github.com/RDFLib/rdflib/commit/bd797ac).
When serializing RDF graphs, URIs with unknown prefixes were assigned a
namespace like `ns1:`. While the result would be smaller files, it does
result in output that is not as readable.
This change removes this automatic assignment of namespace prefixes.
This is somewhat of an aesthetic choice, eventually we should have more
flexibility in this regard so that users can exercise more control over
how URIs in unknown namespaces are handled.
With this change, users can still manually create namespace prefixes for
URIs in unknown namespaces, but before it there was no way to avoid the
undesired behaviour, so this seems like the better default.
### feat: Longturtle improvements (#2500)
Commit [5ee8bd7](https://github.com/RDFLib/rdflib/commit/5ee8bd7), closes [#2500](https://github.com/RDFLib/rdflib/issues/2500).
Improved the output of the longturtle serializer.
### fix: SPARQL count with optionals (#2448)
Commit [46ff6cf](https://github.com/RDFLib/rdflib/commit/46ff6cf), closes [#2448](https://github.com/RDFLib/rdflib/issues/2448).
Change SPARQL count aggregate to ignore optional that are unbound
instead of raising an exception when they are encountered.
### fix: `GROUP_CONCAT` handling of empty separator (issue) (#2474)
Commit [e94c252](https://github.com/RDFLib/rdflib/commit/e94c252), closes [#2474](https://github.com/RDFLib/rdflib/issues/2474).
`GROUP_CONCAT` was handling an empty separator (i.e. `""`) incorrectly,
it would handle it as if the separator were not set, so essentially it was
treated as a single space (i.e. `" "`).
This change fixes it so that an empty separator with `GROUP_CONCAT`
results in a value with nothing between concatenated values.
Fixes <https://github.com/RDFLib/rdflib/issues/2473>
### fix: add `NORMALIZE_LITERALS` to `rdflib.__all__` (#2489)
Commit [6981c28](https://github.com/RDFLib/rdflib/commit/6981c28), closes [#2489](https://github.com/RDFLib/rdflib/issues/2489).
This gets Sphinx to generate documentation for it, and also clearly
indicates that it can be used from outside the module.
- Fixes <https://github.com/RDFLib/rdflib/issues/2488>
### fix: bugs with `rdflib.extras.infixowl` (#2390)
Commit [cd0b442](https://github.com/RDFLib/rdflib/commit/cd0b442), closes [#2390](https://github.com/RDFLib/rdflib/issues/2390).
Fix the following issues in `rdflib.extras.infixowl`:
- getting and setting of max cardinality only considered identifiers and not other RDF terms.
- The return value of `manchesterSyntax` was wrong for some cases.
- The way that `BooleanClass` was generating its string representation (i.e. `BooleanClass.__repr__`) was wrong for some cases.
Other changes:
- Added an example for using infixowl to create an ontology.
- Updated infixowl tests.
- Updated infixowl documentation.
This code is based on code from:
- <https://github.com/RDFLib/rdflib/pull/2307>
### fix: correct imports and `__all__` (#2340)
Commit [7df77cd](https://github.com/RDFLib/rdflib/commit/7df77cd), closes [#2340](https://github.com/RDFLib/rdflib/issues/2340).
Disable
[`implicit_reexport`](https://mypy.readthedocs.io/en/stable/config_file.html#confval-implicit_reexport)
and eliminate all errors reported by mypy after this.
This helps ensure that import statements import from the right module and that
the `__all__` variable is correct.
### fix: dbpedia URL to use https instead of http (#2444)
Commit [ef25896](https://github.com/RDFLib/rdflib/commit/ef25896), closes [#2444](https://github.com/RDFLib/rdflib/issues/2444).
The URL for the service keyword had the http address for the dbpedia endpoint, which no longer works. Changing it to https as that works.
### fix: eliminate bare `except:` (#2350)
Commit [4ea1436](https://github.com/RDFLib/rdflib/commit/4ea1436), closes [#2350](https://github.com/RDFLib/rdflib/issues/2350).
Replace bare `except:` with `except Exception`, there are some cases where it
can be narrowed further, but this is already an improvement over the current
situation.
This is somewhat pursuant to eliminating
[flakeheaven](https://github.com/flakeheaven/flakeheaven), as it no longer
supports the latest version of flake8
[[ref](https://github.com/flakeheaven/flakeheaven/issues/132)]. But it also is
just the right thing to do as bare exceptions can cause problems.
### fix: eliminate file intermediary in translate algebra (#2267)
Commit [ae6b859](https://github.com/RDFLib/rdflib/commit/ae6b859), closes [#2267](https://github.com/RDFLib/rdflib/issues/2267).
Previously, `rdflib.plugins.sparql.algebra.translateAlgebra()` maintained state via a file, with a fixed filename `query.txt`. With this change, use of that file is eliminated; state is now maintained in memory so that multiple concurrent `translateAlgebra()` calls, for example, should no longer interfere with each other.
The change is accomplished with no change to the client interface. Basically, the actual functionality has been moved into a class, which is instantiated and used as needed (once per call to `algrebra.translateAlgebra()`).
### fix: eliminate some mutable default arguments in SPARQL code (#2301)
Commit [89982f8](https://github.com/RDFLib/rdflib/commit/89982f8), closes [#2301](https://github.com/RDFLib/rdflib/issues/2301).
This change eliminates some situations where a mutable object (i.e., a dictionary) was used as the default value for functions in the `rdflib.plugins.sparql.processor` module and related code. It replaces these situations with `typing.Optinal` that defaults to None, and is then handled within the function. Luckily, some of the code that the SPARQL Processor relied on already had this style, meaning not a lot of changes had to be made.
This change also makes a small update to the logic in the SPARQL Processor's query function to simplify the if/else statement. This better mirrors the implementation in the `UpdateProcessor`.
### fix: formatting of SequencePath and AlternativePath (#2504)
Commit [9c73581](https://github.com/RDFLib/rdflib/commit/9c73581), closes [#2504](https://github.com/RDFLib/rdflib/issues/2504).
These path types were formatted without parentheses even if they
contained multiple elements, resulting in string representations that
did not accurately represent the path.
This change fixes the formatting so that the string representations are
enclosed in parentheses when necessary.
- Fixes <https://github.com/RDFLib/rdflib/issues/2503>.
### fix: handling of `rdf:HTML` literals (#2490)
Commit [588286b](https://github.com/RDFLib/rdflib/commit/588286b), closes [#2490](https://github.com/RDFLib/rdflib/issues/2490).
Previously, without `html5lib` installed, literals with`rdf:HTML`
datatypes were treated as
[ill-typed](https://www.w3.org/TR/rdf11-concepts/#section-Graph-Literal),
even if they were not ill-typed.
With this change, if `html5lib` is not installed, literals with the
`rdf:HTML` datatype will not be treated as ill-typed, and will have
`Null` as their `ill_typed` attribute value, which means that it is
unknown whether they are ill-typed or not.
This change also fixes the mapping from `rdf:HTML` literal values to
lexical forms.
Other changes:
- Add tests for `rdflib.NORMALIZE_LITERALS` to ensure it behaves
correctly.
Related issues:
- Fixes <https://github.com/RDFLib/rdflib/issues/2475>
### fix: HTTP 308 Permanent Redirect status code handling (#2389)
Commit [e0b3152](https://github.com/RDFLib/rdflib/commit/e0b3152), closes [#2389](https://github.com/RDFLib/rdflib/issues/2389) [/docs.python.org/3.11/whatsnew/changelog.html#id128](https://github.com//docs.python.org/3.11/whatsnew/changelog.html/issues/id128).
Change the handling of HTTP status code 308 to behave more like
`urllib.request.HTTPRedirectHandler`, most critically, the new 308 handling will
create a new `urllib.request.Request` object with the new URL, which will
prevent state from being carried over from the original request.
One case where this is important is when the domain name changes, for example,
when the original URL is `http://www.w3.org/ns/adms.ttl` and the redirect URL is
`https://uri.semic.eu/w3c/ns/adms.ttl`. With the previous behaviour, the redirect
would contain a `Host` header with the value `www.w3.org` instead of
`uri.semic.eu` because the `Host` header is placed in
`Request.unredirected_hdrs` and takes precedence over the `Host` header in
`Request.headers`.
Other changes:
- Only handle HTTP status code 308 on Python versions before 3.11 as Python 3.11
will handle 308 by default [[ref](https://docs.python.org/3.11/whatsnew/changelog.html#id128)].
- Move code which uses `http://www.w3.org/ns/adms.ttl` and
`http://www.w3.org/ns/adms.rdf` out of `test_guess_format_for_parse` into a
separate parameterized test, which instead uses the embedded http server.
This allows the test to fully control the `Content-Type` header in the
response instead of relying on the value that the server is sending.
This is needed because the server is sending `Content-Type: text/plain` for
the `adms.ttl` file, which is not a valid RDF format, and the test is
expecting `Content-Type: text/turtle`.
Fixes:
- <https://github.com/RDFLib/rdflib/issues/2382>.
### fix: lexical-to-value mapping of rdf:HTML literals (#2483)
Commit [53aaf02](https://github.com/RDFLib/rdflib/commit/53aaf02), closes [#2483](https://github.com/RDFLib/rdflib/issues/2483).
Use strict mode when parsing `rdf:HTML` literals. This ensures that when
[lexical-to-value
mapping](https://www.w3.org/TR/rdf11-concepts/#dfn-lexical-to-value-mapping)
(i.e. parsing) of a literal with `rdf:HTML` data type occurs, a value will
only be assigned if the lexical form is a valid HTML5 fragment.
Otherwise, i.e. for invalid fragments, no value will be associated with
the literal
[[ref](https://www.w3.org/TR/rdf11-concepts/#section-Graph-Literal)] and
the literal will be ill-typed.
### fix: TriG handling of GRAPH keyword without a graph ID (#2469)
Commit [8c9608b](https://github.com/RDFLib/rdflib/commit/8c9608b), closes [#2469](https://github.com/RDFLib/rdflib/issues/2469) [/www.w3.org/2013/TriGTests/#trig-graph-bad-01](https://github.com//www.w3.org/2013/TriGTests//issues/trig-graph-bad-01).
The RDF 1.1 TriG grammar only allows the `GRAPH` keyword if it
is followed by a graph identifier
[[ref](https://www.w3.org/TR/trig/#grammar-production-block)].
This change enforces this rule so that the
<http://www.w3.org/2013/TriGTests/#trig-graph-bad-01> test passes.
### fix: TriG parser error handling for nested graphs (#2468)
Commit [afea615](https://github.com/RDFLib/rdflib/commit/afea615), closes [#2468](https://github.com/RDFLib/rdflib/issues/2468) [/www.w3.org/2013/TriGTests/#trig-graph-bad-07](https://github.com//www.w3.org/2013/TriGTests//issues/trig-graph-bad-07).
Raise an error when nested graphs occur in TriG.
With this change, the <http://www.w3.org/2013/TriGTests/#trig-graph-bad-07> test passes.
### fix: typing errors from dmypy (#2451)
Commit [10f9ebe](https://github.com/RDFLib/rdflib/commit/10f9ebe), closes [#2451](https://github.com/RDFLib/rdflib/issues/2451).
Fix various typing errors that are reported when running with `dmypy`,
the mypy daemon.
Also add a task for running `dmypy` to the Taskfile that can be selected
as the default mypy variant by setting the `MYPY_VARIANT` environment
variable to `dmypy`.
### fix: widen `Graph.__contains__` type-hints to accept `Path` values (#2323)
Commit [1c45ec4](https://github.com/RDFLib/rdflib/commit/1c45ec4), closes [#2323](https://github.com/RDFLib/rdflib/issues/2323).
Change the type-hints for `Graph.__contains__` to also accept `Path`
values as the parameter is passed to the `Graph.triples` function,
which accepts `Path` values.
### docs: Add CITATION.cff file (#2502)
Commit [ad5c0e1](https://github.com/RDFLib/rdflib/commit/ad5c0e1), closes [#2502](https://github.com/RDFLib/rdflib/issues/2502).
The `CITATION.cff` file provides release metadata which is used by
Zenodo and other software and systems.
This file's content is best-effort, and pull requests with improvements
are welcome and will affect future releases.
### docs: add guidelines for breaking changes (#2402)
Commit [cad367e](https://github.com/RDFLib/rdflib/commit/cad367e), closes [#2402](https://github.com/RDFLib/rdflib/issues/2402).
Add guidelines on how breaking changes should be approached.
The guidelines take a very pragmatic approach with known downsides, but this
seems like the best compromise given the current situation.
For prior discussion on this point see:
- https://github.com/RDFLib/rdflib/discussions/2395
- https://github.com/RDFLib/rdflib/pull/2108
- https://github.com/RDFLib/rdflib/discussions/1841
### docs: fix comment that doesn't describe behavior (#2443)
Commit [4e42d10](https://github.com/RDFLib/rdflib/commit/4e42d10), closes [#2443](https://github.com/RDFLib/rdflib/issues/2443).
Comment refers to a person that knows bob and the code would return a name,
but this would only work if the triple `person foaf:name bob .` is part of the dataset
As this is a very uncommon way to model a `foaf:knows` the code was
adjusted to match the description.
### docs: recommend making an issue before making an enhancement (#2391)
Commit [63b082c](https://github.com/RDFLib/rdflib/commit/63b082c), closes [#2391](https://github.com/RDFLib/rdflib/issues/2391).
Suggest that contributors first make an issue to get in principle
agreement for pull requests before making the pull request.
Enhancements can be controversial, and we may reject the enhancement
sometimes, even if the code is good, as it may just not be deemed
important enough to increase the maintenance burden of RDFLib.
Other changes:
- Updated the checklist in the pull request template to be more accurate to
current practice.
- Improved grammar and writing in the pull request template, contribution guide
and developers guide.
### docs: remove unicode string form in rdflib/term.py (#2384)
Commit [ddcc4eb](https://github.com/RDFLib/rdflib/commit/ddcc4eb), closes [#2384](https://github.com/RDFLib/rdflib/issues/2384).
The use of Unicode literals is an artefact of Python 2 and is incorrect in Python 3.
Doctests for docstrings using Unicode literals only pass because [ALLOW_UNICODE](https://docs.pytest.org/en/7.1.x/how-to/doctest.html#using-doctest-options)
is set, but this option should be disabled as RDFLib does not support Python 2 any more.
This partially resolves <https://github.com/RDFLib/rdflib/issues/2378>.
## 2023-03-26 RELEASE 6.3.2
### fix: `ROUND`, `ENCODE_FOR_URI` and `SECONDS` SPARQL functions (#2314)
Commit [af17916](https://github.com/RDFLib/rdflib/commit/af17916), closes [#2314](https://github.com/RDFLib/rdflib/issues/2314).
`ROUND` was not correctly rounding negative numbers towards positive infinity,
`ENCODE_FOR_URI` incorrectly treated `/` as safe, and `SECONDS` did not include
fractional seconds.
This change corrects these issues.
- Closes <https://github.com/RDFLib/rdflib/issues/2151>.
### fix: add `__hash__` and `__eq__` back to `rdflib.paths.Path` (#2292)
Commit [fe1a8f8](https://github.com/RDFLib/rdflib/commit/fe1a8f8), closes [#2292](https://github.com/RDFLib/rdflib/issues/2292).
These methods were removed when `@total_ordering` was added, but
`@total_ordering` does not add them, so removing them essentially
removes functionality.
This change adds the methods back and adds tests to ensure they work
correctly.
All path related tests are also moved into one file.
- Closes <https://github.com/RDFLib/rdflib/issues/2281>.
- Closes <https://github.com/RDFLib/rdflib/issues/2242>.
### fix: Add `to_dict` method to the JSON-LD `Context` class. (#2310)
Commit [d7883eb](https://github.com/RDFLib/rdflib/commit/d7883eb), closes [#2310](https://github.com/RDFLib/rdflib/issues/2310).
`Context.to_dict` is used in JSON-LD serialization, but it was not implemented.
This change adds the method.
- Closes <https://github.com/RDFLib/rdflib/issues/2138>.
### fix: add the `wgs` namespace binding back (#2294)
Commit [adf8eb2](https://github.com/RDFLib/rdflib/commit/adf8eb2), closes [#2294](https://github.com/RDFLib/rdflib/issues/2294).
<https://github.com/RDFLib/rdflib/pull/1686> inadvertently removed the `wgs` prefix.
This change adds it back.
- Closes <https://github.com/RDFLib/rdflib/issues/2196>.
### fix: change the prefix for `https://schema.org/` back to `schema` (#2312)
Commit [3faa01b](https://github.com/RDFLib/rdflib/commit/3faa01b), closes [#2312](https://github.com/RDFLib/rdflib/issues/2312).
The default prefix for `https://schema.org/` registered with
`rdflib.namespace.NamespaceManager` was inadvertently changed to `sdo` in 6.2.0,
this however constitutes a breaking change, as code that was using the `schema`
prefix would no longer have the same behaviour. This change changes the prefix
back to `schema`.
### fix: include docs and examples in the sdist tarball (#2289)
Commit [394fb50](https://github.com/RDFLib/rdflib/commit/394fb50), closes [#2289](https://github.com/RDFLib/rdflib/issues/2289).
The sdists generated by setuptools included the `docs` and `examples`
directories, and they are needed for building docs and running tests using the
sdist.
This change includes these directories in the sdist tarball.
A `test:sdist` task is also added to `Taskfile.yml` which uses the sdists to run
pytest and build docs.
### fix: IRI to URI conversion (#2304)
Commit [dfa4054](https://github.com/RDFLib/rdflib/commit/dfa4054), closes [#2304](https://github.com/RDFLib/rdflib/issues/2304).
The URI to IRI conversion was percentage-quoting characters that should not have
been quoted, like equals in the query string. It was also not quoting things
that should have been quoted, like the username and password components of a
URI.
This change improves the conversion by only quoting characters that are not
allowed in specific parts of the URI and quoting previously unquoted components.
The safe characters for each segment are taken from
[RFC3986](https://datatracker.ietf.org/doc/html/rfc3986).
The new behavior is heavily inspired by
[`werkzeug.urls.iri_to_uri`](https://github.com/pallets/werkzeug/blob/92c6380248c7272ee668e1f8bbd80447027ccce2/src/werkzeug/urls.py#L926-L931)
though there are some differences.
- Closes <https://github.com/RDFLib/rdflib/issues/2120>.
### fix: JSON-LD context construction from a `dict` (#2306)
Commit [832e693](https://github.com/RDFLib/rdflib/commit/832e693), closes [#2306](https://github.com/RDFLib/rdflib/issues/2306).
A variable was only being initialized for string-valued inputs, but if a `dict`
input was passed the variable would still be accessed, resulting in a
`UnboundLocalError`.
This change initializes the variable always, instead of only when string-valued
input is used to construct a JSON-LD context.
- Closes <https://github.com/RDFLib/rdflib/issues/2303>.
### fix: reference to global inside `get_target_namespace_elements` (#2311)
Commit [4da67f9](https://github.com/RDFLib/rdflib/commit/4da67f9), closes [#2311](https://github.com/RDFLib/rdflib/issues/2311).
`get_target_namespace_elements` references the `args` global, which is not
defined if the function is called from outside the module. This commit fixes
that instead referencing the argument passed to the function.
- Closes <https://github.com/RDFLib/rdflib/issues/2072>.
### fix: restore the 6.1.1 default bound namespaces (#2313)
Commit [57bb428](https://github.com/RDFLib/rdflib/commit/57bb428), closes [#2313](https://github.com/RDFLib/rdflib/issues/2313).
The namespaces bound by default by `rdflib.graph.Graph` and
`rdflib.namespace.NamespaceManager` was reduced in version 6.2.0 of RDFLib,
however, this also would cause code that worked with 6.1.1 to break, so this
constituted a breaking change. This change restores the previous behaviour,
binding the same namespaces as was bound in 6.1.1.
To bind a reduced set of namespaces, the `bind_namespaces` parameter of
`rdflib.graph.Graph` or `rdflib.namespace.NamespaceManager` can be used.
- Closes <https://github.com/RDFLib/rdflib/issues/2103>.
### test: add `webtest` marker to tests that use the internet (#2295)
Commit [cfe6e37](https://github.com/RDFLib/rdflib/commit/cfe6e37), closes [#2295](https://github.com/RDFLib/rdflib/issues/2295).
This is being done so that it is easier for downstream packagers to run the test
suite without requiring internet access.
To run only tests that does not use the internet, run `pytest -m "not webtest"`.
The validation workflow validates that test run without internet access by
running the tests inside `firejail --net=none`.
- Closes <https://github.com/RDFLib/rdflib/issues/2293>.
### chore: Update CONTRIBUTORS from commit history (#2305)
Commit [1ab4fc0](https://github.com/RDFLib/rdflib/commit/1ab4fc0), closes [#2305](https://github.com/RDFLib/rdflib/issues/2305).
This ensures contributors are credited. Also added .mailmap to fix early misattributed contributions.
### docs: fix typo in NamespaceManager documentation (#2291)
Commit [7a05c15](https://github.com/RDFLib/rdflib/commit/7a05c15), closes [#2291](https://github.com/RDFLib/rdflib/issues/2291).
Changed `cdterms` to `dcterms`, see <https://github.com/RDFLib/rdflib/issues/2196> for more info.
## 2023-03-18 RELEASE 6.3.1
This is a patch release that includes a singular user facing fix, which is the
inclusion of the `test` directory in the `sdist` release artifact.
The following sections describe the changes included in this version.
### build: explicitly specify `packages` in `pyproject.toml` (#2280)
Commit [334787b](https://github.com/RDFLib/rdflib/commit/334787b), closes [#2280](https://github.com/RDFLib/rdflib/issues/2280).
The default behaviour makes it more of a hassle to republish RDFLib to
a separate package, something which I plan to do for testing purposes
and possibly other reasons.
More changes may follow in a similar vein.
### build: include test in sdist (#2282)
Commit [e3884b7](https://github.com/RDFLib/rdflib/commit/e3884b7), closes [#2282](https://github.com/RDFLib/rdflib/issues/2282).
A perhaps minor regression from earlier versions is that the sdist does not include the test folder, which makes it harder for downstreams to use a single source of truth to build and test a reliable package. This restores the test folder for sdists.
### docs: don't use kroki (#2284)
Commit [bea782f](https://github.com/RDFLib/rdflib/commit/bea782f), closes [#2284](https://github.com/RDFLib/rdflib/issues/2284).
The Kroki server is currently experiencing some issues which breaks our
build, this change eliminates the use of Kroki in favour of directly
using the generated SVG images which is checked into git alongside the
PlantUML sources.
I also added a task to the Taskfile to re-generate the SVG images from
the PlantUML sources by calling docker.
## 2023-03-16 RELEASE 6.3.0
This is a minor release that includes bug fixes and features.
### Important Information
- RDFLib will drop support for Python 3.7 when it becomes EOL on 2023-06-27,
this will not be considered a breaking change, and RDFLib's major version
number will not be changed solely on the basis of Python 3.7 support being
dropped.
### User facing changes
This section lists changes that have a potential impact on users of RDFLib,
changes with no user impact are not included in this section.
- Add chunk serializer that facilitates the encoding of a graph into multiple
N-Triples encoded chunks.
[PR #1968](https://github.com/RDFLib/rdflib/pull/1968).
- Fixes passing `NamespaceManager` in `ConjunctiveGraph`'s method `get_context()`.
The `get_context()` method will now pass the `NamespaceManager` of `ConjunctiveGraph` to the `namespace_manager` attribute of the newly created context graph, instead of the `ConjunctiveGraph` object itself. This cleans up an old `FIXME` comment.
[PR #2073](https://github.com/RDFLib/rdflib/pull/2073).
- InfixOWL fixes and cleanup.
Closed [issue #2030](https://github.com/RDFLib/rdflib/issues/2030).
[PR #2024](https://github.com/RDFLib/rdflib/pull/2024),
and [PR #2033](https://github.com/RDFLib/rdflib/pull/2033).
- `rdflib.extras.infixowl.Restriction.__init__` will now raise a `ValueError`
if there is no restriction value instead of an `AssertionError`.
- Fixed numerous issues with
`rdflib.extras.infixowl.Restriction.restrictionKind` which was essentially
not working at all.
- Fixed how `rdflib.extras.infixowl.Property.__repr__` uses
`rdflib.namespace.OWL`.
- Removed `rdflib.extras.infixowl.Infix.__ror__` and
`rdflib.extras.infixowl.Infix.__or__` as they were broken.
- Removed unused `rdflib.extras.infixowl.termDeletionDecorator`.
- Added `rdflib.extras.infixowl.MalformedClassError` which will replace
`rdflib.extras.infixowl.MalformedClass` (which is an exception) in the next
major version.
- Eliminated the use of mutable data structures in some argument defaults.
- Fixed some cross-referencing issues in RDFLib documentation.
Closed [issue #1878](https://github.com/RDFLib/rdflib/issues/1878).
[PR #2036](https://github.com/RDFLib/rdflib/pull/2036).
- Fixed import of `xml.sax.handler` in `rdflib.plugins.parsers.trix` so that it
no longer tries to import it from `xml.sax.saxutils`.
[PR #2041](https://github.com/RDFLib/rdflib/pull/2041).
- Removed a pre python 3.5 regex related workaround in the REPLACE SPARQL
function.
[PR #2042](https://github.com/RDFLib/rdflib/pull/2042).
- Fixed some issues with SPARQL XML result parsing that caused problems with
[`lxml`](https://lxml.de/). Closed [issue #2035](https://github.com/RDFLib/rdflib/issues/2035),
[issue #1847](https://github.com/RDFLib/rdflib/issues/1847).
[PR #2044](https://github.com/RDFLib/rdflib/pull/2044).
- Result parsing from
[`TextIO`](https://docs.python.org/3/library/typing.html#typing.TextIO)
streams now work correctly with `lxml` installed and with XML documents that
are not `utf-8` encoded.
- Elements inside `<results>` that are not `<result>` are now ignored.
- Elements inside `<result>` that are not `<binding>` are now ignored.
- Also added type hints to `rdflib.plugins.sparql.results.xmlresults`.
- Added type hints to the following modules:
- `rdflib.store`.
[PR #2057](https://github.com/RDFLib/rdflib/pull/2057).
- `rdflib.graph`.
[PR #2080](https://github.com/RDFLib/rdflib/pull/2080).
- `rdflib.plugins.sparql.*`.
[PR #2094](https://github.com/RDFLib/rdflib/pull/2094),
[PR #2133](https://github.com/RDFLib/rdflib/pull/2133),
[PR #2265](https://github.com/RDFLib/rdflib/pull/2265),
[PR #2097](https://github.com/RDFLib/rdflib/pull/2097),
[PR #2268](https://github.com/RDFLib/rdflib/pull/2268).
- `rdflib.query`.
[PR #2265](https://github.com/RDFLib/rdflib/pull/2265).
- `rdflib.parser` and `rdflib.plugins.parsers.*`.
[PR #2232](https://github.com/RDFLib/rdflib/pull/2232).
- `rdflib.exceptions`.
[PR #2232](https://github.com/RDFLib/rdflib/pull/2232)
- `rdflib.shared.jsonld.*`.
[PR #2232](https://github.com/RDFLib/rdflib/pull/2232).
- `rdflib.collection`.
[PR #2263](https://github.com/RDFLib/rdflib/pull/2263).
- `rdflib.util`.
[PR #2262](https://github.com/RDFLib/rdflib/pull/2262).
- `rdflib.path`.
[PR #2261](https://github.com/RDFLib/rdflib/pull/2261).
- Removed pre python 3.7 compatibility code.
[PR #2066](https://github.com/RDFLib/rdflib/pull/2066).
- Removed fallback in case the `shutil` module does not have the `move`
function.
- Improve file-URI and path handling in `Graph.serialize` and `Result.serialize` to
address problems with windows path handling in `Result.serialize` and to make
the behavior between `Graph.serialize` and `Result.serialie` more consistent.
Closed [issue #2067](https://github.com/RDFLib/rdflib/issues/2067).
[PR #2065](https://github.com/RDFLib/rdflib/pull/2065).
- String values for the `destination` argument will now only be treated as
file URIs if `urllib.parse.urlparse` returns their schema as `file`.
- Simplified file writing to avoid a temporary file.
- Narrow the type of context-identifiers/graph-names from `rdflib.term.Node` to
`rdflib.term.IdentifiedNode` as no supported abstract syntax allows for other
types of context-identifiers.
[PR #2069](https://github.com/RDFLib/rdflib/pull/2069).
- Always parse HexTuple files as utf-8.
[PR #2070](https://github.com/RDFLib/rdflib/pull/2070).
- Fixed handling of `Literal` `datatype` to correctly differentiate between
blank string values and undefined values, also changed the datatype of
`rdflib.term.Literal.datatype` from `Optional[str]` to `Optional[URIRef]` now
that all non-`URIRef` `str` values will be converted to `URIRef`.
[PR #2076](https://github.com/RDFLib/rdflib/pull/2076).
- Fixed the generation of VALUES block for federated queries.
The values block was including non-variable values like BNodes which resulted
in invalid queries. Closed [issue #2079](https://github.com/RDFLib/rdflib/issues/2079).
[PR #2084](https://github.com/RDFLib/rdflib/pull/2084).
- Only register the `rdflib.plugins.stores.berkeleydb.BerkeleyDB` as a store
plugin if the `berkeleydb` module is present.
Closed [issue #1816](https://github.com/RDFLib/rdflib/issues/1816).
[PR #2096](https://github.com/RDFLib/rdflib/pull/2096).
- Fixed serialization of BNodes in TriG.
The TriG serializer was only considering BNode references inside a single
graph and not counting the BNodes subjects as references when considering if a
BNode should be serialized as unlabeled blank nodes (i.e. `[ ]`), and as a
result it was serializing BNodes as unlabeled if they were in fact referencing
BNodes in other graphs.
[PR #2085](https://github.com/RDFLib/rdflib/pull/2085).
- Deprecated `rdflib.path.evalPath` in favor of `rdflib.path.eval_path` which is
PEP-8 compliant. [PR #2046](https://github.com/RDFLib/rdflib/pull/2046)
- Added `charset=UTF-8` to the `Content-Type` header sent when doing an update
with `SPARQLConnector`. Closed [issue
#2095](https://github.com/RDFLib/rdflib/issues/2095). [PR
#2112](https://github.com/RDFLib/rdflib/pull/2112).
- Removed the `rdflib.plugins.sparql.parserutils.plist` class as it served no
discernible purpose. [PR #2143](https://github.com/RDFLib/rdflib/pull/2143)
- Changed the TriG serializer to not generate prefixes for empty graph IDs.
Closed [issue #2154](https://github.com/RDFLib/rdflib/issues/2154).
[PR #2160](https://github.com/RDFLib/rdflib/pull/2160).
- Fixed handling of relative context files in the JSON-LD parser.
Closed [issue #2164](https://github.com/RDFLib/rdflib/issues/2164).
[PR #2165](https://github.com/RDFLib/rdflib/pull/2165).
- Improved failure handling in when computing QName for an unbound namespace.
[PR #2169](https://github.com/RDFLib/rdflib/pull/2169).
- Fixed a typo in the default bound namespace for `DCTERMS`.
[PR #2173](https://github.com/RDFLib/rdflib/pull/2173).
- Add support for supplying a custom namespace manager to `n3()` methods.
[PR #2174](https://github.com/RDFLib/rdflib/pull/2174).
- Fixed the query string parameters for `SPARQLConnector` when using POST method.
[PR #2180](https://github.com/RDFLib/rdflib/pull/2180).
- Fixed extra keyword argument and header handling in `SPARQLConnector` that
resulted in headers from `SPARQLConnector.update` polluting headers from
`SPARQLConnector.query` vice versa.
[PR #2183](https://github.com/RDFLib/rdflib/pull/2183)
- Added version restrictions for dependencies.
[PR #2187](https://github.com/RDFLib/rdflib/pull/2187)
- Switch to using `importlib` for getting the version of RDFLib instead of
hard-coding it in `__version__`.
[PR #2187](https://github.com/RDFLib/rdflib/pull/2187).
- Removed non-runtime extras, for building documentation, running tests and
other development operations the versions and dependencies are now
managed with Poetry.
[PR #2187](https://github.com/RDFLib/rdflib/pull/2187).
- Fixed a bug that occurred when `VALUES` was used outside a `GROUP BY` clause.
[PR #2188](https://github.com/RDFLib/rdflib/pull/2188).
- Fixed a bug that occurred when using `SELECT *` inside another `SELECT *`.
Closed [issue #1722](https://github.com/RDFLib/rdflib/issues/1722).
[PR #2190](https://github.com/RDFLib/rdflib/pull/2190).
- Added SPARQL DESCRIBE query implementation.
Closes [issue #479](https://github.com/RDFLib/rdflib/issues/479).
[PR #2221](https://github.com/RDFLib/rdflib/pull/2221).
- Fixed a bug in `rdflib.tools.defined_namespace_creator` that occurred when
multiple `rdfs:comment` were present on one resource.
[PR #2254](https://github.com/RDFLib/rdflib/pull/2254).
- Fixed `rdflib.util._iri2uri()` to not quote the `netloc` parameter.
[PR #2255](https://github.com/RDFLib/rdflib/pull/2255).
- Fixed the HexTuple parser's handling of input sources to works for more input sources.
[PR #2255](https://github.com/RDFLib/rdflib/pull/2255).
- Fixed the creation of input source objects from IO stream sources.
[PR #2255](https://github.com/RDFLib/rdflib/pull/2255).
- Eliminated the use of the deprecated `rdflib.path.evalPath` function.
[PR #2266](https://github.com/RDFLib/rdflib/pull/2266)
- Added documentation for security considerations and available mitigations.
Closed [issue #1844](https://github.com/RDFLib/rdflib/issues/1844).
[PR #2267](https://github.com/RDFLib/rdflib/pull/2270).
### PRs merged since last release
* fix: validation issues with examples
[PR #2269](https://github.com/RDFLib/rdflib/pull/2269)
* feat: more type hints for `rdflib.plugins.sparql`
[PR #2268](https://github.com/RDFLib/rdflib/pull/2268)
* fix: eliminate use of deprecated `rdflib.path.evalPath`
[PR #2266](https://github.com/RDFLib/rdflib/pull/2266)
* more type-hinting for SPARQL plugin
[PR #2265](https://github.com/RDFLib/rdflib/pull/2265)
* feat: add diverse type hints
[PR #2264](https://github.com/RDFLib/rdflib/pull/2264)
* feat: add type hints to `rdflib.collection`
[PR #2263](https://github.com/RDFLib/rdflib/pull/2263)
* feat: add type hints to `rdflib.util`
[PR #2262](https://github.com/RDFLib/rdflib/pull/2262)
* feat: add type hints to `rdflib.path`
[PR #2261](https://github.com/RDFLib/rdflib/pull/2261)
* test: fix deprecation warnings
[PR #2260](https://github.com/RDFLib/rdflib/pull/2260)
* docs: update test reports
[PR #2259](https://github.com/RDFLib/rdflib/pull/2259)
* fix: small InputSource related issues
[PR #2255](https://github.com/RDFLib/rdflib/pull/2255)
* defined_namespace_creator: concatenate several rdfs:comments
[PR #2254](https://github.com/RDFLib/rdflib/pull/2254)
* feat: add parser type hints
[PR #2232](https://github.com/RDFLib/rdflib/pull/2232)
* build: bump versions
[PR #2231](https://github.com/RDFLib/rdflib/pull/2231)
* Add SPARQL DESCRIBE query implementation
[PR #2221](https://github.com/RDFLib/rdflib/pull/2221)
* build: rename minimum constraints file to evade dependabot
[PR #2209](https://github.com/RDFLib/rdflib/pull/2209)
* Fix for `SELECT *` inside `SELECT *` bug
[PR #2190](https://github.com/RDFLib/rdflib/pull/2190)
* Fixing bug applying VALUES outside of a GROUP BY
[PR #2188](https://github.com/RDFLib/rdflib/pull/2188)
* move to poetry for dependency management; consolidate more settings into pyproject.toml
[PR #2187](https://github.com/RDFLib/rdflib/pull/2187)
* build: update black to 22.12.0
[PR #2186](https://github.com/RDFLib/rdflib/pull/2186)
* Issue2179 incorrect headers
[PR #2183](https://github.com/RDFLib/rdflib/pull/2183)
* Fix missing query string params in sparqlconnector when using POST method
[PR #2180](https://github.com/RDFLib/rdflib/pull/2180)
* [pre-commit.ci] pre-commit autoupdate
[PR #2178](https://github.com/RDFLib/rdflib/pull/2178)
* Add namespace_manager argument for n3 method on Paths
[PR #2174](https://github.com/RDFLib/rdflib/pull/2174)
* fix DCTERMS prefix typo
[PR #2173](https://github.com/RDFLib/rdflib/pull/2173)
* compute_qname handle case where name could be unbound
[PR #2169](https://github.com/RDFLib/rdflib/pull/2169)
* Issue 2164
[PR #2165](https://github.com/RDFLib/rdflib/pull/2165)
* build: update black to 22.10.0
[PR #2163](https://github.com/RDFLib/rdflib/pull/2163)
* ci: switch to python 3.11 release
[PR #2162](https://github.com/RDFLib/rdflib/pull/2162)
* fix: type errors resulting from new mypy
[PR #2161](https://github.com/RDFLib/rdflib/pull/2161)
* do not write prefix for empty graph id, fix #2154
[PR #2160](https://github.com/RDFLib/rdflib/pull/2160)
* Remove redundant class
[PR #2143](https://github.com/RDFLib/rdflib/pull/2143)
* Pass `service_query` to `_buildQueryStringForServiceCall` instead of a `Match`
[PR #2134](https://github.com/RDFLib/rdflib/pull/2134)
* Add type hint to part in evalServiceQuery
[PR #2133](https://github.com/RDFLib/rdflib/pull/2133)
* Remove outdated comment
[PR #2129](https://github.com/RDFLib/rdflib/pull/2129)
* fix: type ignore compatibility with latest mypy
[PR #2127](https://github.com/RDFLib/rdflib/pull/2127)
* Remove redundant PR template
[PR #2126](https://github.com/RDFLib/rdflib/pull/2126)
* build: use 3.11.0-rc.2
[PR #2119](https://github.com/RDFLib/rdflib/pull/2119)
* build: docker images for latest release and main branch
[PR #2116](https://github.com/RDFLib/rdflib/pull/2116)
* add charset encoding to SPARQLConnector.update() request.
[PR #2112](https://github.com/RDFLib/rdflib/pull/2112)
* Add test for issue #2011
[PR #2107](https://github.com/RDFLib/rdflib/pull/2107)
* chore: rename default branch to `main`
[PR #2101](https://github.com/RDFLib/rdflib/pull/2101)
* Correct a typo in test_roundtrip.py
[PR #2100](https://github.com/RDFLib/rdflib/pull/2100)
* feat: add type hints to `rdflib.query` and related
[PR #2097](https://github.com/RDFLib/rdflib/pull/2097)
* fix: Don't register berkelydb as a store if it is not available on the system
[PR #2096](https://github.com/RDFLib/rdflib/pull/2096)
* feat: add type hints to `rdflib.plugins.sparql.{algebra,operators}`
[PR #2094](https://github.com/RDFLib/rdflib/pull/2094)
* test: Fix `exclude_lines` for coverage
[PR #2093](https://github.com/RDFLib/rdflib/pull/2093)
* test: content-type handling with SPARQLStore + CONSTRUCT queries
[PR #2092](https://github.com/RDFLib/rdflib/pull/2092)
* ci: publish test reports for mypy and pytest
[PR #2091](https://github.com/RDFLib/rdflib/pull/2091)
* test: convert more test from unittest to pytest
[PR #2089](https://github.com/RDFLib/rdflib/pull/2089)
* ci: switch from 3.11.0-beta.4 to 3.11.0-rc.1
[PR #2087](https://github.com/RDFLib/rdflib/pull/2087)
* fix: issue with trig reference counting across graphs
[PR #2085](https://github.com/RDFLib/rdflib/pull/2085)
* Generate VALUES block for federated queries with variables only
[PR #2084](https://github.com/RDFLib/rdflib/pull/2084)
* docs: Add a contributing guide
[PR #2082](https://github.com/RDFLib/rdflib/pull/2082)
* feat: Add type hints to rdflib.graph
[PR #2080](https://github.com/RDFLib/rdflib/pull/2080)
* fix: handling of Literal datatype
[PR #2076](https://github.com/RDFLib/rdflib/pull/2076)
* test: convert some `unittest` based tests to `pytest`
[PR #2075](https://github.com/RDFLib/rdflib/pull/2075)
* test: honour lax cardinality from test manifests
[PR #2074](https://github.com/RDFLib/rdflib/pull/2074)
* Fix passing ConjunctiveGraph as namespace_manager
[PR #2073](https://github.com/RDFLib/rdflib/pull/2073)
* fix: always parse HexTuple files as utf-8
[PR #2070](https://github.com/RDFLib/rdflib/pull/2070)
* fix: narrow the context identifier type from `Node` to `IdentifiedNode`
[PR #2069](https://github.com/RDFLib/rdflib/pull/2069)
* build: set a minimum version for flakeheaven
[PR #2068](https://github.com/RDFLib/rdflib/pull/2068)
* chore: remove pre Python 3.7 compatibility code for shutil
[PR #2066](https://github.com/RDFLib/rdflib/pull/2066)
* fix: issues with string destination handling in `{Graph,Result}.serialize`
[PR #2065](https://github.com/RDFLib/rdflib/pull/2065)
* build: fix Taskfile.yml for Windows
[PR #2064](https://github.com/RDFLib/rdflib/pull/2064)