[core] SenML and link-format in RDF (was: Re: Designs to resolve streaming issues in SenML)

Christian Amsüss <c.amsuess@energyharvesting.at> Tue, 26 January 2016 16:40 UTC

Return-Path: <c.amsuess@energyharvesting.at>
X-Original-To: core@ietfa.amsl.com
Delivered-To: core@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id DF73F1B30BD for <core@ietfa.amsl.com>; Tue, 26 Jan 2016 08:40:42 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.6
X-Spam-Level:
X-Spam-Status: No, score=-1.6 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, MIME_8BIT_HEADER=0.3] autolearn=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id NQWXRB6vhqhS for <core@ietfa.amsl.com>; Tue, 26 Jan 2016 08:40:40 -0800 (PST)
Received: from prometheus.amsuess.com (prometheus.amsuess.com [5.9.147.112]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 749DD1B30AE for <core@ietf.org>; Tue, 26 Jan 2016 08:40:40 -0800 (PST)
Received: from poseidon-mailhub.amsuess.com (unknown [IPv6:2a02:b18:c13b:8001:a800:ff:fede:b1bd]) by prometheus.amsuess.com (Postfix) with ESMTPS id B2EDE419DE; Tue, 26 Jan 2016 17:40:38 +0100 (CET)
Received: from poseidon-mailbox.amsuess.com (poseidon-mailbox.amsuess.com [10.13.13.231]) by poseidon-mailhub.amsuess.com (Postfix) with ESMTP id 1B7712D; Tue, 26 Jan 2016 17:40:37 +0100 (CET)
Received: from hephaistos.amsuess.com (hephaistos.amsuess.com [10.13.13.129]) by poseidon-mailbox.amsuess.com (Postfix) with ESMTPSA id E1F5455; Tue, 26 Jan 2016 17:40:36 +0100 (CET)
Received: (nullmailer pid 32676 invoked by uid 1000); Tue, 26 Jan 2016 16:40:36 -0000
Date: Tue, 26 Jan 2016 17:40:36 +0100
From: Christian Amsüss <c.amsuess@energyharvesting.at>
To: Michael Koster <michaeljohnkoster@gmail.com>
Message-ID: <20160126164036.GE7789@hephaistos.amsuess.com>
References: <20160118110500.GA7789@hephaistos.amsuess.com> <1B2E05E6-1FA3-4AC4-95ED-E6045B6F94E0@gmail.com> <20160118165811.GF7454@hephaistos.amsuess.com> <EDC3E5A7-1577-4E03-8376-8766A1A65064@gmail.com> <20160126120126.GD7789@hephaistos.amsuess.com> <E9C89242-C1D4-4426-B018-566FA2FC35BC@gmail.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg="pgp-sha256"; protocol="application/pgp-signature"; boundary="3XA6nns4nE4KvaS/"
Content-Disposition: inline
In-Reply-To: <E9C89242-C1D4-4426-B018-566FA2FC35BC@gmail.com>
User-Agent: Mutt/1.5.24 (2015-08-30)
Archived-At: <http://mailarchive.ietf.org/arch/msg/core/gIWOWEnezGXt4kTxg48YWwhtliI>
Cc: "Cullen Jennings (fluffy)" <fluffy@cisco.com>, core <core@ietf.org>
Subject: [core] SenML and link-format in RDF (was: Re: Designs to resolve streaming issues in SenML)
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/core/>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 26 Jan 2016 16:40:43 -0000

Hi Michael,

On Tue, Jan 26, 2016 at 08:28:31PM +0700, Michael Koster wrote:
> {
>     "@context" : "http://thingschema.org",
>     "bn":"/3303/1/",
>     "i":[
>     {"n":"5700","v":"31.3","u":"Cel"}, ...
>     ],
>     "l":[
>     {"href":"","rel":"self","rt":"temperature","u":"Cel"},
>     ...

thanks for the example, that's a good starting point to work with.

> And here are semantic triples generated from the SenML, having used
> http://json-ld.org/playground/ <http://json-ld.org/playground/> to
> process the elements into RDF subjects, properties, and values and
> serialize into N-quads.
> 
> _:b0 <http://thingschema.org/schema#hasItem> _:b1 .
> _:b0 <http://thingschema.org/schema#baseName> "/3303/1/" .
> _:b1 <http://thingschema.org/schema#resourceName> "5700" .
> _:b1 <http://thingschema.org/schema#unitsOfMeasure> "Cel" .
> _:b1 <http://thingschema.org/schema#value> "31.3" .
> _:b10 <http://thingschema.org/schema#href> "5700" .
> _:b10 <http://thingschema.org/schema#resourceType> "currentValue" .
> _:b10 <http://thingschema.org/schema#unitsOfMeasure> "Cel" .

These are quads that contain the information of the SenML, but not
really in an RDFish way.

RDF is all about using URIs to describe things. What I'd expect of such
a conversion when done right would be N-triples like

_:b1 <http://thingschema.org/schema#about> </3303/1/5700> .
_:b1 <http://thingschema.org/schema#value> "31.3"^^xsd:float .
_:b1 <http://thingschema.org/schema#unitsOfMeasure> "Cel" .
</3303/1/5700> <http://thingschema.org/schema#resourceType> "currentValue" .
</3303/1/5700> <http://thingschema.org/schema#unitsOfMeasure> "Cel" .

where statements are made about actual resources. _b:1 would still be a
blank node, because it reflects a single description of the resource's
state (were it a time series, the necessity for that would be more
obvious). A converter might want to even emit a statement like

_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://thingschema.org/schema#Item> .

to make that clear.

The output produced by the thingschema.org still reads a little like a
combination of text fragments; to compare it with relational databases,
it looks to me as if there were no foreign keys in use yet, and
everything were stored in text fields. The output is RDF, but it can't
effectively be used as RDF yet.

> I think this result is quite useful to be able to use the information
> in the context of fully qualified references and nodes of triples that
> describe the original SenML.

I do not understand what you mean by this, could you elaborate? AFAICT,
were I fed the N-quad output from above, I couldn't even establish any
relationship between the "/3303/1/" URI fragment and the "5700", let
alone use that in a query about </3303/1/5700>.


There are things brewing at W3C's Web of Things initiative[1], there has
for some time been work on semantically connected IoT devices[2], and I
am confident that RDF metadata are the way to go.

But both with a SenML that looks anything like the drafts so far and
with draft-ietf-core-links-json, I think that JSON-LD does not have what
it takes to produce the meaning of the respective JSON representations
for the semantic web.

I've long ago asked on this list about a canonical RDF representation of
a link-format resource. Back then, there was nothing, and I had only a
rough idea of what I'd need as well. I'd be all in for going ahead here
and sketching up what a generic link-format document would look like in
an RDF representation, and possibly SenML as well; that should be a
separate discussion, though, and not deeply interfere with the SenML
process itself. I could sketch up some parts that've been brewing with
me and are partially implemented as well -- would that be suitable for
this list?


Best regards
Christian

[1] http://www.w3.org/WoT/
[2] https://iotdb.org/

-- 
Christian Amsüss                      | Energy Harvesting Solutions GmbH
founder, system architect             | headquarter:
mailto:c.amsuess@energyharvesting.at  | Arbeitergasse 15, A-4400 Steyr
tel:+43-664-97-90-6-39                | http://www.energyharvesting.at/
                                      | ATU68476614