2016-08-10 2 views
2

중첩 된 객체의 일부 속성이있는 JSON 객체가 있다고 가정 해 보겠습니다.JSON-LD에서 중첩 구조/값에 주석 달기

{ 
    "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" 
    } 
} 

이 솔루션을 이 작동하지만 복제가 필요하며 JSON API에 주석을다는 것에 대해서는 ethanresnick's comments on Github에서옵니다. 그는 another issue에서 @context은 "JSON API 구조에 주석을 달 수있을 정도로 표현력이 풍부하지 않습니다"라고 언급했습니다. 적어도이 문제에 관해서는 그가 틀렸다는 것을 증명하기를 바랬습니다.

+0

당신은 단순히'publishedAt' 기간은 아마'XSD 원하는 모든 인스턴스에 대해 작업 (것이지만 정의 된 경우 dateTime'을하지'의 xsd : 날짜를 '). –

+0

당신이하려는 일이'meta' 엘리먼트를 먹는다면, 아니요, JSON-LD에서 할 수 없습니다. –

+0

@GreggKellogg 감사합니다! 물론'xsd : dateTime'에 대해서 당신이 맞습니다. 나는 그것을 듣고 슬프다. 답변으로 의견을 게시하면 받아 들일만한 표시가됩니다 :) – vicvicvic

답변

3

최신 JSON-LD 사양에 nested properties에 새로운 섹션이 포함되어 있음을 발견했습니다. 이처럼 컨텍스트를 정의하면 원하는 출력 발생한다 :

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

환상적인 뉴스! 스펙을 읽으면,''meta ":"@nest "를'@ context'에 포함시켜야하지 않습니까? – vicvicvic

+0

당신은 완전히 옳습니다. 나는 대답을 업데이트했다. – cbst

2

meta 요소를 먹는다면, JSON-LD에서 수행 할 수 없습니다.

이런 식으로 할 수있는 역 색인을 수행하는 것에 대한 논의가 있었지만 문제는 없습니다. https://github.com/json-ld/json-ld.org/issues에서 하나를 만들 수 있습니다. 어떤 시점에서 CG 또는 새로 형성된 WG가 새 버전의 기능 요청을 살펴볼 것입니다.