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

use*_*750 5 rdf semantic-web n3 turtle-rdf

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

:Person a rdfs:Class.
Run Code Online (Sandbox Code Playgroud)

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

:Pat a :Person.
Run Code Online (Sandbox Code Playgroud)

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

问题:是否有解决方案使文件变小?

Ant*_*ann 6

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

:Person  a  rdfs:Class;
    @is a @of  :Pat, :Bob, :Chris, :Cindy, :Suzy .
Run Code Online (Sandbox Code Playgroud)

几乎没有任何Turtle工具包允许这样做.

public-rdf-comments@w3.org邮件档案馆还有一个很长的讨论主题,关于将这个功能添加到Turtle(目前由W3C作为最后调用工作草案发布),从Tim Berners评论开始-李.然后由Dave Beckett发表评论,要求不再包括该功能,并再次提供一个长线程.然后通过当前RDF工作组的Turtle规范编辑Gavin Carothers评论,对这些职位进行了总结.

但是,我怀疑当它最终标准化时,这将成为Turtle的一个特征.

顺便说一句,当它以编程方式生成(并且我猜,解析)时,有20,000条记录的问题是什么?如果您需要通过网络交换这么多数据,您可以轻松压缩它.或者,您可以使用紧凑的序列化语法,如HDT,但实现很少.


cyg*_*gri 3

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

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

:Alice a x: .
:Bob a x: .
:Charlie a x: .
Run Code Online (Sandbox Code Playgroud)

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

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