以下是我在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邮件档案关于将此功能添加到Turtle(目前由W3C作为最后一次调用工作草案发布),从Tim Berners-Lee的评论开始。然后Dave Beckett发表了一条评论,要求而不是包括该功能,并再次发布了一条长文。然后,当前RDF工作组Turtle规范的编辑Gavin Carothers对这些立场进行了很好的总结。
然而,当Turtle最终被标准化时,我怀疑这是否会成为它的一个特点。
顺便说一句,当20000条记录全部以编程方式生成(我想是解析的)时,有什么问题?如果你需要在网络上交换这么多数据,你可以很容易地对其进行大量压缩。或者,您可以使用像HDT这样的紧凑串行化语法,但实现方式很少。
您可以为完整的类URI定义一个自定义前缀,然后只使用前缀来引用类:
@prefix : <http://example.com/myOntology#>.
@prefix x: <http://example.com/myOntology#MyClass>.
:Alice a x: .
:Bob a x: .
:Charlie a x: .
这并不完全可读,但尽可能简短。
我同意安托万的观点,认为这种欺骗没有什么意义。磁盘空间很便宜,而且这种东西可以很好地压缩网络传输,而且在应用程序中进行处理时,它无论如何都会扩展。