如何在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,我的错。