It has N-Quads reader and writer, so write the RdfDataset as N-Quads to bytes or a string, and parse that. Not ideal at scale but it works; JSON-LD isn't streaming anyway.

    Andy

https://issues.apache.org/jira/browse/JENA-1948



On 27/07/2021 06:25, Philipp Leeb wrote:
Didn't see any way to convert titanium-Dataset to jena-Dataset.

-----Ursprüngliche Nachricht-----
Von: Andy Seaborne <[email protected]>
Gesendet: Sonntag, 25. Juli 2021 18:58
An: [email protected]
Betreff: Re: AW: AW: AW: Storing ThingDescription in Dataset



On 25/07/2021 12:47, Philipp Leeb wrote:
Doesn't work either.

What doesn't work?

Is there any other way of how to add my TD in JSOn-LD into my dataset?

Produce RDF - for JSON-LD 1.1, find a tool to convert it to any other RDF 
syntax. The JSON-LD playground will do that.

If it can do file to file, any implementation language will do. Exec a process 
to do the conversion.

Or

http://rdf.greggkellogg.net/distiller

which offers conversion as a service.

----

There is a JIRA waiting for a contribution:

https://issues.apache.org/jira/browse/JENA-1948

      Andy




-----Ursprüngliche Nachricht-----
Von: Andy Seaborne <[email protected]>
Gesendet: Sonntag, 25. Juli 2021 13:17
An: [email protected]
Betreff: Re: AW: AW: Storing ThingDescription in Dataset

Jena prints an error.

2:12:36 ERROR riot            :: invalid term definition: 1.1


The playgound says it's JSON-LD 1.1 which is not (yet) supported by 
jsonld-java/jsonld-java/. I don't know if it is really using any 1.1 features 
but the @context requires it.

