Releases: OSLC/oslc4net
[0.7.0-preview.3] - 2026-03-14
Security
This release does not contain security updates.
Added
RootServicesHelperwas added to assist with processing OSLC Root Services documents. It can help with direct lookups (as long as your URI ends with/rootservicesor/rootservices.xml), can look up a standard/.well-known/oslc/rootservices.xmllocation, or fall back to appending/rootservicesfor legacy systems.- ⚡️Samples for IBM Jazz ERM (aka Doors NG), ETM, and EWM were migrated to .NET 10 and tested against Jazz.net. You can run them yourself using
OSLC4Net_SDK\Examples\scripts\test-jazz_net.ps1.
Changed
OSLC4Net.Corerequires .NET 10 to be able to use the[Experimental]annotation.OSLC4Net.Clientrequires .NET 10.- ❗️
SignedByteNode(which corresponds toxsd:byte) is now parsed as C#sbyte(signed byte) instead ofbyte.
Deprecated
- Getters and setters for the RDF type (both
GetRdfTypes()andGetTypes())
are deprecated in favor of the.Typesproperty.
Removed
This release does not remove any features.
Fixed
- Properties backed by URI collections are now reflected in OSLC shapes correctly (thanks to @ZUOXIANGE)
OslcQueryResultnow handles cases where RDF graph parsing from query responses produces malformed URI nodes. Instead of throwingArgumentNullException, methods likeGetMembersUrls(),GetMembers<T>(),GetNextPageUrl(), andGetTotalCount()now gracefully return empty results or null values.
Changes since preview.2
- Fix CS0168 compiler warning in JazzFormAuthClient by @google-labs-jules[bot] in #528
- Fix compiler warnings in SortedUriSet.cs by @google-labs-jules[bot] in #532
- Refactor HandleExtendedPropertyValue to use modern C# pattern matching by @google-labs-jules[bot] in #533
- Fix CS0618 warning: Replace obsolete DCTERMS_NAMESPACE by @google-labs-jules[bot] in #541
- Fix MA0048 (File name must match type name) warnings by @google-labs-jules[bot] in #555
- build: Aspire healthcheck for RefImpl by @berezovskyi in #559
- Fix CS8604 warnings in enum extensions by @google-labs-jules[bot] in #564
- Fix MA0011 warnings: Use explicit CultureInfo/StringComparison by @berezovskyi in #574
- docs: update the code docs in line with the oslc-specs & lyo by @berezovskyi in #563
- Fix obsolete GetRdfTypes usage in samples by @berezovskyi in #608
- refactor: replace Swashbuckle with Microsoft.AspNetCore.OpenApi by @berezovskyi in #648
- build: switch to .NET 10 containers for the examples & CI by @berezovskyi in #649
Full Changelog: v0.7.0-preview.2...v0.7.0-preview.3
[0.7.0-preview.2] 2025-12-07
What's Changed
- fix: ensure samples fail if there is any error by @berezovskyi in #490
Full Changelog: v0.7.0-preview.1...v0.7.0-preview.2
[0.7.0-preview.1] - 2025-12-06
Security
This release does not contain security updates.
Added
- ⚡️Samples for IBM Jazz ERM (aka Doors NG), ETM, and EWM were migrated to .NET 10 and tested against Jazz.net. You can run them yourself using
OSLC4Net_SDK\Examples\scripts\test-jazz_net.ps1. RootServicesHelperwas added to assist with processing OSLC Root Services documents. It can help with direct lookups (as long as your URI ends with/rootservicesor/rootservices.xml), can look up a standard/.well-known/oslc/rootservices.xmllocation, or fall back to appending/rootservicesfor legacy systems.
Changed
OSLC4Net.Corerequires .NET 10 to be able to use the[Experimental]annotation.OSLC4Net.Clientrequires .NET 10.
Deprecated
This release does not introduce deprecations.
Removed
This release does not remove any features.
Fixed
- Properties backed by URI collections are now reflected in OSLC shapes correctly (thanks to @ZUOXIANGE)
OslcQueryResultnow handles cases where RDF graph parsing from query responses produces malformed URI nodes. Instead of throwingArgumentNullException, methods likeGetMembersUrls(),GetMembers<T>(),GetNextPageUrl(), andGetTotalCount()now gracefully return empty results or null values.
[0.6.3] - 2025-11-15
Security
This release does not contain security updates.
Added
This release does not contain new features.
Changed
- StringValue interface is now publicly accessible and inherits from the Value interface (#422)
Deprecated
- 👉 Support for .NET 8 and 9 is deprecated. Going forward, only .NET 10 will be supported.
Removed
This release does not remove any features.
Fixed
- StringValue interface is now publicly accessible and inherits from the Value interface (#422)
[0.6.2] - 2025-08-13
Security
This release does not contain security updates.
Added
This release does not contain new features.
Changed
- RDF/XML output is now produced using
PrettyRdfXmlWriterinstead of
RdfXmlWriter. Pretty-printing is still configurable with
OslcOutputFormatConfig.
Deprecated
This release does not introduce deprecations.
Removed
This release does not remove any features.
Fixed
This release does not contain bug fixes.
[0.6.1] - 2025-08-13
Security
This release does not contain security updates.
Added
- The
QNameclass now has propertiesNamespaceUri,LocalPart, and
Prefix. - ⚡️
OslcOutputFormatConfigconfigure RDF output formatting (pretty-printing, DTD, JSON-LD mode)
Changed
This release does not contain other significant changes.
Deprecated
- 👉
QNamegettersGetNamespaceURI,GetLocalPart, andGetPrefixare
deprecated in favor of C# properties and are scheduled for removal in the
next release.
Removed
This release does not remove any features.
Fixed
This release does not contain bug fixes.
[0.6.0] - 2025-07-06
Security
This release does not contain security updates.
Added
- ⚡️
TextOutputFormatter/TextInputFormatterimplementations for OSLC RDF, enabling the use of OSLC4Net in ASP.NET Core API servers- 👉 see sample server under
OSLC4Net_SDK/Examples/OSLC4NetExamples.Server.NetCoreApi
- 👉 see sample server under
- ⚡️ JSON-LD 1.1 support
- Initial support for RDFS inference during deserialization was added.
- 👉 Docs are now published to https://oslc4net.github.io/
Changed
- ❗️ Major changes to exceptions from Core and Client packages.
- Getters were replaced with read-only properties
- I18n resource strings were removed along with the corresponding
constructors. - Error codes
OSLC001..OSLC014from Core were renamed to
OSLC1001..OSLC1014, while
codesOSLCC001..OSLCC004from Client were renamed into
OSLC2001..OSLC2014. All OSLC4Net error codes now have 4 digits for
consistency.
- ❗️ DotNetRdfHelper is no longer static
Deprecated
- 👉
OSLC4Net.Client.Oslc.Resources.ChangeRequest.GetRdfTypesand all similar
methods. UseOSLC4Net.Core.Model.IExtendedResource.GetTypesinstead or,
better yet,OSLC4Net.Core.Model.AbstractResourceRecord.Types.
Removed
- ❗️ Legacy OSLC JSON support was removed to reduce maintenance overhead now that
the JSON-LD support is added. - I18n resource strings were removed along with the corresponding
constructors on exceptions. Also,MessageExtractorhelpers were removed. - log4net dependency - all logging is now done via standard
ILogger
abstraction. - ServiceProviderRegistryURIs - oslc4net will no longer try to guess/compute the
SP catalog URI.
Fixed
OSLC4Net.Core.Model.IExtendedResource.GetTypesis now annotated properly and
should be populated correctly on deserialization.
[0.6.0-preview.1] - 2025-05-25
Security
This release does not contain security updates.
Added
- ⚡️ JSON-LD 1.1 support
- Initial support for RDFS inference during deserialization was added.
- Docs are now published to https://oslc4net.github.io/
Changed
This release does not contain other significant changes.
Deprecated
- 👉
OSLC4Net.Client.Oslc.Resources.ChangeRequest.GetRdfTypesand all similar
methods. UseOSLC4Net.Core.Model.IExtendedResource.GetTypesinstead or,
better yet,OSLC4Net.Core.Model.AbstractResourceRecord.Types.
Removed
- ❗️Legacy OSLC JSON support was removed to reduce maintenance overhead now that
the JSON-LD support is added.
Fixed
OSLC4Net.Core.Model.IExtendedResource.GetTypesis now annotated properly and
should be populated correctly on deserialization.
[0.5.0] - 2025-04-13
Security
This release does not contain security updates.
Added
- ⚡️ CI integration tests against OSLC RefImpl CM/RM based on NET Aspire
- ⚡️ Ability to define OSLC resource POCOs using C# properties instead of
Java-style getters/setters. - ⚡️ Support for the OSLC Requirements Management 2.1 domain with property-based code.
- Added full vocabulary definitions for FOAF, DC Terms, DC Elements, LDP, PROV-O, QUDT, SKOS.
- Redirect loop protection for
OslcClient(max 20 redirects as in
Firefox/Blink/WebKit) - Follow redirects on more responses statuses (was: 301, became: 301, 302, 307,
308, and in case of GET requests, 303 too) - ❗️
OslcResponsecan now expose multiple response resources, theGraphand,
in case of error, theoslc:Errorresource.
Changed
- dotNetRDF dependency was updated to v3.3.1
- ❗️
OslcClientwas updated to support async operations consistently
Deprecated
- Most non-async methods in client classes.
- Further OSLC JSON deprecations. Clients should rely on RDF instead (RDF/XML,
Turtle) - Old OSLC Requirements Management classes that were hand-rolled and used Java code style.
Removed
- ❗️ Multiple non-async methods in
OslcClient - ❗️ A property exposing
OslcRestClientinServiceProviderRegistryClient
Fixed
- Minor bug fixes to pass acceptance tests against OSLC RefImpl Change
Management server.
[0.5.0-preview.1] - 2025-04-13
Security
This release does not contain security updates.
Added
- ⚡️ CI integration tests against OSLC RefImpl based on NET Aspire
- Redirect loop protection for
OslcClient(max 20 redirects as in Firefox/Blink/WebKit) - Follow redirects on more responses statuses (was: 301, became: 301, 302, 307, 308, and in case of GET requests, 303 too)
- ❗️
OslcResponsecan now expose multiple response resources, theGraphand, in case of error, theoslc:Errorresource.
Changed
- dotNetRDF dependency was updated to v3.3.1
- ❗️
OslcClientwas updated to consistently support async operations
Deprecated
- Most non-async methods in client classes.
- Further OSLC JSON deprecations. Clients should rely on RDF instead (RDF/XML, Turtle)
Removed
- ❗️ Multiple non-async methods in
OslcClient - ❗️ A property exposing
OslcRestClientinServiceProviderRegistryClient
Fixed
- Minor bug fixes to pass acceptance tests against OSLC RefImpl Change Management server.