版本化的 RDF 存储

发布于 2024-07-11 11:24:29 字数 1542 浏览 9 评论 0原文

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

风渺 2024-07-18 11:24:30

看一下 Virtuoso 的 RDF 支持是否满足您的需求,听起来就像尽管它可能会走得很远,而且它也能很好地与 XML 和 Web 服务配合。 有商业版本和 GPL 版本。

Take a look to see if Virtuoso's RDF support meets your needs, it sounds as though it might go quite a way, and it plays nice with XML and web services too. There's a commercial and a GPL'd version.

谎言 2024-07-18 11:24:30

Mulgara/Fedora-Commons 可能符合要求。 我相信隐私目前是一个主要项目,并且我知道它支持版本控制,但它可能太多了,因为它也是一个对象存储。

Mulgara/Fedora-Commons might fit the bill. I belive that privacy is currently a major project, and I understand that it supports versioning, but it might be too much in that is is an object-store too.

遥远的绿洲 2024-07-18 11:24:30

(几年后)

我认为Oracle的RDF存储:

http:// www.oracle.com/technetwork/database/options/semantic-tech/index.html

以及最近在 IBM DB2 中发布的图形存储支持其中的大部分内容:

http://www-01.ibm.com/software/data/db2/linux-unix- windows/graph-store.html

(years later)

I think both Oracle's RDF store:

http://www.oracle.com/technetwork/database/options/semantic-tech/index.html

and the recently announced graph store in IBMs DB2 supports much of this:

http://www-01.ibm.com/software/data/db2/linux-unix-windows/graph-store.html

清风夜微凉 2024-07-18 11:24:29

达丽斯是显而易见的选择,但隐私可能是一个问题,或者无论如何都是感知到的问题,因为它是 SaaS 产品。 我说“显而易见”是因为您列表中的三个大胆功能是其平台 IIRC 的核心功能。

他们没有这样的功能列表 - 这使得很难支持这个答案,但他们确实 假设数据存储可以单独保护。 我想您可以 - 在紧要关头 - 代表您自己的每个用户注册一个单独的商店。

通常,通过为每个用户任务编写自定义界面来最好地支持人类可读的输入,因此您最好准备好根据需要进行操作。

关于黄金时段的准备情况。 对于某些应用程序,我会说“是”,但在其他情况下“不完全是”。 大多数情况下,社区需要与现有的开发人员工具集集成,并针对“普通”开发人员(可能是使用 Java、.NET 和 Ruby/Groovy 的 OO 开发人员)编写良好的文档,然后我预测它会像滚雪球一样越滚越大。

另请参阅RDF 三元组的时间范围

Talis is the obvious choice, but privacy may be an issue, or perceived issue anyway, since its a SaaS offering. I say obvious because the three emboldened features in your list are core features of their platform IIRC.

They don't have a features list as such - which makes it hard to back up this answer, but they do say that stores of data can be individually secured. I suppose you could - at a pinch - sign up to a separate store on behalf of each of your own users.

Human readable input is often best supported by writing custom interfaces for each user-task, so you best be prepared to do that as needs demand.

Regarding prime-time readiness. I'd say yes for some applications but otherwise "not quite". Mostly the community needs to integrate with existing developer toolsets and write good documentation aimed at "ordinary" developers - probably OO developers using Java, .NET and Ruby/Groovy - and then I predict it will snowball.

See also Temporal Scope for RDF triples

半暖夏伤 2024-07-18 11:24:29

来自:http://www. Semanticoverflow.com/questions/453/how-to-implement-semantic-data-versioning/748#748


我个人非常喜欢 Freebase 采用的务实方法。

浏览和编辑人类视图:

  • http://www.freebase.com/view/guid/9202a8c04000641f80000000041ecebd
  • http://www.freebase.com/edit/topic/guid/9202a8c04000641f80000000041ecebd

此处公开的数据模型:

  • http://www .freebase.com/tools/explore/guid/9202a8c04000641f80000000041ecebd

严格来说,它不是 RDF(它可能是它的超集),但它的一部分可以公开为 RDF:

  • http://rdf.freebase.com/rdf/guid .9202a8c04000641f80000000041ecebd

因为它是一个社区驱动的网站,所以他们不仅需要跟踪谁说了什么、什么时候......而且他们可能还保留历史记录(从不删除任何内容):

  • http://www.freebase.com/history/ view/guid/9202a8c04000641f80000000041ecebd

总而言之,我解决您问题的方式非常相似且务实。 AFAIK,您找不到开箱即用的解决方案。 但是,您可以使用“元组”存储(3 或 4 个不足以以最精细的粒度保存历史记录(即三元组|四元组))。

