RDF中具体化的简单示例

Ste*_*ini 25 rdf reification

任何人都可以如此友善地在RDF中给我一个简单的具体化例子吗?我想知道我是否理解正确.

例如,我提出以下案例

Tolkien -> wrote -> Lord of the rings
           /|\
            |
        Wikipedia said that
Run Code Online (Sandbox Code Playgroud)

你怎么会写它没有具体化(即与无需物化简单的RDF声明)?

Juk*_*nen 35

"Tolkien写的指环王"可以表达为一个简单的陈述(主语,谓语,宾语),如下所示:

:Tolkien :wrote :LordOfTheRings .
Run Code Online (Sandbox Code Playgroud)

顺便说一下,这是使用RDF 的Turtle表示法.有在线工具可以将其转换为RDF/XML.

使用具体化,您可以拥有一个代表语句的单独资源,这样您就可以声明有关语句本身的其他内容,例如"Wikipedia说":

@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
_:x rdf:type rdf:Statement .
_:x rdf:subject :Tolkien .
_:x rdf:predicate :wrote .
_:x rdf:object :LordOfTheRings .
_:x :said :Wikipedia .
Run Code Online (Sandbox Code Playgroud)

在现实生活中,你可能需要使用共享的词汇,所以,不管是谁或什么是消费RDF将是你所谈论的托尔金和那个魔戒:

:Tolkien :wrote :LordOfTheRings .
Run Code Online (Sandbox Code Playgroud)

  • 实际上,如果您存储所有语句的已知版本,则最终会使您必须存储的三元组数相乘.如果您只需要记录语句的出处,您可能需要考虑使用命名图形/四元组存储作为替代方法. (3认同)

小智 8

自 2020 年起,您可以按如下方式使用 RDF*:

\n

<<:托尔金:写:指环王>>:说:维基百科。

\n

2020年,许多领先的三联店都实施了这种做法。还有一些工具可以将标准具体化转换为 RDF*,以减少三重膨胀。正如 Ontotext\xe2\x80\x99s GraphDB Triple store 以及其他几个报告所报告的,这种方法在三元组数量和加载数据速度方面非常有效。

\n

您可以在此处了解此方法的起源https://arxiv.org/pdf/1406.3399.pdf

\n


Vin*_*yen 6

更好的方法是使用单例属性方法.

例如,您创建一个singleton属性来表示此语句:

Tolkien wrote#1 "Lord of the rings" .

wrote#1 rdf:singletonPropertyOf wrote .

wrote#1 asserted_by Wikipedia .
Run Code Online (Sandbox Code Playgroud)

您可能希望在文章"不喜欢RDF Reification?使用singleton属性制作关于语句的语句"或其幻灯片中阅读更多相关信息,请访问http://www.slideshare.net/ntkimvinh7/www2014-singleton-propertyfinal. .

  • 当查看查询端时,我不认为这种方法可以很好地扩展(标准化 RDF 具体化方法 (http://www.w3.org/TR/rdf-mt/#Reif) 也是如此) 。我建议保留 RDF 中的谓词部分,并扩展 RDF 数据模型以允许语句标识符(另请参阅,例如,http://lists.w3.org/Archives/Public/public-rdf-comments /2011Jan/0001.html)。 (2认同)

小智 6

不幸的是,到目前为止,关系实例,即 W3C 文档中所称的关系扩展的元素,或者在数学中你称之为对的事物,即关系的元素,不被认为是一流的公民。

语义网络生态系统声称 AAA 口号,即任何人都可以对任何事情说任何话。但这不是真的,如果这里的第一个“任何东西”是图的一条边。甚至,如果 RDF 本身具有表达关于单个边的知识的方法,W3C RDF 语义文档会尽力而为,而不是支持这种表达性。

基本上,有 4 种方法可以说明边缘:

  • 不受欢迎、臃肿的松散耦合 RDF 语句
  • 财产单身人士
  • 单个语句命名图(四边形中的第四个元素是图 ID)
  • 关联节点(类似于 UML 关联类)

属性单例绝对是解决该问题的最简单方法,因为它们不添加任何内容——您只是避免犯错误,一遍又一遍地[重新]使用实例边缘的类级属性标识符。其他对元建模(例如 MOF)有清晰理解的建模生态系统不太愿意犯这样的错误。类级边连接类级节点,实例级边连接实例级节点。就是这样。

如果你做对了(正如 Vinh 和他的同事所建议的那样),你就在与推理器的冲突之路上,这些推理器是沿着 W3C RDF 语义文档硬编码的。

您可以通过制造另一个设计缺陷并将您的属性单例实现为类级属性的 subPropertyOf-s [而不是使它们成为它的实例] 来暂时规避这一点(只要 W3C 尚未标准化属性单例)。那么当前的 RDFS 推理器将从

:my_label_0815 rdfs:subPropertyOf rdfs:label .
:some_node :my_label_0815 "some_string" .
Run Code Online (Sandbox Code Playgroud)

:some_node rdfs:label "some_string" .
Run Code Online (Sandbox Code Playgroud)

这是一个肮脏的解决方法,因为它打破了元级别的明确分离。

我们有很多设计非常糟糕的模型,只是因为我们没有一种直接的方式来说明引用(实例级边缘)。