2016-01-13 87 views
3

我有一個關於在另一個JSON-LD schema.org標記中引用JSON-LD schema.org標記的問題。我有一個主要事件位於http://event.com/的頁面,這裏是它的JSON-LD標記。Schema.org JSON-LD參考

<script type="application/ld+json"> 
{ 
    "@context": "http://schema.org", 
    "@type": "Event", 
    "name": "MainEvent", 
    "startDate": "2016-04-21T12:00", 
    "location": { 
    ... 
    } 
} 
</script> 

主要事件有位於例如http://event.com/sub-event-1/多個子活動,這裏是對的JSON-LD標記:

<script type="application/ld+json"> 
{ 
    "@context": "http://schema.org", 
    "@type": "Event", 
    "name": "SubEvent", 
    "startDate": "2016-04-21T12:00", 
    "location": { 
    ... 
    } 
} 
</script> 

我試圖做的是標記的子事件的一部分主要事件。是否可以創建從主事件到子事件的參考?像這樣的:

<script type="application/ld+json"> 
{ 
    "@context": "http://schema.org", 
    "@type": "Event", 
    "name": "SubEvent", 
    "startDate": "2016-04-21T12:00", 
    "location": { 
    ... 
    } 
    superEvent { 
    "url": "http://event.com/" 
    } 
} 
</script> 

如果可能的話,什麼是正確的標記供參考。我找不到任何有關它的信息。

或者是嵌入MainEvent在這樣的每一個子事件是必需的:

<script type="application/ld+json"> 
{ 
    "@context": "http://schema.org", 
    "@type": "Event", 
    "name": "SubEvent", 
    "startDate": "2016-04-21T12:00", 
    "location": { 
    ... 
    }, 
    "superEvent": { 
    "@type": "Event", 
    "name": "MainEvent", 
    "startDate": "2016-04-21T12:00", 
    "location": { 
    ... 
    } 
    } 
} 
</script> 

回答

3

你正在尋找一個節點標識符(見http://www.w3.org/TR/json-ld/#node-identifiers)。可以爲每個實體的URL形式的唯一標識符,它引用使用:

<script type="application/ld+json"> 
{ 
    "@context": "http://schema.org", 
    "@id": "http://event.com/#mainEvent", 
    "@type": "Event", 
    "name": "MainEvent", 
    "startDate": "2016-04-21T12:00", 
    "location": { 
    ... 
    } 
} 
</script> 

上面你看到我給事件一個@id。我附加了一個片段(#mainEvent),因爲http://event.com/通常會標識頁面本身。然後您可以參考以下事件:

<script type="application/ld+json"> 
{ 
    "@context": "http://schema.org", 
    "@type": "Event", 
    "name": "SubEvent", 
    "startDate": "2016-04-21T12:00", 
    "location": { 
    ... 
    } 
    superEvent { 
    "@id": "http://event.com/#mainEvent" 
    } 
} 
</script> 

如示例中所示的嵌入方式也適用。在這種情況下,你將不需要標識符,因爲它清楚什麼引用了什麼。

9

您可以通過爲節點指定一個URI,在@id關鍵字中指定URI來標識節點。該URI可用於引用該節點。

請參閱JSON-LD規範中的「Node Identifiers」部分。

所以,你的主要事件能得到URI http://example.com/2016-04-21#main-event

<script type="application/ld+json"> 
{ 
    "@id": "http://example.com/2016-04-21#main-event", 
    "@context": "http://schema.org", 
    "@type": "Event", 
    "name": "MainEvent", 
    "startDate": "2016-04-21T12:00" 
} 
</script> 

,你可以給這個URI作爲子事件的superEvent屬性的值:

<script type="application/ld+json"> 
{ 
    "@context": "http://schema.org", 
    "@type": "Event", 
    "name": "SubEvent", 
    "startDate": "2016-04-21T12:00", 
    "superEvent": { "@id": "http://example.com/2016-04-21#main-event" } 
} 
</script> 

(你當然可以給你的子事件也是@id,這將允許你和其他人識別/引用這個子事件。)