我会使用 TDB 代码作为库(因为它为您提供 B+Tree 和许多您需要的有用的东西),并且我会使用一个数据模型,该模型允许我:计算四边形、为四边形分配所有权、时间戳和上一个/下一个四元组(如果可用):

[ id | g | s | p | o | user | timestamp | prev | next ]

其中:

   id - long (unique identifier, same (g,s,p,o) will have different id... 
        a lot of space, but you can count quads... and when you have a 
        community driven website (like this one) counting things it's 
        important.
    g - URI (or blank node?|absent (i.e. default graph))
    s - URI|blank node
    p - URI
    o - URI|blank node|literal
 user - URI

时间戳 - 创建四元组的时间
prev - 前一个四边形的 id(如果存在)
next - 下一个四边形的 id(如果存在)

然后,您需要考虑您需要哪些索引,这取决于您想要公开和访问数据的方式。

您不需要向外部用户/人员/应用程序公开所有内部结构/索引。 而且,当(如果)用于表示版本控制的 RDF 词汇表或本体等出现时,您可以使用它们快速公开您的数据(如果您愿意)。

请注意,这不是常见的做法,如果您用“语义网络眼镜”查看它,它可能是错误的、不好的等等。但是,我正在分享这个想法,因为我相信它没有害处,它可以为您的问题提供解决方案(它会比四元存储更慢并且使用更多空间),其中一部分可以作为 RDF / LinkedData 暴露给语义网络。

我的 2 美分(异端)。

From: http://www.semanticoverflow.com/questions/453/how-to-implement-semantic-data-versioning/748#748


I personally quite like the pragmatic approach which Freebase has adopted.

Browse and edit views for humans:

  • http ://www.freebase.com/view/guid/9202a8c04000641f80000000041ecebd
  • http ://www.freebase.com/edit/topic/guid/9202a8c04000641f80000000041ecebd

The data model exposed here:

  • http ://www.freebase.com/tools/explore/guid/9202a8c04000641f80000000041ecebd

Stricly speaking, it's not RDF (it's probably a superset of it), but part of it can be exposed as RDF:

  • http ://rdf.freebase.com/rdf/guid.9202a8c04000641f80000000041ecebd

Since it's a community driven website, not only they need to track who said what, when... but they are probably keeping the history as well (never delete anything):

  • http ://www.freebase.com/history/view/guid/9202a8c04000641f80000000041ecebd

To conclude, the way I would tackle your problem is very similar and pragmatic. AFAIK, you will not find a solution which works out-of-the-box. But, you could use a "tuple" store (3 or 4 aren't enough to keep history at the finest granularity (i.e. triples|quads)).

I would use TDB code as a library (since it gives you B+Trees and a lot of useful things you need) and I would use a data model which allows me to: count quads, assign an ownership to a quad, a timestamp and previous/next quad(s) if available:

[ id | g | s | p | o | user | timestamp | prev | next ]

Where:

   id - long (unique identifier, same (g,s,p,o) will have different id... 
        a lot of space, but you can count quads... and when you have a 
        community driven website (like this one) counting things it's 
        important.
    g - URI (or blank node?|absent (i.e. default graph))
    s - URI|blank node
    p - URI
    o - URI|blank node|literal
 user - URI

timestamp - when the quad was created
prev - id of the previous quad (if present)
next - id of the next quad (if present)

Then, you need to think about which indexes you need and this would depend on the way you want to expose and access your data.

You do not need to expose all your internal structures/indexes to external users/people/applications. And, when (and if), RDF vocabularies or ontologies for representing versioning, etc. will emerge, you are able to quickly expose your data using them (if you want to).

Be warned, this is not common practice and it you look at it with your "semantic web glasses" it's probably wrong, bad, etc. But, I am sharing the idea, since I believe it's not harmful, it allows to provide a solution to your question (it will be slower and use more space than a quad store), part of it can be exposed to the semantic web as RDF / LinkedData.

My 2 (heretic) cents.

等你爱我 2024-07-18 11:24:29

LMF 附带版本控制模块:http://code.google.com/p/lmf/ wiki/ModuleVersioning

链接媒体框架是一个使用 JavaEE 开发的易于设置的服务器应用程序,它捆绑了核心语义 Web 技术来提供许多高级服务。

LMF comes with a versioning module: http://code.google.com/p/lmf/wiki/ModuleVersioning

The Linked Media Framework is an easy-to-setup server application developed in JavaEE that bundles core Semantic Web technologies to offer many advanced services.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文