Schema.org JSON-LD参考

时间:2016-01-13 08:44:30

标签: schema.org json-ld

我有一个关于在另一个JSON-LD schema.org标记中引用JSON-LD schema.org标记的问题。我有一个主要事件的页面位于http://event.com/,这里是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>

如果可能,那么正确的标记是什么以供参考。我无法找到有关它的任何信息。

或者需要在每个SubEvent中嵌入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>

2 个答案:

答案 0 :(得分:13)

您可以通过为% Vertical end check isEndVert(Grid, J, N) :- getColumn(N, Grid, Column), sublist([J,J,J,J], Column), !. isEndVert(Grid, J, N) :- N > 0, N1 is N-1, isEndVert(Grid, J, N1). % Horizontal end check isEndHor(Grid, J, N) :- getLine(N, Grid, Line), sublist([J,J,J,J], Line), !. isEndHor(Grid, J, N) :- N > 0, N1 is N-1, isEndHor(Grid, J, N1). 关键字指定的URI指定节点来识别节点。此URI可用于引用该节点。

请参阅JSON-LD规范中的“Node Identifiers”部分。

因此,您的主要事件可以获取URI @id

http://example.com/2016-04-21#main-event

并且您可以将此URI作为子事件的<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> 属性的值:

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> 。这将允许你和其他人识别/引用这个子事件。)

答案 1 :(得分:3)

您正在寻找节点标识符(请参阅http://www.w3.org/TR/json-ld/#node-identifiers)。您可以以URL的形式为每个实体分配唯一标识符,并在引用中使用它:

queryParser.AllowLeadingWildcard = false;

上面你看到我给了活动<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/

如您的示例中所示嵌入也可以。在这种情况下,您将不需要标识符,因为它清楚什么引用了什么。