三重商店的数据库结构?

时间:2012-05-29 15:39:27

标签: symfony rdf semantic-web triplestore rdflib

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

我会看到这样的事情:

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

字段:

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

TAG_TAG
  ID
  *TAG1
  *TAG2
  *ASSOCIATION_TYPE
  ASSOCIATION_PARAM

像这样,我能够:

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

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

所以我有几个问题:

  1. 您认为这是一种有效存储三元组的好方法吗?
  2. 是否有任何RDF层来提取现有的RDF / triples数据库并填充我自己的数据库?
  3. 我应该考虑使用某种像芝麻这样的tripleStore并将它与Symfony一起使用吗?

2 个答案:

答案 0 :(得分:2)

回答你的问题:

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

如果你问三倍的存储,不要。请参阅我对#3的回复。

2)有许多可用的RDF库,你有Jena&amp; Java中为Sesame,.Net世界为dotNetRdf,python中为RDFLib,C为redland等。

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

答案 1 :(得分:1)

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

  • ARC2提供基于MySQL的三重商店
  • librdf扩展为standrad RDF C库提供了一个PHP包装器
  • Erfurt Library是一个抽象库,用于连接开源Virtuoso Server三元组商店,但也有自己的基于Zend DB的三元组商店可以与MySQL一起使用。