以下是我知道在 N3 中创建类的方法:
:Person a rdfs:Class.
以下是如何指定特定资源是该类的实例:
:Pat a :Person.
问题:我想创建一个包含超过 20000 个实例(以编程方式生成)的类。为我的 20000 个实例编写整体:Pat a :Person.
会使本体文件变得冗长。
问题:有没有办法让文件变小?
以下是我知道在 N3 中创建类的方法:
:Person a rdfs:Class.
以下是如何指定特定资源是该类的实例:
:Pat a :Person.
问题:我想创建一个包含超过 20000 个实例(以编程方式生成)的类。为我的 20000 个实例编写整体:Pat a :Person.
会使本体文件变得冗长。
问题:有没有办法让文件变小?
如果您真的使用 N3 而不是 Turtle(我对此表示怀疑),则可以使用@is ... @of
关键字,如下所示:
:Person a rdfs:Class;
@is a @of :Pat, :Bob, :Chris, :Cindy, :Suzy .
几乎没有任何 Turtle 工具包允许这样做。
在public-rdf-comments@w3.org Mail Archives上还有一个关于将这个功能添加到Turtle的长讨论线程(目前由 W3C 作为 Last Call Working Draft 发布),从Tim Berners 的评论开始 -李。然后Dave Beckett 发表评论,要求不包括该功能,然后又是一个长线程。然后,当前 RDF 工作组中 Turtle 规范的编辑Gavin Carothers对这些立场进行了很好的总结。
但是,我怀疑这将成为 Turtle 最终标准化时的一个功能。
顺便说一句,当全部以编程方式生成(我猜是解析)时,拥有 20,000 条记录有什么问题?如果您需要通过网络交换如此多的数据,您可以轻松地对其进行大量压缩。或者,您可以使用HDT之类的紧凑序列化语法,但实现很少。
您可以为完整的类 URI 定义一个自定义前缀,然后只需使用该前缀来引用该类:
@prefix : <http://example.com/myOntology#>.
@prefix x: <http://example.com/myOntology#MyClass>.
:Alice a x: .
:Bob a x: .
:Charlie a x: .
这不完全可读,但尽可能短。
我同意安托万的观点,这种诡计毫无意义。磁盘空间很便宜,而且这些东西可以很好地压缩网络传输,并且为了在应用程序中进行处理,无论如何它都会被扩展。