如何在RDF中将子类分配给SIOC论坛?

如何在RDF中将子类分配给SIOC论坛?,rdf,turtle-rdf,solid,Rdf,Turtle Rdf,Solid,我正在使用rdflib将一个新的SIOC:Forum存储在一个坚固的POD上。声明SIOC:论坛可以具有ChatChannel的子类型/子类。如何为存储此子类的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/si

我正在使用
rdflib
将一个新的SIOC:Forum存储在一个坚固的POD上。声明SIOC:论坛可以具有ChatChannel的子类型/子类。如何为存储此子类的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}>
  ] .
@前缀sioc:。
@前缀rdf:。
@前缀类型:。
@基地。
:论坛
a sioc:论坛;
sioc:has_主机;
sioc:拥有所有人;
rdf:类型类型:聊天频道;#总结
我的第一个猜测是您缺少
类型
前缀声明末尾的
#
。应为前缀类型:。

另一个观察结果是,只需在一行
a
上列出多个类型,并删除
rdf
前缀和用法,就可以简化这一过程:

a sioc:Forum, types:ChatChannel ;

细节 使用
#
在文档的其余部分中,前缀直接替换为相应的
前缀:
用法。这意味着您对
类型的引用:ChatChannel
将被转换为
http://rdfs.org/sioc/typesChatChannel
,这显然不是您想要的

请注意,您可能并不总是需要
#
。它取决于名称空间。在本例中,您试图引用嵌入在较大文档中的特定内容,因此使用url段来实现这一点。有些名称空间,如schema.org,为每件事分配不同的url路径。在这种情况下,前缀必须以
/
结尾

使用
a
如果您还不知道,这一点并不明显,但是turtle中的
a
关键字是同一
rdf:type
谓词的别名。请参阅w3海龟文档中的。而且,假设它是海龟,您可以始终使用逗号在谓词后面传递对象列表。

Summary 我的第一个猜测是您缺少
类型
前缀声明末尾的
#
。应为前缀类型:。

另一个观察结果是,只需在一行
a
上列出多个类型,并删除
rdf
前缀和用法,就可以简化这一过程:

a sioc:Forum, types:ChatChannel ;

细节 使用
#
在文档的其余部分中,前缀直接替换为相应的
前缀:
用法。这意味着您对
类型的引用:ChatChannel
将被转换为
http://rdfs.org/sioc/typesChatChannel
,这显然不是您想要的

请注意,您可能并不总是需要
#
。它取决于名称空间。在本例中,您试图引用嵌入在较大文档中的特定内容,因此使用url段来实现这一点。有些名称空间,如schema.org,为每件事分配不同的url路径。在这种情况下,前缀必须以
/
结尾

使用
a

如果您还不知道,这一点并不明显,但是turtle中的
a
关键字是同一
rdf:type
谓词的别名。请参阅w3海龟文档中的。而且,假设它是turtle,你可以用逗号在谓词后面传递一个对象列表。

a
rdf:type
(即
)的别名,而不是
谢谢@Stanislav,我的错。
a
rdf:type
(即
)的别名而不是因为
谢谢@Stanislav,我的错。