在JSON-LD

时间:2016-08-10 14:49:25

标签: json-ld

假设我有一个嵌套对象中有一些属性的JSON对象。

{
    "title": "My Blog Post",
    "meta": {
        "publishedAt": "2016-08-01T00:00:00Z"
    }
}

我可以通过简单的方法将@context添加到我的顶级对象中 这些属性(即只是“通过”元对象)?一些东西 这些行:

{
    "@context": {
        "title": "schema:name",
        "meta.publishedAt": {
            "@type": "xsd:date",
            "@id": "schema:datePublished"
        }
    },

    "@id": "/my-article",
    "title": "My Blog Post",

    "meta": {
        "publishedAt": "2016-08-01T00:00:00Z"
    }
}

我想避免向嵌套对象添加(复制)@id,否则我将以其他方式解决它:

{
    "@context": {
        "title": "schema:name",
        "meta": { "@id": "_:meta", "@container": "@set" },
        "publishedAt": {
            "@type": "xsd:date",
            "@id": "schema:datePublished"
        }
    },

    "@id": "/my-article",
    "title": "My Blog Post",

    "meta": {
        "@id": "/my-article",
        "publishedAt": "2016-08-01T00:00:00Z"
    }
}

此解决方案正常工作,但需要重复,并且来自ethanresnick's comments on Github关于注释JSON API。他在another issue中指出@context“不足以表达对JSON API结构的注释”。我希望至少在这个问题上证明他是错的。

2 个答案:

答案 0 :(得分:3)

我刚刚发现最新的JSON-LD规范包含nested properties的新部分。像这样定义上下文应该会产生所需的输出:

{
    "@context": {
        "title": "schema:name",
        "meta": "@nest",
        "publishedAt": {
            "@type": "xsd:date",
            "@id": "schema:datePublished",
            "@nest": "meta"
        }
    },
    ...
}

答案 1 :(得分:2)

如果你要做的是吃meta元素,那么不,这不能在JSON-LD中完成。

有人讨论过做一个可以做这样的反向索引,但我没有看到问题。您可以在https://github.com/json-ld/json-ld.org/issues创建一个。在某些时候,CG或新成立的工作组将开始查看新版本的功能请求。