我有一个关于在另一个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>
答案 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/
如您的示例中所示嵌入也可以。在这种情况下,您将不需要标识符,因为它清楚什么引用了什么。