Rdf 在N3/Turtle本体语言中是否有创建类的快捷方式

Rdf 在N3/Turtle本体语言中是否有创建类的快捷方式,rdf,semantic-web,n3,turtle-rdf,Rdf,Semantic Web,N3,Turtle Rdf,以下是我如何知道如何在N3中创建类: :Person a rdfs:Class. 下面是如何指定特定的ressource是该类的实例: :Pat a :Person. 问题:我想创建一个包含20000多个实例(通过编程生成)的类。为我的20000个实例编写整个:Pat a:Person.会使本体文件变得冗长 问题:是否有办法使文件变小?如果你真的使用N3而不是Turtle(我怀疑),你可以使用@is@属于关键字,如下所示: :Person a rdfs:Class; @is a

以下是我如何知道如何在N3中创建类:

:Person a rdfs:Class.
下面是如何指定特定的ressource是该类的实例:

:Pat a :Person.
问题:我想创建一个包含20000多个实例(通过编程生成)的类。为我的20000个实例编写整个
:Pat a:Person.
会使本体文件变得冗长


问题:是否有办法使文件变小?

如果你真的使用N3而不是Turtle(我怀疑),你可以使用
@is@属于
关键字,如下所示:

:Person  a  rdfs:Class;
    @is a @of  :Pat, :Bob, :Chris, :Cindy, :Suzy .
几乎没有任何海龟工具包允许这样做

关于如何将此功能添加到(目前由W3C作为最后一个调用工作草案发布)上,也有一个很长的讨论线程,从一个开始。然后去了一个要求不包括功能,和一个长线程再次。然后,在当前RDF工作组中,与海龟规范的一位编辑很好地总结了他们的立场

然而,我怀疑当海龟最终被标准化时,这是否会成为海龟的一个特征


顺便说一句,当20000条记录全部以编程方式生成(我猜是解析的)时,有什么问题?如果您需要通过网络交换如此多的数据,您可以轻松地对其进行大量压缩。或者,您可以使用紧凑的序列化语法,如,但很少有实现。

您可以为完整的类URI定义自定义前缀,然后只使用前缀引用类:

@prefix : <http://example.com/myOntology#>.
@prefix x: <http://example.com/myOntology#MyClass>.

:Alice a x: .
:Bob a x: .
:Charlie a x: .
@前缀:。
@前缀x:。
:Alice a x:。
:Bob a x:。
:查理a x:。
这并不完全可读,但尽可能简短


我同意安托万的观点,这种诡计没有什么意义。磁盘空间很便宜,而且这种材料可以很好地压缩网络传输,在应用程序中进行处理时,它将被扩展。

非常感谢这些答案。我喜欢这个建议。我是否需要明确声明“:Alice a x:”如果Alice涉及到一些关系?更准确地说,假设我有“x:Alice:hasSibling x:Bob”。这是否意味着爱丽丝和鲍勃是x?关于我为什么要问这个问题的评论。我真的很喜欢围绕语义网的工作,并且相信它有巨大的潜力,但是它没有提供能够让广大读者接受的简单性(可能是HTML在其时代被广泛采用的方式)。因此,我正在研究可用的符号快捷方式。现在,显然,20K个实例很难用“简单”的方式来描述。但我的本体有望被许多人阅读和使用,我希望以最人性化的方式编写它。对你的问题的简短回答是:是的,你需要显式地键入内容(除非你假设数据的每个用户都有一个支持推断的工具包,通常情况下不是这样)。不,“
x:Alice:hasSibling x:Bob
”并不意味着Alice和Bob是
x:
。此外,如果你喜欢答案,你可以通过向上投票和/或接受它来证明这一点。