forked from dotnetrdf/dotnetrdf
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ChangeLog.txt
1620 lines (1420 loc) · 97.2 KB
/
ChangeLog.txt
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
Change Log
==========
3.3
---
NEW: A new SPARQL query processor that works on an asynchronous enumeration approach which aims to minimize the number
and size of intermediate result sets with a view to being able to support queries over larger in-memory datasets.
The new implementation makes use of .NET async enumerables and thus is not supported under .NET Framework.
As a result of this compatibility issue, the processor is provided in a separate NuGet package (dotNetRdf.Query.Pull)
This new processor should be considered EXPERIMENTAL with this release and is not recommended for production use.
ENHANCEMENT: The DefaultDocumentLoader static class now exposes properties to configure the maximum allowed response size
and maximum number of redirects to follow when loading JSON-LD documents from the web. Under the hood the implementation
has been updated to use the more modern HttpClient stack in .NET. Thanks to @zotanmew for the report. (#650)
ENHANCEMENT: The QueryBuilder now optimises the generated `SparqlQuery` by default. Whether or not to optimize the generated query, and which optimisers to apply can be controlled through arguments to the `Build` method. Thanks to @RetYn for the report. (#658)
3.2.1
-----
FIX: Fix SERVICE query timeout calculation in update commands which was causing SPARQL updates with a SERVICE clause to abort prematurely. Thanks to @rdstn for the report. (#641)
ENHANCEMENT: Update default syntax of the TRiG parser to be RDF 1.1 + RDF Star to be consistent with the defaults of the NTriples, NQuads and Turtle parsers. Thanks to @markus-ap for the report. (#640)
FIX: Fix parsing of datatyped literals in collections in TRiG 1.1 + RDF Star
FIX: Fix handling of QNames starting with "prefix" in Turtle tokenizer
FIX: Fix RdfCanonicalizer so that the line ending in the canonical NQuads output is always `\n` and not `\r\n` on Windows platforms. Thanks to @veikkoeeva for the report. (#631)
FIX: Fix handling of CONSTRUCT queries so that blank nodes in the CONSTRUCT template are unique for each solution binding. Thanks to @JohanMollevikCap for the report. (#639)
FIX: Fix HtmlSchemaWriter to handle writing classes whose IRI is not successfully compressed to a QName. Thanks to @sixdiamants for the report. (#629)
3.2.0
------
NEW: Implementation of the November 2023 draft of the W3C [RDF Dataset Canonicalization](https://www.w3.org/TR/2023/CRD-rdf-canon-20231130/) specification. Thanks to @zotanmew and @deviant for this contribution. (#615)
NEW: Linked Data Fragments (LDF) client - a new implementation of the `IGraph` interface that dispatches all graph operations to a Triple Pattern Fragments (TPF) endpoint. Thanks to @langsamu for the contribution. (#608)
ENHANCEMENT: The Loader class can now load quad formats such as TRiG and JSON-LD to graphs. The graph will contain the merge of all triples across all graphs provided by the quad format parser. (#487)
FIX: Fixed the formatting of pretty-printed Turtle files to put each item in an RDF collection onto a separate line. Thanks to @MichaelHoffmeisterFesto for the bug report. (#606)
FIX: Fix for querying and constructing language tagged strings in the Leviathan engine. Thanks to @ddeschepper for the report and fix (#627)
ENHANCEMENT: Eliminate use of deprecated Lucene.NET APIs from the full text index implementation. (#597)
3.1.1
------
FIX: Fixed a bug in the JsonLdWriter that caused an error when handling an RDF list with an unreferenced initial blank node. Thanks to @petarhristov94 for the report and repro. (#600)
FIX: Fixed a bug with handling multiple .GroupBy() calls in the QueryBuilder which was resulting in only the first and last expressions in the GroupBy chain to be added to the built query. Thanks to @jiatao99 for the bug report and proposed fix. (#407)
ENHANCEMENT: Added `VDS.RDF.Query.ISparqlResultFactory` to allow implementers to specify how an `ISet` of variable bindings are converted to an `ISparqlResult` instance before being passed to the client's `ISparqlResultHandler`. The factory instance to be used can now be set via the `LeviathanQueryOptions.SparqlResultFactory` property. The default implementation creates instances of the `VDS.RDF.SparqlResult` class. Thanks to @jiatao99 for the suggestion. (#478)
3.1
---
FIX: We marked a few additional APIs as obsolete. These are mostly internal/protected APIs so this change will only affect users who are extending the affected classes. The APIs that have been deprecated are those that are internally implemented using the old HttpWebRequest web APIs and all of them have alternatives that are implemented uing the more modern HttpClient API. (#88)
FIX: The processing of a SPARQL zero-or-more property path was fixed to properly handle the case where there is no initial context and the path must be treated as matching all triples that match the subject and object elements of the triple pattern. Thanks to @giacomociti for the bug report and repro. (#571)
ENHANCEMENT: The `BaseTripleCollection` class (which is the type of the `Triples` property on `IGraph`) now supports indexing with a three-tuple of nullable INode instances as a more compact way to use the existing WithSubject(), WithSubjectPredicate() etc. methods. e.g. graph.Triples[(s, p, null)] returns an enumeration of all triples with the specified subject and predicate nodes. (#498)
ENHANCEMENT: The ConfigurationLoader now supports creating NodeFactory and UriFactory instances and using them to configure Graphs and Triple Stores. It has also been updated to provide a way to set the name of a graph independetly of the BaseUri of the graph. (#500)
ENHANCEMENT: Language tag validation in the `NodeFactory` now supports three modes. `LanguageTagValidationMode.None` disables langauge tag validation. `LanguageTagValidationMode.Turtle` validates language tags against the more relaxed definition in the Turtle 1.1 specification. `LanguageTagValidationMode.WellFormed` validates language tags against the stricter BCP-47 production for well-formed tags. The default validation mode is now set to `LanguageTagValidationMode.Turtle`. The properties `NodeFactory.ValidateLanguageTags` and `NodeFactoryOptions.ValidateLanguageTags` are both deprecated and replaced by `INodeFactory.LanguageTagValidation` and `NodeFactoryOptions.LanguageTagValidation` respectively. Thanks to @IS4Code for their suggestions and input on this. (#565)
FIX: Fix for the code that detects compressable collections which should ensure that rdf:List collections that can be represented in compressed syntax in Turtle/N3/TriG are properly compressed, and to ensure that oddly shaped lists where list nodes have multiple or missing rdf:first triples or multiple rdf:rest triples do not cause the serialisation process to throw an exception. Thanks to @faubulous for the report (#519, #575)
DOCUMENTATION: Add documentation about the way we now sign the assemblies, how that affects the use of the assemblies we distribute and our recommendation for users who need signed assemblies for full-trust situations.
3.0.1
-----
FIX: The JSON-LD context processor has been updated to a stack overflow vulnnerability when processing remote contexts. As part of this change the default value of the `RemoteContextLimit` property of the `JsonLdProcessorOptions` has been changed from `-1` (unlimited) to `10`. The processor has also been modified to treat every repeat call to the same remote URL as counting towards this limit. Thanks to the dotNetRDF user who reported this.
ENHANCEMENT: The RDFa parser has been updated to be more conformant with the RDFa specs. By default the parser implements RDFa+(X)HTML processing and now passes all of the RDFa 1.1 test suite for the HTML, XHTML and XML host languages.
FIX: Fix for the JSON-LD Framing processor to correctly handle a frame with multiple @reverse properties. Thanks to @huibertalblas for the bug report and fix. (#556)
3.0.0
-----
This is a new major release of dotNetRDF that introduces a number of breaking API changes. Please refer to the file v3ChangeNotes.md in this directory and/or the updated documentation (see https://dotnetrdf.org/docs/latest/user_guide/upgrading_to_3_0.html) for more details.
BREAKING: Restructuring of dotNetRDF packages. We have broken apart the monolithic dotNetRDF NuGet package in to a number of smaller packages. This has been done partly to isolate dependencies but also to break the API up into more manageable chunks. Please see the top-level README and/or the user documentation for a break-down of what each of the packages now contain. The package `dotNetRdf` has been changed to be a meta-package that pulls in all of the separate dotNetRDF libraries for convenience and to smooth the upgrade path from 2.x
BREAKING: Pellet support has been dropped due to lack of current open-source implementations of the Pellet server.
BREAKING: The IIS HTTP handler module (VDS.RDF.Web.*) has been dropped to remove dependencies on .NET Framework. A future release of dotNetRDF will introduce some equivalent functionality for the modern ASP.NET Core stack.
BREAKING: Support for connecting to Virtuoso via the Virtuoso client library has been dropped due to the client library requiring a dependency on .NET Framework. It is still possible to work with a Virtuoso server using the standard SPARQL connectors.
BREAKING: The global Options class has been removed and options are now specified closer to where they are used or in some cases removed entirely. Please refer to the user documentation and/or to v3ChangeNotes.md for notes on the replacements for specific Options properties.
BREAKING: Console logging of HTTP requests and responses has been removed. Please use the standard .NET HttpClient logging facility instead.
BREAKING: .NET serialization support has been removed. We recommend instead using one of the supported RDF/SPARQL syntaxes to serialize/deserialize triples, graphs, stores or SPARQL results.
BREAKING: There are some significant changes to the way that nodes can be created. At the heart of these changes is that nodes are no longer scoped to a specific graph. A node can be used to assert triples in many different graphs without having to be copied between the graphs. Much of this copying was handled internally by the implementations of the `INodeFactory` interface (an interface which was implemented by the `Graph` class amongst others). From dotNetRDF 3.0, nodes can be directly created using public constructors on the relevant classes. However the `INodeFactory` class remains as it provides a number of convenient functions
BREAKING: Graph Names are now specified using the `Name` property, not `BaseUri`. Prior to this release of dotNetRDF, the `BaseUri` property of an `Graph` served a dual purpose - it provided a base URI that could be used to resolve relative URI references (e.g. when creating new `UriNode`s in the graph); and it served as the name of the graph in an RDF dataset. With 3.0, the name of the graph can now be either an `IUriNode` or an `IBlankNode` (matching the definition of graph names in the 1.1 version of the RDF specification). This is accessed through the `Name` property of the `IGraph` interface. This property is *read-only*, so it can only be set as a constructor parameter. The `BaseUri` property remains on the `IGraph` interface, but it is actually now inherited from the `INodeFactory` interface (which `IGraph` extends) and is used only to resolve relative URIs when creating a new `UriNode`. `BaseUri` is a read-write property as you can (and may want to) change the effective base URI depending on the sources of RDF you are parsing to load the graph with data.
BREAKING: Added ISparqlResultSet interface and changed SparqlResults to implement IEnumerable<ISparqlResultSet> rather than IEnumerable<SparqlResultSet>. The ISparqlResultSet interface has been added to allow a more clean separation between results generated by the Leviathan engine and those generated by other engines or as the result of SPARQL result set parsing. This will cause compile-time implicit type conversion errors where code is receiving values into a variable typed as SparqlResultSet. Changing such variables to ISparqlResultSet should enable clean compilation.
BREAKING: Triple and IRdfHandler changes. The `Triple` class no longer has a `Graph` property. This property was used in dotNetRDF 2.x to reference the `IGraph` instance that the triple was created in and not necessarily the graph that the triple existed in, which could lead to some confusion. Because `Triple` has been changed to remove this property, the `IRdfHandler` interface has been extended to add a new `HandleQuad` method which receives a `Triple` and a `IRefNode` as arguments.
This method is invoked when handling a triple that is asserted in a graph, with the name of the graph as the `IRefNode` argument. When updating your implementations of `IRdfHandler`, please be aware that some parsers (especially those that support graphs as part of their syntax) may report triples in the default graph by invoking `HandleQuad` with a null value for the `IRefNode` argument, rather than by invoking `HandleTriple`. You should therefore ensure that you provide an implementation of `HandleQuad` even if your handler does not handle triples in a named graph. In your handler you can then decide whether to treat a non-null `IRefNode` argument as an error or to handle it in some other way (e.g. by ignoring the graph component, or by ignoring the whole quad).
ENHANCEMENT: The static UriLoader class has a new non-static replacement. The new `VDS.RDF.Parsing.Loader` class provides similar functionality to the `VDS.RDF.Parsing.UriLoader` class but uses the more modern `System.Net.Http` library for its HTTP connections. Making the class non-static allows you to create multiple loader instances configured with different `HttpClient` instances. The main "missing" feature of the new `Loader` class is caching, which can (and should) be handled at the HttpClient layer. The UriLoader class is now deprecated and will be removed in a future release.
ENHANCEMENT: There is now more control over the interning of URIs. In this release we introduce the concept of a hierarchical structure of URI factories each of which has its own interned set of URIs and which can also delegate lookups to a parent factory. This gives you a lot more control over how long interned URIs are kept for. For example in a server you may choose to only intern URIs on a per request basis, or create a session-scoped factory so that the interned URIs are kept just within a single session.
ENHANCEMENT: Added support for RDF-star and SPARQL-star. This enhancement adds a new node type `ITripleNode` representing a quoted triple in an RDF-star graph. This enhancement also adds RDF-star syntax varients for the Turtle, TriG, NTriples and NQuads parsers as well as a syntax varient for the SPARQL parser. Leviathan has been updated to be able to process SPARQL-star queries on in-memory datasets. Please note that support for RDF-star/SPARQL-star on third-party triple stores is entirely dependent on those stores implementing support themselves.
ENHANCEMENT: Language tags can now be validated for conformance to BCP-47. This option can be disabled/enabled via the ValidateLanguageTags option of the `INodeFactory` interface.
ENHANCEMENT: The full-text indexing component has been updated to use the latest version of Lucene.NET. This update means that full-text indexing is now supported under .NET Core as well as .NET Framework.
2.7.0
-----
NEW: The SPARQL Query Builder API now has more extension points to enable developers to access the internals of the QueryBuilder when creating their own extensions to the fluent API. Thanks to @jaitao99 for the suggestion (#377)
NEW: Exposed the internal APIs used to add VALUES bindings into a graph pattern as public APIs supporting the use case where a developer wants to add a set of value bindings to an existing (parsed) SPARQL query. Thanks to @giacomociti for the suggestion (#379)
FIX: Fixed a bug with the SPARQL query parser not properly handing bracketed expressions in a maths expression. This fix also enhances the parser to be able to handle maths expressions with an ambiguous minus sign (-) without requiring the query to be changed to add whitespace. Thanks to @zzbxd for the report (#385)
FIX: Fixed the default DocumentLoader implementation for the JSON-LD parser to decode content according to the Content-Type header received in the response rather than relying on the .NET WebClient.DownloadString which doesn't do this behind the scenes. Thanks to @jakubklimek for the report (#376)
2.6.4
-----
ENHANCEMENT: Improve performance of the JSON-LD parser for large files by optimising keyword checks. Thanks to @CFlatWouldbeMinor for the report and suggestion.
FIX: Fixed the NamespaceMapper class to handle the case where two prefixes map to the same URI and one is then removed from the mapper. Previously this would result in the backwards URI-to-prefix mapping to the remaining prefix being lost, with this release, the URI-to-prefix mapping will now correctly return the remaining prefix. Thanks to @rdewaele for the report.
FIX: Fixed a bug with the ToString serialization of HAVING clauses in a SparqQuery instance. Thanks to @jiatao99 for the report.
2.6.3
-----
This package was released to NuGet by error due to changes in the CI build script.
2.6.2
-----
ENHANCEMENT: Improve performance of processing * paths in the Leviathan query engine. Thanks to @joc-proxem for the report.
2.6.1
-----
NEW: Added a public constructor for the `IriExpression` class to make it easier to add IRI constants when building a SPARQL query.
FIX: Significant performance enhancement for the TreeIndexedTripleCollection makes it faster to retract triples. Thanks to @blackwork for the PR.
FIX: Fix to the Leviathan query engine to fix the behaviour of grouped aggregates when the input context is empty. Thanks to @giacomociti for the bug report.
2.6
---
This release updates the JSON-LD implementation to conform to the final published version of the specification.
NEW: Updated the JSON-LD implementation to conform to the newly published JSON-LD 1.1 specifications (https://www.w3.org/TR/json-ld11/). The interfaces to the JSON-LD reader and writer and the JSON-LD processor are unchanged, but the internal implementation now conforms to the published W3C specification rather than the draft specification from jsonld.org. (#315)
FIX: Fix for double-encoding of URIs in RDF serializers. Thanks to @tpluscode for the report and fix. (#328)
2.5.1
-----
Updated the constructors for classes derived from NumericNode so that the string literal value that is generated uses the C# InvariantCulture. This ensures that the literal string generated conforms to the lexical value space for the corresponding XML schema datatype. Thanks to @uyha for the bug report. (#305)
2.5
---
NEW: The `IsReady` property of the `StardogConnector` now checks that the knowledgebase specified in the connector exists on the remote server. If the it is not found, `IsReady` will return `false`. Thanks to @joephayes for the suggestion and the PR. (#278)
FIX: SparqlParamaterizedString has been fixed to replace variables whose name starts with an underscore character. Thanks to @giacomociti for the bug report. (#230)
FIX: The SPARQL query parser has been fixed to better handle math expressions without brackets, such as 1*2*3 or 10/5/2. Thanks to @alaendle for the bug report. (#225)
FIX: The SHACL processor has been fixed to support the use of unnamed graphs as the shapes graph to validate with. Thanks to @langsamu for the bug report and fix. (#303)
2.4
---
The main focus of this update is to reinstate features that were disabled for the .NET Standard build when we were targetting .NET Standard 1.0 APIs. This eliminates dotNetRDF API differences between the .NET Framework and .NET Standard builds of the library.
NEW: Added a new property IGraph.AllNodes which returns an enumeration over all of the INode instances contained in the graph including those nodes used only in the predicate position of graph triples (#146)
FIX: Reinstated a large number of features from the .NET Framework version of dotNetRDF to the .NETStandard build. This includes:
* The option to use PLINQ evaluation for joins
* Parallel and asynchronous query evaluation in Leviathan
* SPARQLView invalidation
* Multi-threaded writing in store writers
FIX: Fix to the JSON-LD processor to better handle the use of URNs in places where an absolute IRI is allowed. Thanks to @jrdouceur for the report. (#282)
FIX: Fix to the JSON-LD processor to ensure that quads generated for RDF list nodes are inserted into the same graph as the list itself. Thanks to @jrdouceur for the report. (#297)
NEW: SHACL processor now provides default result messages for each of the constraints. Thanks to @o-tim for the report and @langsamu for the PR (#293)
2.3
---
The main updates of this release are the addition of a SHACL validator and SHACL API for dotNetRDF; the addition of a new Dynamic API for RDF graphs; and the removal of support for .NET Core 1.0 and the NETStandard 1.0 API.
BREAKING: Removed NETStandard 1.4 target framework (#273). Please migrate applications to target NETStandard 2.0.
NEW: SHACL Processor - a fully compliant SHACL Core and SHACL-SPARQL processor. Thanks to @langsamu for this amazing contribution! (#236)
NEW: Dynamic API for RDF graphs and nodes. See https://github.com/dotnetrdf/dotnetrdf/wiki/UserGuide-Dynamic-API for details. Thanks to @langsamu for the PR (#228)
FIX: Reinstated RDF parser test suites (#252)
FIX: Fix to ensure that the RdfXmlWriter properly escapes XML entity declarations. Thanks to @cygri for the report (#245)
FIX: Update JsonLdWriter to default to opening files with `FileMode.Create` for consistency with other writers. Thanks to @bergdahl for the report (#232)
FIX: Fix for an edge-case in the GraphMatcher brute-force matching algorithm. Thanks to @langsamu for the report (#235)
FIX: Fix to SPARQL query parser to allow a DOT token to appear after a FILTER. Thanks to @langsamu for the report (#237)
FIX: Update to allow BaseTripleComparer to be used as an IEqualityComparer paramter. Thanks to @MischaVreeburg for the PR (#241)
FIX: Performance enhancement for sorting nodes in the TurtleWriter. Thanks to @MischaVreeburg for the PR (#239)
FIX: Fix for incorrect IRI for the RDF langString datatype. Thanks to @langsamu for the report and PR (#223)
FIX: Fix for Leviathan SPARQL update on a named graph that does not exist in the store. Thanks to @langsamu for the report (#216)
FIX: Fix for an edge-case in the CompressingTurtleWriter that caused incorrect serialization of certain blank nodes. Thanks to @langsamu for the report (#279)
2.2
---
This release pulls together a number of minor features and enhancements provided by the user community.
NEW: Performance improvements for the ontology builder classes (OntologyClass and OntologyProperty). Thanks to @DFinnh for the PR (#221)
NEW: The TriG parser now supports the syntax of the most recent TriG recommendation. This is now the default syntax supported by the TriG parser. Thanks to @langsamu for the PR (#205, #208)
NEW: SPARQL QueryBuilder now supports SPARQL VALUES clauses. Thanks to @tpluscode for the PR (#214)
NEW: The Get...Node methods of the Graph class now include nodes used as predicates as well as those used as subjects and objects in the graph. (#209)
FIX: Fix for the RDF/XML parser to better handle XML namespaces. Thanks to @glebkozh for the report. (#203)
NEW: StardogConnector now supports opening a transaction with reasoning enabled. Thanks to @DarthStem for the PR (#226)
2.1
---
This release fixes a number of bugs found in the 2.0.1 release and adds some new features provided by the user community
- NEW: New features for the QueryBuilder API. Added support for generating sub-queries using the QueryBuilder and added support for supplying custom TripleBuilders in addition to the fluent style API. Thanks to @faubulous for the PR. (#144)
- NEW: Added a new (read-only) SKOS API making it easier to access data held in RDF graphs that use the SKOS vocabulary. Thanks to @langsamu for the PR. (#174)
- NEW: Added a GraphML store writer. This writer generates a GraphML file that describes the topology of the graphs in a store in a format suitable for loading into various graph processing/visualisation tools. Thanks to @langsamu for the PR (#184)
- NEW: The GraphViz writer now supports optionally outputting literals as separate nodes for each triple rather than as a single node for a given literal value. Thanks to @langsamu for the PR (#196).
- FIX: Fix for over-enthusiastic DateTime coercion in the JSON-LD parser. Thanks to @langsamu for the report and fix. (#164)
- FIX: Fix for the JSON-LD parser incorrectly losing the content of the local context when processing a remote context. Thanks to @briancr-ms for the bug report. (#183)
- FIX: Fix for the TreeIndexedTripleCollection to explicitly remove empty triple lists from the indices when triples are removed from the colleciton. Thanks to @langsamu for the report. This fix also fixes an issue with the HtmlWriter generating empty table rows for triples that have been removed from the graph (#188, #189)
2.0.1
-----
This is a bug-fix release for the 2.0.0 release.
- FIX: Updated VDS.Common dependency to latest release version. Thanks to @langsamu for the report.
- FIX: Ensure all assemblies receive the correct version number as AssemlyVersion and FileVersion. Thanks to @langsamu for the report.
- FIX: RDF/XML parser now strips off the fragment part of the XML base URI when resolving same document references. Thanks to @langsamu for the report and suggested fix.
- FIX: RDF/XML parser now better handles documents where the RDF XML namespace URI is not mapped to the `rdf` prefix. Thanks to @langsamu fo the report.
2.0.0
-----
This release marks a major restructuring of the project.
Change Summary:
- Tools and samples are now moved to their own independent GitHub repositories (https://github.com/dotnetrdf/dotNetRDF.Toolkit and https://github.com/dotnetrdf/dotNetRDF.Samples).
- Support for .NET 3.5 and .NET 3.5 client profile has been removed.
- Updated the solution and project files to .NET Core SDK 2.0
- Added support for .NET Core 1.1 and 2.0
- The build process has been simplified and no longer relies on NAnt - a build can be done from the command line as `dotnet restore` followed by `dotnet build`
- Added support for JSON-LD. The implementation is tracking the in-development JSON-LD 1.1 specification.
- Added support for enabling/disabling reasoning on SPARQL queries over the Stardog connector. Thanks to @charbull for the PR.
- The SparqlRemoteEndpoint class now always honours an explicitly set HttpMode value. By default, the mode is set to AUTO which continues to implement pre-2.0 behaviour,
using GET unless the query string exceeds the internal query string length limit of 2048 characters or contains non-ASCII characters. From 2.0, if the user explicitly
sets HttpMode to GET or to POST, that method will be used regardless of query parameter length or content. Thanks to @reeset for the report. (#128)
- Fixed an error in the configuration of the Newtonsoft JSON parser that caused the RdfJSONParser to fail when the JSON file contained literal values formatted as ISO 8601 date/time strings. (#130)
- Added a new IRdfWriter implementation that wraps an IStoreWriter implementation, allowing a single IGraph instance to be written using an IStoreWriter (#126)
- Refactored HTTP authentication in the connectors so that it is now implemented in BaseHttpConnector. Thanks to @tpluscode for the PR.
- Performance improvements for looking up nodes in indexed graph collections. (#153). Thanks to @tpluscode for the PR.
- Added a new IRdfHandler implementation. VDS.RDF.Parsing.Handlers.StripStringHandler is a handler that wraps another handler and removes the xsd:string datatype from literal objects. (#157). Thanks to @langsamu for the PR.
1.0.13
------
Added
- .NET Core build - targets the netstandard1.4 framework (see https://github.com/dotnet/corefx/blob/master/Documentation/architecture/net-platform-standard.md for compatibility details).
Changed
- Build Changes
- Changed API documentation build to use [Sandcastle Help File Builder](https://github.com/EWSoftware/SHFB) rather than the older NDoc
- Bug Fixes
- Added support for aggregates to query builder (#81, #80)
- Fixed Newtonsoft.Json reference (#66)
1.0.12
------
Changed
- Bug Fixes
- Fix namespace handling error in the RDF/XML parser (#59)
1.0.11
------
NOTE: From this release, bug tracking has moved to https://github.com/dotnetrdf/dotnetrdf/issues
so bug ID references are to this new tracker (in the form #XXX)
Changed
- Bug Fixes
- Fix for LazyBGP evaluation where triple patterns do not extend the result set with more bindings (#57)
- Fix for incorrect return on evaluation of a (NOT) EXISTS filter with no variables (#58)
1.0.10
------
Changed
- Bug Fixes
- Fix inconsistent use of XML entities for compression in RdfXmlWriter (CORE-453)
- Disable HTTP Keep Alive by default as it can cause errors under some circumstances (CORE-454)
- Fix bug with ToString() form of SparqlQuery not being round trippable in some cases (CORE-458)
- Build
- Ensure all NuGet packages and Release libraries are built in Release mode (CORE-459)
- Dependencies
- Upgrade OpenLink.Data.Virtuoso to 7.20.3214.1 (VIRT-359)
- Note that this removes support for Virtuoso on .Net Client Profile
- Upgrade VDS.Common to 1.6.4 (CORE-459)
- Upgrade Newtonsoft.Json to 8.0.3 (CORE-460)
1.0.9
-----
Changed
- Bug Fixes
- Performance fixes for query evaluation over virtual graphs (CORE-449, CORE-450, CORE-451, CORE-452)
- BaseEndpoint now permits more access to the HttpWebRequest prior to issuing it to allow for extra customisation (CORE-448)
- AllegroGraph compatibility issue with incorrect MIME type for saving data (CORE-447)
- SPARQL Query Parser was overly strict with some aggregate containing queries where the GROUP BY was implicit (CORE-446)
- Fixes for Stardog 3.x support (CORE-443)
- Improvements to multi-threaded performance when using URI Interning
- Dependencies
- Upgrade VDS.Common to 1.6.0
1.0.8
-----
Changed
- Bug Fixes
- Some SPARQL parsers did not handle bad URIs gracefully i.e. did not provide informative errors (CORE-432)
- SPARQL CSV parser reject variable names in header row if CSV quoted values are used (CORE-433)
- Accessing remote SPARQL endpoints could fail to include default & named graph parameters if POSTing the queries (CORE-434)
- Fix possible exception when evaluating a query with a ORDER BY and LIMIT over a cross product (CORE-437)
- Lazy query evaluation can cause an apparent infinite loop (i.e. extremely slow query evaluation) in some cases (CORE-439)
- Fix typo in MIME type definitions for NTriples
- Fix bug where HAVING clause that used aggregates could fail to evaluate correctly if project expressions were also used (CORE-440)
- Fix bug in evaluation of the zero length portion of * paths causing incorrect results (CORE-441)
- Build
- Upgrade PCL build to Profile 328
- Dependencies
- Upgrade VDS.Common to 1.5.0
- Upgrade Json.Net to 6.0.8
1.0.7
-----
Changed
- Bug Fixes
- Missing ToString() on UUID() and StrUUID() functions (CORE-427)
- Fix bug with parsing BIND inside complex nested graph patterns (CORE-428)
- Fix bug with RDF/XML output under MonoTouch (CORE-431)
- Build
- Ensure AssemblyVersion is synchronised properly with NuGet package versions (CORE-426)
- Remove MSBuild integrated NuGet package restore
- Dependencies
- Upgrade VDS.Common to 1.4.0
- Upgrade Json.Net to 6.0.6
- Upgrade HtmlAgilityPack to 1.4.9
1.0.6
-----
Changed
- Bug Fixes
- Fix bug in overly strict SPARQL Results JSON parsing (CORE-419)
- Fix bug with incorrect sub-query evaluation (CORE-420)
- Fix bug where NQuadsWriter may omit graph names when the data was inserted via SPARQL Updates (CORE-421)
- Fix bug parsing SPARQL Results JSON where data is in unexpected order (CORE-423)
- Fix possible NPE when running updates with a custom query processor
- Fix for Stardog 2.2 reasoning support
1.0.5
-----
Changed
- Bug Fixes
- Fix a bug with Left Join producing incorrect results due to join linearization optimizations in some cases (CORE-406)
- Fix a bug in substituting parameter values containing $ signs into SparqlParameterizedString instances (CORE-408)
- Fix a corner case in evaluating CONSTRUCT queries with empty WHERE clause and concrete triples in template (CORE-407)
- Fix overly strict SPARQL Results XML parsing (CORE-410)
- Fix incorrect usage of Single.NaN and Double.NaN constants with equality operator (CORE-412)
- Include location information in Illegal space in URIs error from NTriples tokeniser
- Fix a bug with scheduling of sub-queries (CORE-416)
- Fix a bug with GRAPH clauses being executed multiple times unecessarily (CORE-416)
- Dependencies
- Upgrade VDS.Common to 1.3.0 (CORE-405)
- Upgrade Json.Net to 6.0.3 (CORE-405)
- Build
- Upgrade PCL build to Profile 136 (CORE-405)
- Parsing
- Improve error message for excess triple pattern tokens (CORE-411)
- Query
- Add FixedVariables and FloatingVariables properties to ISparqlAlgebra and related classes (CORE-406)
- Improve logic for when Left Joins are linearized (CORE-406)
- ExplainQueryProcessor improvements:
- GRAPH clause explanations
- Indentation of output for easier reading
Removed
- Builds
- Remove SL4 and WP7 builds (CORE-405)
1.0.4
-----
Added
- Parsing
- Support for updated NTriples syntax per the RDF 1.1 specification (CORE-355)
- Support for updated NQuads syntax per the RDF 1.1 specification (CORE-356)
- Writing
- Support for updated NTriples syntax per the RDF 1.1 specification (CORE-355)
- Support for updated NQuads syntax per the RDF 1.1 specification (CORE-356)
Changed
- Bug Fixes
- Fix a bug where some graph patterns may get translated into algebra incorrectly (CORE-398)
- Fix a bug with overly greedly tokenization when parsing prefix declarations in Turtle, N3 and SPARQL
- Fix a bug with language specifiers not being consistently normalized to lower case internally
leading to unexpected behaviour trying to query for triples by language tag (CORE-401)
- Fix a bug in re-serializing queries containing UNION clauses (CORE-402)
- Fix a bug in parsing collections from TriG syntax (CORE-403)
- Core API
- Content negotiation for NTriples and NQuads updated to favour officialy specified MIME types (CORE-355,CORE-356)
- Storage
- Add Timeout property to all HTTP based storage providers which is used for all HTTP requests (CORE-400)
- Fix handling CONSTRUCT/DESCRIBE results from more recent Virtuoso versions (VIRT-397)
- Fix handling of inserting/deleting blank nodes with more recent Virtuoso versions (VIRT-399)
- Formatting
- NTriplesFormatter and NQuadsFormatter now take a syntax argument (CORE-355,CORE-356)
- NTriples11Formatter and NQuadsFormatter11 added as convinient shortcuts to providing explicit syntax (CORE-355,CORE-356)
Removed
- Removed obsolete unusable DydraConnector
1.0.3
-----
Changed
- Bug Fixes
- Fix a bug in how Sesame connections load the default graph
- Fix a bug causing incorrect results in some cases of { } OPTIONAL { } when the LHS and RHS are disjoint i.e. no
common variables (CORE-386)
- DELETE WHERE { } shorthand syntax was permitted to have a preceding WITH clause which was invalid SPARQL syntax (CORE-389)
- URILoader.Load() can sometimes swallow exceptions (CORE-391)
- Timeout (and other request options) was not honoured for asynchronous queries and updates using SparqlRemoteEndpoint and SparqlRemoteUpdateEndpoint (CORE-393)
- Fix a bug in handling Fragment Identifier in Graph URIs for SPARQL Graph Store protocol based stores like Fuseki (CORE-394)
- Fix a bug in translating and evaluating complex property paths (CORE-395)
- Dependencies
- Bumped Json.Net to 5.0.8
- Documentation
- Minor tweak to Timeout properties to ensure all explicitly state that the unit is milliseconds (CORE-387)
- Query
- SparqlResultSet can now be created from an IEnumerable<SparqlResult> instances (CORE-383)
- Storage
- Add native SPARQL Update support to StardogV2Connector (CORE-376)
1.0.2
-----
Added
Changed
- Bug Fixes
- Possible OOM when stream parsing large RDF/XML files (CORE-378)
- Fix a bug with transactions being left open in some cases when using VirtuosoManager (VIRT-382)
- NuGet
- Fixed packaging to ensure the Portable Class Library builds are included
Removed
- Marked as obsolete unusable the obsoleted ICharFormatter.FormatChar() method
1.0.1
-----
Added
- Portable Class Library builds are now included (CORE-303)
- Note that synchronous APIs for some functionality are not supported in the PCL builds (CORE-371)
- Formatting API
- Add new more efficient FormatChar() overload to ICharFormatter (CORE-357)
- Query
- First version of new Fluent Query builder API (CORE-260)
- Global Options
- Add new DefaultCulture and DefaultComparisonOptions used for lexical ordering of literal values in the cases
where more natural ordering (e.g. numeric) does not apply (CORE-367)
Changed
- Bug Fixes
- Fix a bug where SPARQL parsing could incorrectly lose type information for some literals used in expressions
- Fix a Stack Overflow that could occur in ThreadSafeGraph (CORE-363)
- Property Path * operator could produce incorrect results (CORE-349)
- Correct an error message re: extension point in Full Text Indexing (FTXT-366)
- Some full text queries could cause BIND clauses to result in unbound values (FTXT-364)
- Fixes to handling of some Date Time comparisons in SPARQL (CORE-365)
- Fixes to asynchronous error propagation for some async APIs (CORE-370)
- Fixes to parsing of EXISTS/NOT EXISTS within the WHERE clause of a SPARQL Update (CORE-373)
- Fixed an encoding bug when communicating with Sesame servers (CORE-374)
- Fixed a bug with handling relative URIs as graph names with Virtuoso (VIRT-375)
- Dependencies
- Upgraded Json.Net to 5.0.6
- Query
- IValuedNode contract changed to have both AsDateTime() and AsDateTimeOffset() methods (CORE-365)
- Storage
- Add partial support for connections to Stardog 2.0 servers
- Native SPARQL update support for Stardog 2.0 is not yet available
- Configuration API
- ConfiguationLoader had IConfigurationLoader interface extracted (CORE-362)
- Writing
- Significantly improve performance of writing non-ASCII characters to NTriples (CORE-357)
Removed
- Marked as obsolete usable the old ICharFormatter.FormatChar() method (CORE-357)
- Marked DydraConnector obsolete unusable per deprecation policy
1.0.0.2533
----------
Changed
- Build
- Relevant project files now specify signing keys directly so VS builds will be signed in the same way that NAnt builds were previously, Silverlight builds
are still not signed
1.0.0.2473
----------
Added
- Parsing
- New ITokenisingParser interface which exposes a TokenQueueMode property (CORE-332)
- Global Options
- New Options.DefaultTokenQueueMode controls default queue mode for tokeniser based parsers (CORE-332)
- New Options.ValidateIris controls whether certain parsers perform strict IRI validation, currently only Turtle W3C syntax supports this (CORE-314)
- Configuration
- ConfigurationLoader may now be used in a convenience instance mode (CORE-337)
- SparqlRemoteUpdateEndpoint now implements IConfigurationSerializable properly (CORE-346)
- New dnr:queryEndpoint, dnr:queryEndpointUri, dnr:updateEndpoint and dnr:updateEndpointUri properties for use in place of their generic equivalents (CORE-346)
- Query
- New optimization improves performance for some queries using ORDER BY + DISTINCT combinations (CORE-353)
- Storage
- New ReadWriteSparqlConnector for connecting to arbitrary triple stores that expose both a Query and Update endpoint (CORE-346)
Changed
- Bug Fixes
- Fix for one form of AllegroGraphConnector constructor confusing Store and Catalog IDs
- StoreHandler did not propogate namespaces to all graphs (CORE-334)
- SPARQL expression parsing could occassionally reject some numeric literals incorrectly (CORE-332)
- GROUP BY could interact incorrectly with some operators such as VALUES and GRAPH resulting in incorrect results (CORE-336)
- GRAPH ?g { } was interpreted incorrectly (CORE-336)
- Fixed a bug where asynchronous UpdateGraph() on Sesame connections would invoke the callback too early
- Fixed a bug in GROUP_CONCAT where certain values would not be correctly concatenated together (CORE-340)
- Fixed a corner case bug where the Turtle parser could accept some invalid input and generate incorrect URIs for it (CORE-341)
- Fixed a bug where certain triple patterns could trigger a bug in the scan logic and explode the solution space (CORE-343)
- Fixed a bug where Graph equality could explode memory usage and be unable to determine equality on some blank node heavy equivalent graphs (CORE-345)
- Fixed a bug with numeric literals not being parsed using the invariant culture (CORE-344)
- Fixed a bug with the Ontology API not returning OWL datatype properties correctly (CORE-339)
- Fixed a bug where DESC() applied to a sort condition in SPARQL could propogate the DESC() to the subsequent sort condition (CORE-350)
- Fixed a bug where not all sort conditions in SPARQL were applied for rows where any column evaluated to null (CORE-350)
- Fixed a bug where EXISTS/NOT EXISTS used a child expression in a larger expression could cause incorrect results
- Fixed various corner case bugs in Turtle parsing highlighted by updating to support latest W3C recommendation (CORE-314)
- Fixed a bug with use of xml: as a prefix for element names in RDF/XML (CORE-358)
- Dependencies
- Upgraded VDS.Common to 1.2.0 which resolves an issue that users may encounter under the VS debugger (CORE-317, CORE-292)
- Upgraded Json.Net to 5.0.4
- Documentation
- Documentation was moved to BitBucket wiki at http://bitbucket.org/dotnetrdf/dotnetrdf/wiki (DOCS-306)
- Core API
- TreeIndexedTripleCollection now supports completely configurable indices (CORE-309)
- Graph equality should now be more performant (CORE-345)
- HTTP Debugging is no longer debug build specific (CORE-347)
- Various improvements to localalization support particularly around numeric value handling
- Parsing
- Updated support for Turtle to W3C Candidate Recommendation (19th Feb 2013 version) (CORE-314)
- Escape handling is now much stricter and will throw errors on invalid escape sequences which previously would have been silently allowed (CORE-314)
- Optional IRI validation for Turtle W3C which is disabled by default, use Options.ValidateIris to enable (CORE-314)
- Query
- Wherever possible the order of variables in the SELECT clause will now be respected in SparqlResultSet objects (CORE-342)
- Storage
- SesameNativeTemplate is now a public class
- AllegroGraphConnector now implements IUpdateableStorage and IAsyncUpdateableStorage (CORE-308)
- Fix target framework profile for dotNetRDF.Data.Virtuoso.ClientProfile
- Writing
- Improved how characters are escaped (counterpart to stricter escape handling) which provides better round tripping of data (CORE-314)
Removed
- Removed defunct TalisException
- Removed defunct internal class InternalXmlWriter
- Marked DydraConnector with an obsolete usable due to continuing inconsistency and transient failures from the Dydra API
- Removed defunct Project class
- Marked IInMemoryQueryableStore.ExecuteQuery() methods as deprecated in favour of using ISparqlQueryProcessor
0.9.0 RC4
---------
Added
- Ontology API
- Added Direct/Indirect SubClasses and SuperClasses property on OntologyClass (CORE-295)
- Added Direct/Indirect SubProperties and SuperProperties property on OntologyProperty (CORE-295)
- Added Siblings property on OntologyClass and OntologyProperty (CORE-296)
- Added IsTopClass and IsBottomClass property on OntologyClass (CORE-293)
- Added IsTopProperty and IsBottomProperty on OntologyProperty (CORE-293)
- Added Owl/Rdf/All Classes and Properties properties on OntologyGraph (CORE-293)
- Added AsClass() and AsProperty() methods on OntologyResource (CORE-293)
Changed
- Bug Fixes
- Fix a bug to allow OrderByVariable to take variable name with/without leading ?/$
- Fix a bug in SparqlJsonParser relating to some valid data being rejected due to Json.Net perculiarities (CORE-290)
- Fix a bug in the streaming mode of the RDF/XML parser not respecting external Base URI (CORE-216)
- Fix a corner case bug in interaction between GRAPH clause and inner patterns that match but have no variables (CORE-294)
- Fix a corner base base in interaction between GRAPH clauses and property paths (CORE-294)
- Fix a bug in INSERT/DELETE commands when a GRAPH clause with an unbound variable is used (CORE-300)
- Fix a bug with the XPath Replace function (CORE-299)
- Fix a bug with applying aggregates over empty intermediate results giving incorrect results (CORE-304)
- Add an opt-in workaround for HTTP Basic Authentication against badly behaved server (CORE-301)
- Fix a bug with loss of precision when converting DateTime to xsd:dateTime literals (CORE-305)
- Dependencies
- Externalized the VDS.Web.Server library as a dependency version 1.0.0
- Updated VDS.Common to 1.1.2
- Build
- Improved our test architecture significantly (CORE-216)
- NuGet packages now include PDBs to aid consumers in debugging issues with dotNetRDF (CORE-292)
- Storage, Query and Update
- Always enable PreAuthenticate for HTTP requests where possible to reduce HTTP requests (CORE-302)
Removed
- Removed the obsolete JosekiConnector as obsolete unusable
- Removed some obsolete property and class constants in ConfigurationLoader as obsolete unusable
- Removed the obsolete Graph() method of ITripleStore as obsolete unusable (superceded by indexer access)
- Removed the obsolete IndexingHelper static class as obsolete unusable
- Removed the obsolete ConfigurationLoader.AutoDetectX() overloads as obsolete unusable
- Removed the obsolete Tools.StreamCopy() method as obsolete unusable
- Removed the obsolete FastRdfXmlWriter as obsolete unusable
0.8.2 RC3
---------
Changed
- Bug Fixes
- Fixed a subtle bug in GraphCollection caused by the previous fix in 0.8.1 RC2
- Fixed a bug with ToLiteral() not using the invariant culture
- Dependencies
- Updated VDS.Common to 1.1.0
- Corrected NuGet dependency on Json.Net to 4.5.11 to match our builds
0.8.1 RC2
---------
Changed
- Bug Fixes
- Fixed a critical bug in GraphCollection caused by a change in a dependency that wasn't caught by our existing
regression tests
0.8.0 RC1
---------
Added
Changed
- Bug Fixes
- Fixed an internal API inconsistency (CORE-285)
- Fixed a bug in the BNODE() function
- Fixed a bug in Extend that could occur when many Extends were nested together (CORE-287)
- Fixed an intermittent race condition in the implementation of parallel Left Join
- Fixed a bug in the evaluation of some complex GROUP BY statements
- Fixed a bug in the string representation of CountDistinctAggregate (CORE-286)
- Fixed a bug related to losing FILTERS when building queries using the internal APIs
- Fixed a bug related to ToString() form of some API built queries (CORE-286)
- Fixed a bug related to graph scoping of full text search
- Fixes various bugs related to SPARQL 1.1 Protocol and Service Description compliance (CORE-289)
- Dependencies
- Updated Json.Net dependency to 4.5r11
- Updated Query.FullText Library to use Lucene.Net 3.0.3
- Externalized the VDS.Common namespace as a dependency version 1.0.1
- All dependencies are now maintained using NuGet
- Build
- Query.FullText Library is now always strong named
- Query.FullText NuGet package now references Lucene.Net as a dependency instead of including it in the package
- Data.Virtuoso NuGet package now references OpenLink.Data.Virtuoso as a dependency instead of including it in the package
- All alternative builds are now part of the solution rather than being generated only by the NAnt builds
- Parsing/Writing
- Improved how parsers and writers are selected by file extension (CORE-282)
- Improved content negotiation logic to properly support quality factors and type ranges (CORE-282)
- Avoid using blocking IO when parsing from file/memory streams (CORE-282)
- Query
- Improved how Distinct() algebra behaves with respect to trimming temporary variables to better support complex property paths
- Improved how GROUP BY, aggregates and Project Expressions are implemented internally (CORE-284)
- Improved parallel implementation of Left Join
Removed
- Marks the obsolete JosekiConnector as obsolete unusable
- Removed the obsolete TalisPlatformConnector
- Removed the obsolete IndexedTripleCollection and it's descendants
- Removed the obsolete AdvancedTripleCollections
- Marks some obsolete property and class constants in ConfigurationLoader as obsolete unusable
- Removes the previously obsoleted property and class constants in ConfigurationLoader
- Marks the obsolete HashTable classes as obsolete unusable
- Marks the obsolete Graph() method of ITripleStore as obsolete unusable (superceded by indexer access)
- Marks the obsolete IndexingHelper static class as obsolete unusable
- Marks the obsolete ConfigurationLoader.AutoDetectX() overloads as obsolete unusable
- Marks the obsolete Tools.CopyStream() method as obsolete unusable
- Marks the obsolete FastRdfXmlWriter as obsolete unusable
0.7.2 Beta
----------
Added
- Configuration API
- More auto-configuration methods (CORE-270)
- Helper methods for loading configuration graphs (CORE-270)
- Supports new ability to have one configuration graph import another URI/file
- More overloads for GetConfigurationX() methods to select values based on a selection of possible properties (CORE-270)
- Support for specifying custom Triple and Graph Collections (CORE-270)
- Support for loading IStorageServer instances (CORE-270)
- Support for loading SPARQL operators and property function factories (CORE-270)
- Support for automatically configuring static properties e.g. Options.UsePLinqEvaluation (CORE-270)
- Query
- Added IsMinusCompatibleWith() method to ISet interface (CORE-238)
- Support for extended SPARQL Operators e.g. using + for Date Time arithmetic (CORE-264)
- Support for SPARQL property functions (CORE-268)
- Refactored Query.FullText to be a true property function (CORE-268)
Changed
- Bug Fixes
- Some logic fixes to AllegroGraphConnector and AllegroGraphServer (CORE-263)
- Bug fix to TreeIndexedTripleCollection (CORE-265)
- Bug fix to corner case MINUS logic in SPARQL 1.1 (CORE-238)
- Bug fix to corner case GROUP BY and aggregate interaction logic (CORE-238)
- Bug fix to improve handling of & when outputting XML - Kal Ahmed
- Bug fix for a logic flaw in GraphCollection exposed when deriving from GraphCollection caused by the refactor to use of MultiDictionary (CORE-274)
- Bug fix for a parsing error when property paths are nested in Blank Node predicate object lists
- Bug fix for proper parser detection when selecting based on a .abc.gz filename
- Bug fix for error in Lazy evaluation of some queries (CORE-238)
- Bug fix for subtle logic errors in SPARQL dataset resolution in some rare cases (COR-238)
- Bug fix for some prefix validation bugs in SPARQL 1.1 (CORE-238)
- Bug fix for doing unecessary extra work in a SPARQL DISTINCT operation and not discarding temporary variables (CORE-238)
- Bug fix for pathological case of Graph isomporphism not being handled correctly in GraphMatcher
- Bug fix for use of Uri.EscapeDataString() on long strings (CORE-278)
- Bug fix to a corner case where a ScapegoatTree could lose data in a rebalance (CORE-279)
- Bug fix to QueryableGraph not being properly aware of change in default graph behaviour (CORE-238)
- Bug fix for RdfXmlParser incorrectly resolving some bad property QNames (CORE-280)
- Dependencies
- Bumped JSON.Net version to 4.5r9
- Bumped HtmlAgilityPack version to 1.4.6
- Core API
- Made TreeIndexedTripleCollection the default triple collection implementation (CORE-265)
- Parsing
- Turtle parser now allows SPARQL style BASE and PREFIX when using W3C standard syntax (CORE-261)
- Query
- Improves SPARQL 1.1 support to near 100% compliance (CORE-238)
- Storage
- Moved IStorageServer implementations into separate classes (AllegroGraphServer, SesameServer and StardogServer) in own namespace (CORE-263)
- Added ParentServer and AsyncParentServer properties to IStorageProvider and IAsyncStorageProvider (CORE-263)
- Talis is no longer supported since the Talis Platform is in the process of winding down for public usage
Removed
- Marked the TalisPlatformConnector as obsolete unusable
- Removed the obsolete Data.Sql library from the distribution
- Marked the now superseded IndexedTripleCollection and it's descendants as obsolete unusable
- Removed the obsolete ThreadSafeIndexedTripleCollection
- Removed IStoreParams
- Removed the old overloads of IStoreReader and IStoreWriter
- Removed the obsolete IGenericIOManager interfaces
- Removes obsolete property and class constants in ConfigurationLoader
0.7.1 Beta
----------
Added
- Core API
- New Indexing data structures (CORE-247, CORE-52)
- New decorator classes to make it simpler to wrap extra functionality around existing implementations: (CORE-255)
- WrapperGraph
- WrapperGraphCollection
- WrapperTripleCollection
- WrapperTripleStore
Changed
- Bug Fixes
- Fixed a bug with parsers being too restrictive on permitted language specifier formats - thanks to Csaba Gonczi (CORE-253)
- Fixed a subtle bug around percent encoded characters in URIs - thanks to Rob Styles (CORE-258)
- Fixed a bug with GraphDiff and null reference handling (CORE-259)
- Core API
- IGraph changes:
- Changes definition of Assert() and Retract() to return booleans (CORE-254)
- Removes unecessary overloads of Assert() and Retract() (CORE-254)
- ITripleStore changes:
- Changes definition of Add() and Remove() to return booleans (CORE-254)
- Adds indexer for accessing graphs and obsoletes the Graph() method in favour of this
- Triple Collection changes:
- BaseTripleCollection now defines Add() and Delete() as returning booleans (CORE-254)
- Refactored internals of TripleCollection to use our new MultiDictionary data structure (CORE-247)
- ThreadSafeTripleCollection is now a decorator that can be applied to any BaseTripleCollection instance, also made it available on Silverlight (CORE-255)
- Graph Collection changes:
- Refactored internals of GraphCollection to use our new MultiDictionary data structure (CORE-247)
- ThreadSafeGraphCollection is now a decorator that can be applied to any BaseGraphCollection instance, also made it available on Silverlight (CORE-255)
- DiskDemandGraphCollection and WebDemandGraphCollection are now both decorators and so can be combined on top of each other as desired (CORE-255)
- Query
- ISparqlDataset now defines AddGraph() and RemoveGraph() as returning booleans (CORE-254)
- Storage API
- Refactored IStorageServer API (CORE-249)
- Added support for creating stores with Sesame - thanks to Jeen Broekstra (CORE-249)
- Standardized error handling across Storage Providers as far as possible - thanks to Ron Michael Zettlemoyer (CORE-262)
- Stardog
- Avoid any transaction if calling UpdateGraph() without any updates - thanks to Ron Michael Zettlemoyer
Removed
- Marked the TalisPlatformConnector as obsolete but usable
- Marked the contents of the Data.Sql library as obsolete unusable
- Removed the obsolete BackgroundPersistedGraph class
- Marked the now superseded IndexedTripleCollection and it's descendants as obsolete usable
- Marked the obsoleted ThreadSafeIndexedTripleCollection as obsolete unusable
- Marked IStoreParams as obsolete unsuable
- Marked the old overloads of IStoreReader and IStoreWriter as obsolete unusable
0.7.0 Beta
----------
Added
- Query
- Added an implicit join optimiser
- Added a filtered product optimiser (CORE-224)
- Added support for UUID and STRUUID functions (CORE-222)
- Added support for VALUES syntax (CORE-222)
Changed
- Bug Fixes
- Fix for a bug with FILTER and BIND in the WHERE clause of INSERT/DELETE causing incorrect behaviour due to an over optimization issue (CORE-225)
- Fix for a bug with ASK queries and SparqlRemoteEndpoint.QueryWithResultSet() (CORE-229)
- Fix for a bug with Stardog connectivity related to defunct connection string parameter (CORE-230)
- Fix for a bug with multi-threaded access to MimeTypesHelper failing if it hadn't been previously accessed (CORE-228)
- Fix for a bug with multi-threaded access to our Trie implementation (CORE-228)
- Fix for a bug with nested aggregates evaluating when they should error i.e. inner aggregate gives unbound (CORE-232)
- Fix for bugs readrding insertion and deletion of Blank Node containing triples via the UpdateGraph() method when using Virtuoso (
- Fix for calling CreateUriNode() with a relative URI on a Graph not automatically resolving against Graph Base URI
- Parsing
- Refactored IStoreReader API to be consistent with IRdfReader and ISparqlResultsReader (CORE-212)
- Query
- Default behaviour is now not to have a union default graph (CORE-211)
- BINDINGS syntax now disabled in favour of the new VALUES syntax from latest editors draft (CORE-222)
- Revised STRAFTER and STRBEFORE implementation to latest editors draft (CORE-222)
- Turned on PLinq Evaluation by default, following operations are parallelised currently:
- Join
- LeftJoin
- Product
- Filter
- Extend
- Storage
- Major refactor and reorganisation of interfaces within Storage namespace to have more consistent naming (CORE-215)
- Supports a standard async access API over almost all existing storage providers (CORE-68)
- Adds a new IStorageServer interface for providers like Sesame and AllegroGraph which allow multiple stores to be managed (CORE-215)
- Serialization
- Refactored IStoreWriter API to be consistent with IRdfWriter and ISparqlResultsWriter (CORE-212)
- Update
- Refactored code around ISparqlHttpProtocolProcessor to make it easier to expose this feature on non-ASP.Net web servers (CORE-183)
Removed
- Obsolete ISelector API removed
- Removed any internal use of embedded HashLib code as it is no longer necessary
- Removed the obsolete BaseNodeCollection API
- Marked the contents of the Data.Sql library as obsolete but usable
0.6.2 Beta
----------
Added
- Query
- Added an implicit join optimiser
Changed
- Bug Fixes
- Fix for an issue with bif:contains and other special constructs in SPARQL queries to Virtuoso
- Fix for a bug with CREATE GRAPH and GenericUpdateProcessor behaviour for stores that don't support empty graphs
- Fix for some regressions in SPARQL 1.1 support introduced by internal data structure changes in the 0.6.1 release
- Fix for corner case logic flaw in GRAPH clause evaluation
- Fix for proper configurable timeouts for Virtuoso
- Fix for some Virtuoso extensions causing queries to be rejected
- Fix for incorrect parser selection when talking to some Sesame based servers
- Parsing
- Explicit support for direct parsing of GZipped inputs (e.g. example.ttl.gz)
- More intelligent format detection on loading into TripleStore instances
- Ontology API
- Added IsDomainOf and IsRangeOf properties to OntologyClass
- Query
- Added TryGetValue() and TryGetBoundValue() methods to SparqlResult class
- Storage
- Storage API outline now available on Silverlight/Windows Phone 7 though many implementations are not available on those platforms
Removed
- All Talis specific classes except TalisPlatformConnector
- Obsolete NativeTripleStore and StoreGraph
- Obsolete HandlerConstants
- Marked all legacy FolderStore classes as deprecated but usable
- Marked old GenericReader/GenericWriter classes as deprecated unusable
0.6.1 Beta
----------
Added
Changed
- Bug Fixes
- Fixed an inadvertent StackOverFlowException in the StardogConnector constructor
- Configuration
- Updated vocabularies to reflect new properties in 0.6.x releases and remove defunct properties
- Query
- Experimental PLINQ optimisation of query evaluation for .Net 4.0 builds (disabled by default)
Removed
0.6.0 Beta
----------
Added
- Core
- URIs are now interned to reduce memory usage and speed up equality comparisons
- Improved configurability of HashTable so perfomance can be tailored to usage
- Parsing
- Support for parsing W3C standard Turtle (allows for more QNames, case insensitive boolean literals and single quoted literals)
- Registered text/boolean parser for SPARQL Results
- Storage
- All HTTP based storage now supports HTTP proxying
Changed
- Bug Fixes
- Fixed a bug with long URIs and SparqlRemoteUpdateEndpoint
- Critical bug where connecting to an AllegroGraph 4.x repository cleared existing data
- Fixed a bug whereby Blank Node IDs in NTriples output could be invalid
- Fixed a bug where QNames in RDF/XML output weren't fully validated against the latest revisions of the XML specs
- Fixed a bug where Blank Node IDs in RDF/XML output could be invalid
- Fixed a bug with some queries falsely being considered ASK queries and their results improperly handled for Sesame stores
- Fixed a bug with bad serialisation of sub-queries
- Parsing
- Constructors for BlockingTextReader are now private, use BlockingTextReader.Create() static instead
- Query
- Major refactor of SPARQL expression evaluation to make it more efficient and maintainable
- Updated to latest SPARQL 1.1 specifications
- Replaced the Join algorithm with a new algorithm which is significantly faster
- Improved selectivity of TriplePattern.GetTriples()
- Some refactoring of ISparqlDataset interface
- A WebDemandDataset for creating a dataset with load on demand capabilities
- Enabled StrictAlgebraOptimiser and IdentityFilterOptimiser by default
- Update
- GenericUpdateProcessor is more intelligent in determining whether a command can be applied to stores that don't have native SPARQL Update support
- Writing
- Support for outputting W3C standard Turtle (allows for more URIs to be compressed to QNames)
- WriteThroughHandler periodically flushes the output stream
Removed
- Legacy SQL Store support
- Obsolete BlockingStreamReader class
- Obsolete QueryText method on SparqlParameterizedString
- Dependency on MySql.Data is no longer required by any library in the release
- Obsolete NativeTripleStore marked as unusable
- Obsolete QueryTime and QueryTimeTicks properties removed - use QueryExecutionTime instead
- Obsolete SparqlQuery.Evaluate() marked as unusable
0.5.1 Beta
----------
Added
- Parsing
- Support for registering arbitrary parsers via MimeTypesHelper
- Added a SPARQL TSV Parser
- Query
- Added support for new SPARQL 1.1 functions STRAFTER, STRBEFORE and STRREPLACE
- Storage
- Added Dydra Support
Changed
- Bug Fixes
- Fixed a Bug where NegotiateByFileExtension would cause a HTTP 500 error rather than failing silently
- Fixed a Bug with NegotiateByFileExtension and nested handler paths
- Fixed a rare corner case Bug related to round-trip serialization of literals containing backslashes
- Fixed a bug with some COPY/MOVE commands when processed with Leviathan
- Fixed a bug related to data loading of Blank Node heavy data into the new ADO Store
- Fixed a bug with the BaseAdoDataset reporting incorrectly for HasGraph()
- Fixed a bug with HtmlSchemaWriter documenting anonymous classes
- Fixed some bugs with Stardog connectivity due to changes in their HTTP server code
- Fixed a bug with CSV output
- Fixed a bug with SPARQL XML Parser not always decoding XML entities
- Fixed a performance bug with new SQL backend that occurs primarily when the database server is not local
on the network i.e. when database server is remote
- Query
- AVG() aggregate can now be applied over non-numeric expressions
- Storage
- Performance improvements to querying ADO stores
- Added support for additional reasoning modes for Stardog
- Update
- Made LeviathanUpdateProcessor more extensible
- Now supports a custom query processor used in evaluating WHERE clauses
- Writing
- Updated SPARQL CSV/TSV output to match SPARQL 1.1 specification
0.5.0 Beta
----------
Added
- Core API
- Added .Net serialization support to INode, IGraph, SparqlResultSet and SparqlResult
- Support for both IXmlSerializable and ISerializable
- Added callback delegates and various async alternatives to synchronous HTTP to various features throughout
the API to fix an issue with Silverlight/WP7 but also to provide easier async calls to users on all
platforms
- Added a PersistentTripleStore which is a propery in-memory view onto a persistent store where changes to the
in-memory state can be persisted/discarded as desired
- Configuration API