Re: Casting literals as IRIs

Your source json-ld is already expanded, so compaction only will be sufficient.
Expansion means: removing the @context by applying its term definitions.

You can experiment in the json-ld playground [1]

There are a number of json ld api implementations, if your language is among them, you probably wouldn't implement the api yourself.

[1] http://json-ld.org/playground/

Am 18.12.2015 10:15 schrieb Jindřich Mynarz <mynarzjindrich@gmail.com>:

Hi all,


Markus, thank you for the solution, and Dietrich, thank you for implying an explanation.


However, I wonder if it's not possible to coerce objects as IRIs (http://www.w3.org/TR/json-ld/#h3_type-coercion) *and* compact the property IRI in a single operation of the JSON-LD API.


Currently, I understand I need to do the following to coerce objects as IRIs and compact the property IRI.


Starting with this JSON-LD:


{

  "@id": "http://mynarz.net/#jindrich",

  "http://xmlns.com/foaf/0.1/knows": [

    "http://ruben.verborgh.org/#me",

    "http://richard.cyganiak.de/foaf.rdf#cygri"

  ]

}


I need to jam this @context in:


{

  "@context": {

    "http://xmlns.com/foaf/0.1/knows": {

      "@type": "@id"

    }

  }

}


Then I can expand (http://www.w3.org/TR/json-ld-api/#expansion) the JSON-LD and compact (http://www.w3.org/TR/json-ld-api/#compaction) the result of expansion with the following @context if compact IRIs are desired:


{

  "@context": {

    "foaf": "http://xmlns.com/foaf/0.1/"

  }

}


Is that a correct approach?


- Jindřich


-- 

Jindřich Mynarz

http://mynarz.net/#jindrich


On Fri, Dec 18, 2015 at 9:24 AM, Adrian Pohl <pohl@hbz-nrw.de> wrote:

Sorry for prematurely sending the former mail. Thinking about what I wanted to say, my intended response isn't that relevant to this thread. As I am already writing this, I will just mention it anyway.

I just recently stumbled over the ability to define both @type and @container in the context, e.g.

{
  "@context": {
    "foaf": "http://xmlns.com/foaf/0.1/",
    "foaf:knows": {
      "@type": "@id",
      "@container": "@set"
    }
  },
  "@id": "http://mynarz.net/#jindrich",
  "http://xmlns.com/foaf/0.1/knows": [
    "http://ruben.verborgh.org/#me",
    "http://richard.cyganiak.de/foaf.rdf#cygri"
  ]
}

Actually, this doesn't make a big difference in this case. It would make sense, though, if you had some foaf:knows triples with only one object and also wanted these to be delivered as an array for the sake of homogeneity...

All the best
Adrian




Am 18.12.2015 um 09:13 schrieb Adrian Pohl:

Hello Jindřich,

with this context:

Am 17.12.2015 um 23:53 schrieb Markus Lanthaler:

Hi Jindřich,


On Thursday, December 17, 2015 11:04 AM, Jindřich Mynarz wrote:

I found that some services return JSON-LD, in which IRIs are serialized
as literals. For example, consider the following example:

{
   "@id": "http://mynarz.net/#jindrich",
   "http://xmlns.com/foaf/0.1/knows": [
      "http://ruben.verborgh.org/#me",
      "http://richard.cyganiak.de/foaf.rdf#cygri"
   ]
}

The objects of foaf:knows are serialized as literals, even though they
are IRIs.

Now, if I want to recover the objects of foaf:knows as IRIs, the
following context is of no use:

{
   "@context": {
     "foaf": "http://xmlns.com/foaf/0.1/",
     "foaf:knows": {"@type": "@id"}
   }
}


What about this context:

   "@context": {
     "http://xmlns.com/foaf/0.1/knows": { "@type": "@id" }
   }

Result: http://tinyurl.com/hadcx4d


HTH,
Markus


--
Markus Lanthaler
@markuslanthaler

Received on Friday, 18 December 2015 11:35:36 UTC