5

以下是我知道在 N3 中创建类的方法:

:Person a rdfs:Class.

以下是如何指定特定资源是该类的实例:

:Pat a :Person.

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

问题:有没有办法让文件变小?

4

2 回答 2

6

如果您真的使用 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之类的紧凑序列化语法,但实现很少。

于 2012-08-29T07:41:32.203 回答
3

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

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

:Alice a x: .
:Bob a x: .
:Charlie a x: .

这不完全可读,但尽可能短。

我同意安托万的观点,这种诡计毫无意义。磁盘空间很便宜,而且这些东西可以很好地压缩网络传输,并且为了在应用程序中进行处理,无论如何它都会被扩展。

于 2012-08-29T11:59:00.477 回答