使用哪个,XMP 还是 RDF?

Posted

技术标签:

【中文标题】使用哪个,XMP 还是 RDF?【英文标题】:Which to use, XMP or RDF? 【发布时间】:2011-06-08 14:13:44 【问题描述】:

RDF 和 XMP 有什么区别?

据我所知,XMP 是从 RDF 派生的……那么它提供了 RDF 没有的什么?

我的特殊情况是这样的:我有一些图像需要标记实验如何进行的详细信息,以及对图像执行了什么样的数据分析。我的一位同事正在推动 XMP,但他将图像视为照片 - 它们不是真的,它们只是一些数据。

据我所见(主要通过在 notepad++ 中打开图像),XMP 数据看起来与 RDF 非常相似——即使在标签名称中使用 RDF(例如<rdf:Seq>)。

我希望其他使用类似仪器进行类似实验的人可以使用这些数据,因此创建一个迷你标准(模式?)似乎是可行的方法。

对缺乏基本理解深表歉意 - 我是医生,而不是程序员!如果有任何不同,选择的语言将是 C#。

编辑以获取更多信息: 首先,感谢您的出色回复 - 将 XMP 视为 RDF 的词汇让事情变得更加清晰。

我将存储的数据类型在任何预定义集中都不可用。它将详细介绍实验设置、位置和结果。我认为使用RDF是要走的路。

这样的例子(目前存储在 XML 中)是:

<Experiment name="test2" loc="lab" timestamp="65420233400">
  <Instrument name="a1" rev="1.0"/>
  <Calibration>
    <date>13-02-10</date>
    <type>complete</type>
  </Calibration>
</Experiment>

在我的脑海中,我想我将把它存储在 RDF 中,如下所示:

  <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:zotty="http://www.zotty.com/rdf/">

    <zotty:experiment>
      <rdf:Bag> 
        <zotty:name>test2</zotty:name>
        <zotty:loc>lab</zotty:loc>
        <zotty:timestamp>65420233400</zotty:timestamp>
        <zotty:instrument>
          <rdf:Bag>
            <zotty:name>a1</zotty:name>
            <zotty:rev>1.0</zotty:rev>      
            <zotty:calibration>
              <rdf:bag>
                <zotty:date>13-02-10</zotty:date>
                <zotty:type>complete</zotty:type>
              </rdf:bag>
            </zotty:calibration>
          </rdf:Bag>
        </zotty:instrument>  
      <rdf:Bag>
    </zotty:experiment>
  </rdf:RDF>

感谢您的建议:)

【问题讨论】:

嗨 Zotty - 感谢您的澄清。要谈论实验和仪器,请查看 Ontology for Biomedical Investigation (obi-ontology.org),它在 OWL 中(也可在 RDF 中序列化),其中包含 Experiment、Assay、Instrument 等术语... 谢谢,我不确定是否使用预制本体。是使用预先存在的本体组合来覆盖实验的相似方面,然后为其余部分添加自定义的本体,还是将所有本体捆绑在自定义本体中更好? 是的,这是一般方法 - 使用现有本体中的内容,然后为尚未涵盖的内容使用您自己的自定义属性和类 【参考方案1】:

如果您需要完全的灵活性,请使用纯 RDF。您提到您需要一个灵活的数据模型,那么最好的选择是直接使用 RDF,并且只要有可能重用 RDF 中的现有词汇表。如果您对领域发表评论,我可以就本体可重用性提出更多建议。

如果任何 XMP 模板适合您的数据层,请使用这些模板。

【讨论】:

【参考方案2】:

我不是这方面的专家,但我是这样理解的。 RDF 是一种通用方法,可以存储几乎任何您想要的信息并定义您希望如何存储它。 XMP 使用 RDF 的一个子集,并附带一堆用于数据存储的预构建模板,例如 IPTC 和 Dublin Core。您仍然可以存储任意数据,但我们鼓励您使用定义的模板。换句话说,如果“图像描述”已经在其他地方,请不要重新定义它。

我想说的是看看 Dublin Core 和 IPTC,看看它们是否适合你。如果是这样,请走 XMP 路线。如果一切都是自定义的,RDF 可能是更好的方法。

【讨论】:

【参考方案3】:

XMP 是一种由 Adob​​e 开发和推动的元数据格式,基本上提供了一个定义的词汇表来指定文件的内容。 XMP 本身继承了其他标准词汇表 - 例如,都柏林核心术语被 XMP 广泛重用。

这真的不是 RDF 与 XMP 的问题:最常见的是,XMP 被序列化为 RDF,如果您查看 Adob​​e 自己的规范,他们会根据 RDF 序列化来谈论 XMP。同样重要的是要注意,RDF 是可随意扩展的......所以 msalvadores 的回答是一个很好的答案:如果 XMP 词汇表让您可以说出您想对图片说的话,请使用它并在 RDF 中序列化使用它 -这样,如果您需要说 XMP 词汇表中没有的其他内容,您可以自己扩展它或将其与其他词汇表(序列化为 RDF)结合起来,让您说出您想说的话。

希望这会有所帮助。

【讨论】:

以上是关于使用哪个,XMP 还是 RDF?的主要内容,如果未能解决你的问题,请参考以下文章

新手用bash的sed这样替换怎么不成功呢?

快速启动语义网的最佳 rdf 数据库

使用 MapReduce 解析 Freebase RDF 转储

在 Python 中解析大型 RDF

在python中怎样将rdf转化为稀疏张量

如何读取 RDF 报告文件