- From: James M Snell <jasnell@gmail.com>
- Date: Tue, 2 Dec 2014 09:44:41 -0800
- To: Gregg Kellogg <gregg@greggkellogg.net>
- Cc: Jauco Noordzij <jauco.noordzij@gmail.com>, Linked JSON <public-linked-json@w3.org>
On Tue, Dec 2, 2014 at 9:17 AM, Gregg Kellogg <gregg@greggkellogg.net> wrote:
[snip]
>
> I think I mentioned on another thread that there’s an open issue for this
> [1]. @index only works when you have property values which would otherwise
> be in an array and you want to use an object to index them.
>
> The ability to index nodes which would otherwise be in an array would be a
> useful extension. There are two use cases I had in mind:
>
> A top-level “@container”: “@id” in a context would indicate that the keys of
> the object containing the @context would be treated as @id values of the
> nodes they reference. For example:
>
> {
> “@context”: {“@container”: “@id”},
> “a”: {“b”: “c”}
> }
>
> would be the same as
>
> {
> “@id”: “a”,
> “b”: “c”
> }
>
This is problematic in that the labels would typically not expand into
URI's. The index tends to be more of a label (rdfs:label?
skos:prefLabel?)
{
"rdfs:label": "a",
"b": "c"
}
> The second proposal was to create a @reverseindex, which would treat the key
> as an index to the properties it contains, effectively making it go away.
> For example:
>
> {
> “@context”: {“properties”: {“@container”: “@reverseindex”}},
> “@id”: “a”,
> “properties”: {
> “b”: “c”
> }
> }
>
> would turn into something like the following:
>
> {
> “@id”: “a”,
> “b”: {“@value”: “c”, “@reverseindex”: “properties”}
> }
>
Again, the challenge here is that "b" is not defined in a context and
would not expand out. Given the input...
{
“@context”: {
"properties": {
"@id": "urn:example:properties",
"@container": "@index"
}
},
“@id”: “a”,
“properties”: {
“b”: “c”
}
}
which becomes...
{
"@id": "a",
"properties": [
{ "@index": "b", "@value": "c" }
]
}
and expands out to
<a> <urn:example:properties> [
a rdfs:Literal ;
rdfs:label "b" ;
rdf:value "c" .
] .
The nice thing is that it would not require any syntax changes to
JSON-LD (The change to support this would be limited to the JSON-LD
algorithms).
- James
> We’re likely a ways from a formal update to JSON-LD, but the community could
> decide on informal extensions such as this through the CG. Of course,
> there’s quite a bit of work involved in hashing these out and getting
> reasonable spec text and tests to adequately define them.
>
> Gregg
>
> [1] https://github.com/json-ld/json-ld.org/issues/246
>
> regards,
> Jauco
>
> On Tue, Dec 2, 2014 at 12:57 AM, ☮ elf Pavlik ☮
> <perpetual-tripper@wwelves.org> wrote:
>>
>> On 12/02/2014 12:17 AM, Nicholas Bollweg wrote:
>> > As we have seen a number of times here on the list, objects made from an
>> > unknowably large set of of keys are hard to do anything compelling
>> > with... see package.json//dependencies/,
>> > ipython.ipynb//cells/output/data/.
>> I think I understand. What in plain JSON people may tend to structure as
>> object with keys and values. In JSON-LD people would use array of
>> objects instead.
>>
>> I've send emails lately here about it: "using object keys in JSON-LD"
>> http://lists.w3.org/Archives/Public/public-linked-json/2014Oct/0004.html
>>
>> To my understanding, JSON-LD Data Indexing (which Markus pointed me to
>> on thread above), provides a useful construct for those cases.
>> http://www.w3.org/TR/json-ld/#data-indexing
>>
>
>
>
Received on Tuesday, 2 December 2014 17:45:28 UTC