Release 2.7.0: Better date support, better performance over SPARQL endpoints, and internal fixes

Wednesday, May 24, 2023

On this page

    Today, we released a new minor update, which brings exciting new features, performance improvements, and bug fixes. Below, you can find an overview of the main changes.

    📅 Durations, Dates, and Times in Filters

    The SPARQL 1.1 specification prescribes only a very limited set of operations that can be done over literals with datatype xsd:dateTime. For example, it is not possible to add/subtract durations, compute differences between times, and so on. Recently, a suggestion was made to extend the number of operations that can be done over xsd:dateTime's and related datatypes. This Comunica release implements this proposal, which means that queries such as the following are now possible:

    PREFIX xsd: <>
    SELECT ?id ?lt ?gt WHERE {
    	VALUES (?id ?l ?r) {
    		(1 "PT1H"^^xsd:dayTimeDuration "PT63M"^^xsd:dayTimeDuration)
    		(2 "PT3S"^^xsd:dayTimeDuration "PT2M"^^xsd:dayTimeDuration)
    		(3 "-PT1H1M"^^xsd:dayTimeDuration "-PT62M"^^xsd:dayTimeDuration)
    		(4 "PT0S"^^xsd:dayTimeDuration "-PT0.1S"^^xsd:dayTimeDuration)
    	BIND(?l < ?r AS ?lt)
    	BIND(?l > ?r AS ?gt)

    This functionality was implemented by @jitsedesmet.

    🚀 Improved performance over SPARQL endpoints

    Comunica aims to enable query execution over different types of query interfaces, which includes SPARQL endpoints. While participating in a recent workshop on federated querying over SPARQL endpoints, we encountered several performance issues that were caused by implementation bugs when querying over multiple SPARQL endpoints. With this update, these performance issues have been resolved, and many queries that would either timeout or crash due to memory issues now run efficiently.

    This functionality was implemented by @surilindur, @constraintAutomaton, and @rubensworks.

    🗃️ Refactored internal metadata

    As Comunica follows a hypermedia-driven query execution model to allow source capabilities to be detected and exploited on-the-fly, there is a need for keeping track of the metadata of such sources.

    To enable more adaptive and efficient query execution in the future, we have refactored this internal metadata so that it can be updated during query execution. This allows operators to adaptively act upon newly discovered information in sources.

    More details on these metadata changes can be read in the documentation.

    Full changelog

    As always, if you want to learn more about these changes, check out the full changelog.