Try
https://github.com/filip26/titanium-json-ld
(I've not used it)

to convert to RDF and read the RDF.

       Andy

On 25/07/2021 12:00, Philipp Leeb wrote:
Hi Andy,

this is the JSON-LD:
{"id":"urn:dev:ops:32473-wotdirectory-1234","title":"Directory
Service","properties":{"Temperature":{"description":"Temperature","fo
r
ms":[{"href":"http://localhost:8082/urn:dev:ops:32473-wotdirectory-12
3
4/properties/Temperature","op":["readproperty"],"contentType":"applic
a
tion/json","htv:methodName":"GET"},{"href":"http://localhost:8082/urn:
dev:ops:32473-wotdirectory-1234/properties/Temperature/observable","o
p
":["observeproperty"],"subprotocol":"longpoll","contentType":"applica
t
ion/json"}],"type":"number","observable":true,"readOnly":true,"@type":
"saref:Temperature"},"databaseRunning":{"description":"is database
running","forms":[{"href":"http://localhost:8082/urn:dev:ops:32473-wo
t
directory-1234/properties/databaseRunning","op":["readproperty"],"con
t
entType":"application/json","htv:methodName":"GET"},{"href":"http://l
o
calhost:8082/urn:dev:ops:32473-wotdirectory-1234/properties/databaseR
u
nning/observable","op":["observeproperty"],"subprotocol":"longpoll","
c
ontentType":"application/json"}],"type":"boolean","observable":true,"
r
eadOnly":true,"@type":"saref:OnOffState"},"status":{"forms":[{"href":"
http://localhost:8082/urn:dev:ops:32473-wotdirectory-1234/properties/
s
tatus","op":["readproperty","writeproperty"],"contentType":"applicati
o
n/json"}],"type":"string","@type":"saref:OnOffState"}},"actions":{"ad
d NewResource":{"description":"Allows to register a new
resource.","forms":[{"href":"http://localhost:8082/urn:dev:ops:32473-
w
otdirectory-1234/actions/addNewResource{?resource}","op":["invokeacti
o
n"],"contentType":"application/json","htv:methodName":"POST"}],"uriVa
r
iables":{"resource":{"type":"string"}},"input":{"type":"object"},"out
p
ut":{"type":"string"}}},"forms":[{"href":"http://localhost:8082/urn:d
e
v:ops:32473-wotdirectory-1234/all/properties","op":["readallproperty"
,
"readmultipleproperty"],"contentType":"application/json"}],"security":
["basic_sc"],"@type":"saref:Device","@context":["https://www.w3.org/2
0
19/wot/td/v1",{"saref":"https://w3id.org/saref#","om":"http://www.wur
v
oc.org/vocabularies/om-1.8/","ssn":"http://www.w3.org/ns/ssn/"}],"sec
u rityDefinitions":{"basic_sc":{"scheme":"basic","in":"header"}}}

This ist he output of JsonLdProcessor.toRdf:
{
     "@default" : [ {
       "subject" : {
         "type" : "IRI",
         "value" : "urn:dev:ops:32473-wotdirectory-1234"
       },
       "predicate" : {
         "type" : "IRI",
         "value" : "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";
       },
       "object" : {
         "type" : "IRI",
         "value" : "https://w3id.org/saref#Device";
       }
     }, {
       "subject" : {
         "type" : "IRI",
         "value" : "urn:dev:ops:32473-wotdirectory-1234"
       },
       "predicate" : {
         "type" : "IRI",
         "value" : "https://www.w3.org/2019/wot/td#hasActionAffordance";
       },
       "object" : {
         "type" : "blank node",
         "value" : "_:b0"
       }
     }, {
       "subject" : {
         "type" : "IRI",
         "value" : "urn:dev:ops:32473-wotdirectory-1234"
       },
       "predicate" : {
         "type" : "IRI",
         "value" : "https://www.w3.org/2019/wot/td#hasForm";
       },
       "object" : {
         "type" : "blank node",
         "value" : "_:b5"
       }
     }, {
       "subject" : {
         "type" : "IRI",
         "value" : "urn:dev:ops:32473-wotdirectory-1234"
       },
       "predicate" : {
         "type" : "IRI",
         "value" : "https://www.w3.org/2019/wot/td#hasPropertyAffordance";
       },
       "object" : {
         "type" : "blank node",
         "value" : "_:b6"
       }
     }, {
       "subject" : {
         "type" : "IRI",
         "value" : "urn:dev:ops:32473-wotdirectory-1234"
       },
       "predicate" : {
         "type" : "IRI",
         "value" : "https://www.w3.org/2019/wot/td#hasPropertyAffordance";
       },
       "object" : {
         "type" : "blank node",
         "value" : "_:b9"
       }
     }, {
       "subject" : {
         "type" : "IRI",
         "value" : "urn:dev:ops:32473-wotdirectory-1234"
       },
       "predicate" : {
         "type" : "IRI",
         "value" : "https://www.w3.org/2019/wot/td#hasPropertyAffordance";
       },
       "object" : {
         "type" : "blank node",
         "value" : "_:b12"
       }
     }, {
       "subject" : {
         "type" : "IRI",
         "value" : "urn:dev:ops:32473-wotdirectory-1234"
       },
       "predicate" : {
         "type" : "IRI",
         "value" : "https://www.w3.org/2019/wot/td#securityDefinitions";
       },
       "object" : {
         "type" : "blank node",
         "value" : "_:b14"
       }
     }, {
       "subject" : {
         "type" : "IRI",
         "value" : "urn:dev:ops:32473-wotdirectory-1234"
       },
       "predicate" : {
         "type" : "IRI",
         "value" : "https://www.w3.org/2019/wot/td#title";
       },
       "object" : {
         "type" : "literal",
         "value" : "Directory Service",
         "datatype" : "http://www.w3.org/2001/XMLSchema#string";
       }
     }, {
       "subject" : {
         "type" : "blank node",
         "value" : "_:b0"
       },
       "predicate" : {
         "type" : "IRI",
         "value" : "https://www.w3.org/2019/wot/td#description";
       },
       "object" : {
         "type" : "literal",
         "value" : "Allows to register a new resource.",
         "datatype" : "http://www.w3.org/2001/XMLSchema#string";
       }
     }, {
       "subject" : {
         "type" : "blank node",
         "value" : "_:b0"
       },
       "predicate" : {
         "type" : "IRI",
         "value" : "https://www.w3.org/2019/wot/td#hasForm";
       },
       "object" : {
         "type" : "blank node",
         "value" : "_:b1"
       }
     }, {
       "subject" : {
         "type" : "blank node",
         "value" : "_:b0"
       },
       "predicate" : {
         "type" : "IRI",
         "value" : "https://www.w3.org/2019/wot/td#hasInputSchema";
       },
       "object" : {
         "type" : "blank node",
         "value" : "_:b2"
       }
     }, {
       "subject" : {
         "type" : "blank node",
         "value" : "_:b0"
       },
       "predicate" : {
         "type" : "IRI",
         "value" : "https://www.w3.org/2019/wot/td#hasOutputSchema";
       },
       "object" : {
         "type" : "blank node",
         "value" : "_:b3"
       }
     }, {
       "subject" : {
         "type" : "blank node",
         "value" : "_:b0"
       },
       "predicate" : {
         "type" : "IRI",
         "value" : "https://www.w3.org/2019/wot/td#hasUriTemplateVariable";
       },
       "object" : {
         "type" : "blank node",
         "value" : "_:b4"
       }
     }, {
       "subject" : {
         "type" : "blank node",
         "value" : "_:b1"
       },
       "predicate" : {
         "type" : "IRI",
         "value" : "htv:methodName"
       },
       "object" : {
         "type" : "literal",
         "value" : "POST",
         "datatype" : "http://www.w3.org/2001/XMLSchema#string";
       }
     }, {
       "subject" : {
         "type" : "blank node",
         "value" : "_:b6"
       },
       "predicate" : {
         "type" : "IRI",
         "value" : "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";
       },
       "object" : {
         "type" : "IRI",
         "value" : "https://w3id.org/saref#Temperature";
       }
     }, {
       "subject" : {
         "type" : "blank node",
         "value" : "_:b6"
       },
       "predicate" : {
         "type" : "IRI",
         "value" : "https://www.w3.org/2019/wot/td#description";
       },
       "object" : {
         "type" : "literal",
         "value" : "Temperature",
         "datatype" : "http://www.w3.org/2001/XMLSchema#string";
       }
     }, {
       "subject" : {
         "type" : "blank node",
         "value" : "_:b6"
       },
       "predicate" : {
         "type" : "IRI",
         "value" : "https://www.w3.org/2019/wot/td#hasForm";
       },
       "object" : {
         "type" : "blank node",
         "value" : "_:b7"
       }
     }, {
       "subject" : {
         "type" : "blank node",
         "value" : "_:b6"
       },
       "predicate" : {
         "type" : "IRI",
         "value" : "https://www.w3.org/2019/wot/td#hasForm";
       },
       "object" : {
         "type" : "blank node",
         "value" : "_:b8"
       }
     }, {
       "subject" : {
         "type" : "blank node",
         "value" : "_:b6"
       },
       "predicate" : {
         "type" : "IRI",
         "value" : "https://www.w3.org/2019/wot/td#isObservable";
       },
       "object" : {
         "type" : "literal",
         "value" : "true",
         "datatype" : "http://www.w3.org/2001/XMLSchema#boolean";
       }
     }, {
       "subject" : {
         "type" : "blank node",
         "value" : "_:b7"
       },
       "predicate" : {
         "type" : "IRI",
         "value" : "htv:methodName"
       },
       "object" : {
         "type" : "literal",
         "value" : "GET",
         "datatype" : "http://www.w3.org/2001/XMLSchema#string";
       }
     }, {
       "subject" : {
         "type" : "blank node",
         "value" : "_:b9"
       },
       "predicate" : {
         "type" : "IRI",
         "value" : "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";
       },
       "object" : {
         "type" : "IRI",
         "value" : "https://w3id.org/saref#OnOffState";
       }
     }, {
       "subject" : {
         "type" : "blank node",
         "value" : "_:b9"
       },
       "predicate" : {
         "type" : "IRI",
         "value" : "https://www.w3.org/2019/wot/td#description";
       },
       "object" : {
         "type" : "literal",
         "value" : "is database running",
         "datatype" : "http://www.w3.org/2001/XMLSchema#string";
       }
     }, {
       "subject" : {
         "type" : "blank node",
         "value" : "_:b9"
       },
       "predicate" : {
         "type" : "IRI",
         "value" : "https://www.w3.org/2019/wot/td#hasForm";
       },
       "object" : {
         "type" : "blank node",
         "value" : "_:b10"
       }
     }, {
       "subject" : {
         "type" : "blank node",
         "value" : "_:b9"
       },
       "predicate" : {
         "type" : "IRI",
         "value" : "https://www.w3.org/2019/wot/td#hasForm";
       },
       "object" : {
         "type" : "blank node",
         "value" : "_:b11"
       }
     }, {
       "subject" : {
         "type" : "blank node",
         "value" : "_:b9"
       },
       "predicate" : {
         "type" : "IRI",
         "value" : "https://www.w3.org/2019/wot/td#isObservable";
       },
       "object" : {
         "type" : "literal",
         "value" : "true",
         "datatype" : "http://www.w3.org/2001/XMLSchema#boolean";
       }
     }, {
       "subject" : {
         "type" : "blank node",
         "value" : "_:b10"
       },
       "predicate" : {
         "type" : "IRI",
         "value" : "htv:methodName"
       },
       "object" : {
         "type" : "literal",
         "value" : "GET",
         "datatype" : "http://www.w3.org/2001/XMLSchema#string";
       }
     }, {
       "subject" : {
         "type" : "blank node",
         "value" : "_:b12"
       },
       "predicate" : {
         "type" : "IRI",
         "value" : "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";
       },
       "object" : {
         "type" : "IRI",
         "value" : "https://w3id.org/saref#OnOffState";
       }
     }, {
       "subject" : {
         "type" : "blank node",
         "value" : "_:b12"
       },
       "predicate" : {
         "type" : "IRI",
         "value" : "https://www.w3.org/2019/wot/td#hasForm";
       },
       "object" : {
         "type" : "blank node",
         "value" : "_:b13"
       }
     } ]
}

And when using:
InputStream in = new
ByteArrayInputStream(JsonLdProcessor.toRdf(exposedThing.toJson().getB
y tes(StandardCharsets.UTF_8))); Dataset dataset =
DatasetFactory.createTxnMem(); RDFDataMgr.read(dataset, in,
Lang.JSONLD); RDFDataMgr.write(System.out, dataset, Lang.JSONLD);

This ist he output:
{ }

Phil




-----Ursprüngliche Nachricht-----
Von: Andy Seaborne <[email protected]>
Gesendet: Sonntag, 25. Juli 2021 12:52
An: [email protected]
Betreff: Re: AW: Storing ThingDescription in Dataset

Hi Phil,

That does not look like JSON-LD.

JSON-LD parsing ignores anything it does not understand, not give an
error. In your code snippet, no Jena involved,

       Object compact

is a jsonld-data object "Dataset" (which isn't a Jena Dataset) with nothing in 
it.

JSON-LD parsing ignores anything it does not understand, not give an error.

Jena translates the output of JsonLdProcessor.toRDF to Jena objects. If there 
is an empty input, you get an empty output.

On 25/07/2021 11:11, Philipp Leeb wrote:
Hi Andy,

this ist he output when using JsonUtils:
{
      "@default" : [ {
        "subject" : {
          "type" : "IRI",
          "value" : "urn:dev:ops:32473-wotdirectory-1234"
        },
        "predicate" : {
          "type" : "IRI",
          "value" : "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";
        },
        "object" : {
          "type" : "IRI",
          "value" : "https://w3id.org/saref#Device";
        }

That would be in JSON-LD:

{
      "@id" : "urn:dev:ops:32473-wotdirectory-1234",
      "@type" : "https://w3id.org/saref#Device";
}

or there needs to be a @context

Try it at:
https://json-ld.org/playground/

        Andy



Reply via email to