如何将子类分配给 RDF 中的 SIOC 论坛?
How to assign a subclass to a SIOC Forum in RDF?
我正在使用 rdflib
在 SOLID POD 上存储新的 SIOC:Forum。 https://www.w3.org/Submission/sioc-spec/#sec-modules-types 表示 SIOC:Forum 可以拥有 ChatChannel 的 subtype/subclass。如何为我的 turtle (.ttl) 请求建模以存储此子类?
@prefix sioc: <http://rdfs.org/sioc/ns#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix types: <http://rdfs.org/sioc/types> .
@base <${uri}> .
:forum
a sioc:Forum ;
sioc:has_host <https://banyan.msg> ;
sioc:has_owner <${owner}> ;
rdf:type types:ChatChannel ; # <- is this correct?
sioc:has_subscriber [
a sioc:User ;
sioc:account_of <${partner}>
] .
总结
我的第一个猜测是您缺少 types
前缀声明末尾的 #
。应该是 @prefix types: <http://rdfs.org/sioc/types#> .
另一个观察结果 thanks to @timbl 是,您可以通过在 a
行中列出多种类型并完全删除 rdf
前缀和用法来简化此操作:
a sioc:Forum, types:ChatChannel ;
详情
使用 #
前缀直接换入它们在 turtle 文档的其余部分中相应的 prefix:
用法。这意味着您对 types:ChatChannel
的引用将被翻译为 http://rdfs.org/sioc/typesChatChannel
,这显然不是您想要的。
请注意,您可能不会总是需要#
。这取决于命名空间。在这种情况下,您试图引用嵌入在较大文档中的特定内容,因此您使用 url 段来实现这一点。一些名称空间,如 schema.org,为每个事物分配不同的 url 路径。在那种情况下,前缀必须以 /
.
结尾
使用 a
如果您还不知道的话一点也不明显,但是 turtle 中的 a
关键字是同一个 rdf:type
谓词的别名。请参阅 w3 乌龟文档中的 this one sentence。而且,鉴于它是乌龟,您始终可以使用逗号在谓词之后传递对象列表。
我正在使用 rdflib
在 SOLID POD 上存储新的 SIOC:Forum。 https://www.w3.org/Submission/sioc-spec/#sec-modules-types 表示 SIOC:Forum 可以拥有 ChatChannel 的 subtype/subclass。如何为我的 turtle (.ttl) 请求建模以存储此子类?
@prefix sioc: <http://rdfs.org/sioc/ns#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix types: <http://rdfs.org/sioc/types> .
@base <${uri}> .
:forum
a sioc:Forum ;
sioc:has_host <https://banyan.msg> ;
sioc:has_owner <${owner}> ;
rdf:type types:ChatChannel ; # <- is this correct?
sioc:has_subscriber [
a sioc:User ;
sioc:account_of <${partner}>
] .
总结
我的第一个猜测是您缺少 types
前缀声明末尾的 #
。应该是 @prefix types: <http://rdfs.org/sioc/types#> .
另一个观察结果 thanks to @timbl 是,您可以通过在 a
行中列出多种类型并完全删除 rdf
前缀和用法来简化此操作:
a sioc:Forum, types:ChatChannel ;
详情
使用 #
前缀直接换入它们在 turtle 文档的其余部分中相应的 prefix:
用法。这意味着您对 types:ChatChannel
的引用将被翻译为 http://rdfs.org/sioc/typesChatChannel
,这显然不是您想要的。
请注意,您可能不会总是需要#
。这取决于命名空间。在这种情况下,您试图引用嵌入在较大文档中的特定内容,因此您使用 url 段来实现这一点。一些名称空间,如 schema.org,为每个事物分配不同的 url 路径。在那种情况下,前缀必须以 /
.
使用 a
如果您还不知道的话一点也不明显,但是 turtle 中的 a
关键字是同一个 rdf:type
谓词的别名。请参阅 w3 乌龟文档中的 this one sentence。而且,鉴于它是乌龟,您始终可以使用逗号在谓词之后传递对象列表。