Re: [poe] Support JSON-LD

Yes, there are a couple of ways to go when you have more than one node object at the top-level:

1) Wrap them in an array `[{"@context": .., ...}, {"@context": .., ..}`
2) Wrap them all in `@graph` with a shared context `{"@context": ..., "@graph": []}`.
3) Find a common object property and use a reverse relationship. For example, in an RDFS document, this might be `rdfs:isDefinedBy`, in which case you can do something like we do for [CSVW](https://github.com/w3c/csvw/blob/gh-pages/ns/csvw.jsonld):

```json
{
  "@context": {
    "rdfs": "http://www.w3.org/2000/01/rdf-schema#",
      "rdfs_classes": {
        "@reverse": "rdfs:isDefinedBy",
        "@type": "@id"
      },
      ...
  },
  ...,
  "rdfs:classes": [
      {
        "@id": "csvw:Cell",
        "@type": "rdfs:Class",
        "rdfs:label": {
          "en": "Cell"
        },
        "rdfs:comment": {
          "en": "A Cell represents a cell at the intersection of a Row and a Column within a Table."
        }
      },
      {
        "@id": "csvw:Column",
        "@type": "rdfs:Class",
        "rdfs:label": {
          "en": "Column Description"
        },
        "rdfs:comment": {
          "en": "A Column represents a vertical arrangement of Cells within a Table."
        }
      },
      ...
  ]
}
```

You can, of course, make it multiple JSON-LD documents, and use the graph merge, but adding `[]` around them solves this problem at the expense of repeating `@context`.

JSON-LD _is_ JSON, so we need to play be the rules. That said, we are in the process of doing a community update for [JSON-LD 1.1](http://json-ld.org/spec/latest/json-ld/) and reasonable ideas are being entertained, when they are not too disruptive. One feature we're adding is [ID Maps](http://json-ld.org/spec/latest/json-ld/#node-identifier-indexing), which uses the `@container` property of a term definition to allow for indexing values. We could add `"@container": "@id"` as a top-level context element to set the default container value, in which case a top-level object might contain both an `@context` and identifiers to index node definitions. This would substantially change the way that JSON-LD looks, so I'm sure it would be controversial, but would be a fairly simple change to the algorithms. Hypothetically, your example might look like the following:

```json
{
    "@context": ["http://www.w3.org/ns/odrl.jsonld",
      {"@container": "@id"}
    ],
    "http://example.com/policy:6161": {
        "type": "Offer",
        "permission": [{
            "target": "http://example.com/wallpaper:1234",
            "assigner": "http://example.com/myPix:6161",
            "action": "distribute",
            "constraint": [{
                "leftOperand": "spatial",
                "operator": "eq",
                "rightOperand": "https://www.iso.org/obp/ui/#iso:code:3166:IT"
            }],
            "duty": [
                {
                    "action": "compensate",
                    "constraint": [{
                        "leftOperand": "payAmount",
                        "operator": "eq",
                        "rightOperand": "100.00",
                        "dataType": "http://www.w3.org/2001/XMLSchema#decimal",
                        "unit": 
                          "https://www.currency-iso.org/dam/downloads/lists/list_one.xml#EUR"
                    }]
                },
                {
                    "action": "nextPolicy",
                    "target": "http://example.com/policy:7171"
                }
            ]
        }]
    },
    "http://example.com/policy:7171": {
        "@context": "http://www.w3.org/ns/odrl.jsonld",
        "type": "Set",
        "permission": [{
            "target": "http://example.com/wallpaper:1234",
            "action": "display"
        }]
    }
}
```


-- 
GitHub Notification of comment by gkellogg
Please view or discuss this issue at https://github.com/w3c/poe/issues/46#issuecomment-297467445 using your GitHub account

Received on Wednesday, 26 April 2017 16:30:43 UTC