Well,

I think I have a pretty clear idea how I would do this. We would end up
using a registery like for custom functions or datatypes.
That registry would contain an ordered list of SPARQL operator handlers,
pre-filled by one for handling XSD datatypes.

I am currently requesting the right to fill the Apache individual
contributor license agreement.

What would be the timeline if we wanted this shipped in the next release?

Best,
Maxime

Le mar. 3 avr. 2018 à 15:30, ajs6f <aj...@apache.org> a écrit :

> I agree. I can imagine plenty of use cases for such a powerful pair of
> extension points.
>
> Maxime, how can we help you attack that work? Is there a design that is
> already clear to you? Are there any blockers we can help remove?
>
> ajs6f
>
> > On Mar 28, 2018, at 5:08 AM, Rob Vesse <rve...@dotnetrdf.org> wrote:
> >
> > I think work towards Option 2 would be the most valuable to the community
> >
> >
> >
> > The SPARQL specification allows for the overloading of any
> operator/expression where the spec currently defines the evaluation to be
> an error so extending operators is a natural and valid extension point to
> provide
> >
> >
> >
> > The Terms of Use for UCUM would probably need us to obtain a licensing
> assessment from Apache Legal as it is a non-standard OSS license even if
> the code that implements it is under BSD (which is fine from an Apache
> perspective).  Therefore having a well defined extension mechanism and then
> having UCUM support live outside Apache Jena that as an extension
> implementation maintained by yourself would be the easiest approach
> >
> >
> >
> > Rob
> >
> >
> >
> > From: Maxime Lefrançois <maxime.lefranc...@emse.fr>
> > Reply-To: <dev@jena.apache.org>
> > Date: Wednesday, 28 March 2018 at 09:29
> > To: <dev@jena.apache.org>
> > Subject: Re: Contribution proposal for Jena: support of a datatype for
> quantity values
> >
> >
> >
> > Dear all,
> >
> >
> >
> > Happy to see you are interested the UCUM datatypes !
> >
> >
> >
> > Ok so let's dive in the technical details.
> >
> >
> >
> > # Compare Jena 3.6.0 and Jena 3.6.0-ucum
> >
> >
> >
> >
> https://github.com/apache/jena/compare/master...OpenSensingCity:jena-3.6.0-ucum
> >
> >
> >
> > # Modules, dependencies, licences
> >
> >
> >
> > Two modules forked so far: jena-core and jena-arq.
> >
> > One dependency added to jena-core (after a minor change I made today):
> >
> >
> >
> > systems.uom:systems-ucum-java8:0.7.2
> >
> > -> BSD license of systems-uom,
> >
> >     and license of UCUM http://unitsofmeasure.org/trac/wiki/TermsOfUse
> >
> >
> >
> > --> this use implementation of JSR 363 indeed - Units of Measurement API
> >
> > (see attached for the transitive dependencies, all from
> https://github.com/unitsofmeasurement )
> >
> >
> >
> > # External module ?
> >
> >
> >
> > I would have been happy to develop a separate extension of Jena for the
> UCUM datatypes.
> >
> > One of the main reasons why this is not possible was pointed out by Andy:
> >
> > I had to add a new value space VSPACE_QUANTITY to overload the SPARQL
> operators '<>=' and arithmetic functions '+-*/'.
> >
> >
> >
> > Indeed, there are two parts: the necessary extensions for operators, and
> the units themselves.
> >
> >
> >
> > We could choose some other unit system than UCUM, but UCUM is very
> comprehensive and has different implementations in different programming
> languages. It would be possible to implement UCUM datatypes in other
> RDF-SPARQL engines.
> >
> >
> >
> > # possible directions
> >
> >
> >
> > I see three main possible directions of work there:
> >
> >
> >
> > 1. work on the proposal as and potentially integrate it completely
> >
> > 2. work on jena-core and jena-arq to make the definition of new
> datatypes and the overloading of operators as easy as the definition of new
> custom functions --> so that I can easily implement UCUM datatypes as an
> extension (and not a fork)
> >
> > 3. add VSPACE_QUANTITY value space and NodeValueQuantity in jena-arq,
> and externalize the support for the UCUM systems of unit in an external
> module
> >
> >
> >
> > Best,
> >
> > Maxime
> >
> >
> >
> > Le mar. 27 mars 2018 à 17:16, Andy Seaborne <a...@apache.org> a écrit :
> >
> > Extending the operators for SPARQL is a new value space VSPACE_QUANTITY.
> >
> > See (comparison):
> >
> >
> https://github.com/OpenSensingCity/jena-ucum/blob/jena-3.6.0-ucum/jena-arq/src/main/java/org/apache/jena/sparql/expr/NodeValue.java#L566
> >
> > and (multiply)
> >
> >
> https://github.com/OpenSensingCity/jena-ucum/blob/jena-3.6.0-ucum/jena-arq/src/main/java/org/apache/jena/sparql/expr/nodevalue/NodeValueOps.java#L283
> >
> > with a new NodeValueQuantity for javax.measure.Quantity
> >
> > I'm seeing this a "one dimensional units" - a quantity and a unit.
> >
> > Even then, there are two part - the necessary extensions for operators
> > and the units themselves to allow for other unit systems (?).
> >
> > There are new dependencies in jena-arq and jena-core.
> >
> > http://unitsofmeasurement.github.io/
> > JSR 363 - Units of Measurement API
> > BSD-license
> >
> > and an old version of something is on central:
> >
> > http://central.maven.org/maven2/javax/measure/unit-api/1.0
> >
> > if that's the right thing.
> >
> > ---
> >
> > Maxime - what are the dependencies for this contribution and for which
> > pieces are they needed?
> >
> >     Andy
> >
> > On 27/03/18 15:49, ajs6f wrote:
> >> Bruno raises an interesting question-- would this contribution have any
> effect (or should it) on jena-spatial? Would it be either necessary or if
> not, appropriate to integrate there? (I'm particularly interested in this
> because it might help decide between core and an extension.)
> >>
> >>
> >> ajs6f
> >>
> >>> On Mar 26, 2018, at 5:40 PM, Bruno P. Kinoshita <ki...@apache.org>
> wrote:
> >>>
> >>> Hi Maxime,
> >>> Don't know whether it would be best as part of jena core or in an
> extension, but sounds very interesting! Will let others comment on this.
> >>> At work, one item in my backlog is to replace jscience by jsr363 -
> Units of Measurement
> >>> |
> >>> |
> >>> |
> >>> |   |    |
> >>>
> >>>   |
> >>>
> >>>  |
> >>> |
> >>> |   |
> >>> Units of Measurement
> >>>
> >>> Units of Measurement provides a set of APIs and services for handling
> units and quantities.
> >>>  |   |
> >>>
> >>>  |
> >>>
> >>>  |
> >>>
> >>>
> >>> We use it for weather forecast and GIS, with things like wind speed,
> rain amount, etc.
> >>> I think another GIS library that we use did the switch as well (some
> OGC lib I think).
> >>> Perhaps it would be nice to consider taking a look at their api for
> compatibility with other systems.
> >>> CheersBruno
> >>>
> >>> Sent from Yahoo Mail on Android
> >>>
> >>>  On Tue, 27 Mar 2018 at 2:07, Maxime Lefrançois<
> maxime.lefranc...@emse.fr> wrote:   Dear all,
> >>>
> >>> I am Associate Professor at MINES Saint-Étienne, France, working on
> >>> Semantic Web and Linked Data. I'd like to let you know about our
> >>> project *Custom
> >>> Datatypes for Quantity Values*[1], that leverages the Unified Code of
> Units
> >>> of Measures, a code system intended to include all units of measures
> being
> >>> contemporarily used in international science, engineering, and
> business.
> >>> Using our UCUM Datatypes, one can encode and query quantity values in a
> >>> lightweight manner:
> >>>
> >>> PREFIX cdt: <http://w3id.org/lindt/custom_datatypes#>
> >>> PREFIX ex: <http://example.org/>
> >>>
> >>> SELECT ?value1 ?value2 ?result
> >>> WHERE{
> >>>   VALUES ( ?value1 ?value2 ) {
> >>>     ( "1.0 m/s"^^cdt:speed "2 s"^^cdt:time )
> >>>   }
> >>>   BIND( ?value1 * ?value2 AS ?result )
> >>> }
> >>>
> >>> Results in
> >>>
> >>> ----------------------------------------------------------------------
> >>> | value1              | value2              | result              |
> >>> ======================================================================
> >>> | "1.0 m/s"^^cdt:speed | "2 s"^^cdt:time      | "2.0 m"^^cdt:length  |
> >>>
> >>> See our demonstration online [2].
> >>> It uses *a fork of Jena where we implemented UCUM datatypes* [3] (in
> >>> jena-core and jena-arq, with several unit tests) our implementation
> uses
> >>> the recent JSR 385, Units of Measurement API 2.0, and the UCUM
> extension
> >>> [4].
> >>>
> >>> This is not the first project I develop into/using Jena.
> >>> - I forked it to Supporting Arbitrary Custom Datatypes in RDF and
> SPARQL
> >>> fetching some Javascript definition at the URI of the datatype [5]
> >>> - I develop SPARQL-Generate, an extension of SPARQL implemented on ARQ
> to
> >>> generate RDF from web documents in XML, JSON, CSV, HTML, CBOR, and
> plain
> >>> text with regular expressions  [6]
> >>>
> >>>
> >>> If you agree we me that supporting UCUM datatypes would be a nice
> addition
> >>> to Apache Jena and a nice contribution to the Semantic Web community, I
> >>> would be willing to help to integrate our contribution to other modules
> >>> (with jena-tdb, ... ), and help maintaining it in the future.
> >>>
> >>> Best regards,
> >>> Maxime Lefrançois,
> >>> Associate Professor, MINES Saint-Étienne
> >>>
> >>> [1] - http://w3id.org/lindt/custom_datatypes#
> >>> [2] - http://w3id.org/lindt/playground.html?example=05-Multiply
> >>> [3] - http://w3id.org/lindt/custom_datatypes#implementation
> >>> [4] -
> >>>
> https://github.com/unitsofmeasurement/uom-systems/tree/master/ucum-java8
> >>> [5] - https://ci.mines-stetienne.fr/lindt/spec.html
> >>> [6] - https://ci.mines-stetienne.fr/sparql-generate/
> >>
> >
> >
> >
>
>

Reply via email to