【问题标题】:Are RDF / Triple Stores suited for storing application data? (as opposed to the graph Metadata)RDF / 三重存储是否适合存储应用程序数据? (与图元数据相反)
【发布时间】:2019-04-07 17:41:00
【问题描述】:

我正在尝试为“personal information manager”/wiki 之类的工具创建一个小型 Web 应用程序,我可以在其中以 HTML sn-ps(或者可能是 Markdown)的形式记笔记,用一些 @987654322 注释它们@microdata 并将 sn-p 和元数据存储在某处以供查询。

到目前为止,我的理解是大多数语义数据存储(三重/四重存储,或支持 RDF 的数据库)更适合主要存储和查询元数据。所以我可能还想要某种传统的存储(关系、文档存储、键值,甚至是非 rdf 图数据库),我可以在其中存储每个注释的全文,也许还有其他一些位,例如 @987654328 @、user-id 拥有笔记等,还执行传统(非语义)全文查询。

我开始寻找可以将数据元数据存储在一个地方的商店。我找到了一些:Ontotext GraphDB、Stardog、MarkLogic 等。所有这些似乎都完全符合我的要求,但是有一些非常有限的免费许可条款,这真的阻碍了我深入研究它们:我更喜欢研究开放技术我可能会用在真正的产品上。

在深入挖掘之前,我想知道:

  1. 如果我的假设是正确的:我需要将一个存储用于数据,另一个用于元数据。
  2. 如果有任何涉及免费/开源软件的设置,具有 RDF/Sparql 经验的开发人员可以推荐,考虑到我描述的问题。

现在我只是倾向于将Apache Jena 用于 RDF 存储和 SPARQL 查询,而其他数据则完全独立(最有可能是 PostgreSQL)。

【问题讨论】:

  • 为什么你认为你需要两个“商店”?我的意思是,将所有数据放入单个 RDF 三元存储有什么问题?顺便说一下,例如 Apache Jena 支持全文搜索(基于 Lucene 或 ElasticSearch),其他很多常用的三元存储也有这样的功能
  • 假设我为三部曲的名称添加了注释,就像这里的示例 2:schema.org/Book 首先,我需要将整个 html 字符串存储在某个地方(我见过有些人使用 base64 存储RDF 商店中的东西,但似乎有些阻抗不匹配)。稍后,我可能想将我从哪本书中读到的最后一章存储在某处……该信息似乎不是 RDF 存储的好候选……例如,这看起来很奇怪: -> last-read -> 日期
  • 我认为你想多了。三重存储为您处理“存储整个 [HTTP,而不是 HTML] 字符串”(假设我正确理解您的意思)。如果你真的担心SQL-style, RDF-style, and other data stores 之间的“阻抗”,你可以选择一个混合处理两者(并使两种数据都可用于两种查询),比如Virtuoso(来自我的雇主),无论是Open Source or Enterprise Edition.
  • RDF 存储非常适合用于稀疏填充和/或模式最后的数据,例如您突然希望跟踪您阅读的最后一章以及何时跟踪某些书籍。 SQL 存储通常是最好的(并且非常适合)完全填充和/或模式优先的数据——如联系地址、销售记录等。
  • 现在重新审视这个......我了解到存储纯文本大多是可以的(例如,HTML 文档的源或任何基于文本的文档的大小达到一定大小,可能是几十千字节)但是在许多存储二进制数据的三元存储实现并不理想,并且大多数三元存储都需要 base64 编码,因此数据可以保持纯文本。太大的对象(在 S;P;O 意义上)可能会弄乱索引,因此最好将 ID 存储到像 S3 这样的二进制对象的 blobstore 中。我的经验法则是对大多数明文使用三元存储,对其他所有内容使用 k/v 存储。

标签: database sparql rdf semantic-web schema.org


【解决方案1】:

在深入挖掘之前,我想知道:

如果我的假设是正确的:我需要将一个存储用于数据,另一个用于元数据。

不一定,不,尽管在某些情况下这种区别肯定是有用的。但是大多数 RDF 数据库都为数据和元数据提供了可扩展的存储。唯一的要求是您的(元)数据表示为 RDF。如果您担心文本查询之类的性能,它们中的大多数都通过 Lucene、Solr 或 Elasticsearch 提供对全文索引的支持。

考虑到我描述的问题,如果有任何涉及免费/开源软件的设置,具有 RDF/Sparql 经验的开发人员可以推荐。

这真的不是问这个问题的正确地方。工具推荐在 StackOverflow 上被认为是题外话,因为它们会吸引有偏见的答案。但如前所述,有很多工具可供您研究,包括开源/免费和商业。我建议您选择一个您喜欢的外观,进行一些实验,或者与该特定工具的社区交谈以解释您正在尝试做什么。 Apache Jena 和 Eclipse Rdf4j 是两个流行的开源项目,但还有很多其他项目。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-03
    • 1970-01-01
    • 1970-01-01
    • 2011-01-30
    • 2010-12-23
    • 2011-12-11
    • 2010-09-22
    • 1970-01-01
    相关资源
    最近更新 更多