2

我想在我的 Symfony2 项目中使用 RDF / 三元组来组织事物(在我的例子中是标签)。

我会看到这样的东西:

ENTITY TAG  <-------------- TAG_TAG --------------> ASSOCIATION_TYPE
         ^                     |
         |---------------------/

领域:

TAG
  ID
  Tag (text)
  Description (text/html)

TAG_TAG
  ID
  *TAG1
  *TAG2
  *ASSOCIATION_TYPE
  ASSOCIATION_PARAM

像这样,我将能够:

  • 存储三重关联
  • 设置不同的关联类型。例如,PHPProgramming_language ;stackoverflow.com是一个网站;但是地球绕着太阳转。
  • 设置参数(允许在关联中提供更多信息)

TAG_TAG我们可以考虑在和之间设置多对多关系ASSOCIATION_TYPE。通过这样做,我们可以设置几个参数。

所以我有几个问题:

  1. 您认为这是有效存储三元组的好方法吗?
  2. 是否有任何 RDF 层可以提取现有的 RDF/三元组数据库并填充我自己的?
  3. 我是否应该考虑使用诸如 Sesame 之类的 TripleStore 并将其与 Symfony 一起使用?
4

2 回答 2

2

要回答您的问题:

1)我不完全确定你在问什么。如果您问这是否是一种合理的数据建模方式,那可能没问题。但是您的图表不清楚,并且您对细节有点了解。最好的办法就是做一些可以开始的事情。您可以稍后改进建模,而不会有太多麻烦。

如果您要询问三元组的存储,请不要。请参阅我对#3 的回复。

2) 有许多 RDF 库可用,Java 中有JenaSesame , .Net 世界有dotNetRdf,python 中有 RDFLib ,C 有redland等。

3) 是的。不要试图重新发明轮子并建立自己的三重商店。这不是一个简单的项目,即使在任何合理的时间范围内,您都不会比现有的最差的三重商店做得更好。

于 2012-05-30T12:03:41.953 回答
2

正如迈克尔所说 - 请不要建立自己的三重商店!PHP中有几种可用的解决方案:

  • ARC2提供基于 MySQL 的三元存储
  • librdf 扩展为标准 RDF C 库提供了一个 PHP 包装器
  • Erfurt Library是一个用于连接开源Virtuoso Server三元存储的抽象库,但也有自己的基于 Zend DB 的三元存储,可以与 MySQL 一起使用。
于 2014-07-23T21:14:47.787 回答