如何从多个存储库中提取相关信息?

时间:2011-03-09 05:07:29

标签: java jena semantic-web

问题陈述:

信息跨越多个存储库 - SAP,DB等。现在,当我搜索特定的东西时,我想从所有存储库中提取相关数据。 (暂时,假设我能够以巨大的XML格式从所有这些存储库中提取数据。)

如何为搜索添加意义?

我正在寻找基于java的解决方案。

Jena / Semantic-Web会帮助我吗?我可以在RDF中定义关系吗?

由于我对语义Web知之甚少,我试图了解它是否解决了我的问题。如果我错了,请纠正我。

4 个答案:

答案 0 :(得分:7)

你在这里问过一系列问题(不过,对于StackOverflow来说,这不是最好的做法),但我认为你要问的关键问题是:

  

如何为搜索添加意义?

这实际上取决于清楚地了解您尝试提供的业务价值或用户体验。 “含义”是一个不精确的术语 - 我认为如果您能够更加准确地了解您希望用户能够提出的问题类别以及回答的类型,那么您将更容易分析所需的技术。他们会发现有用的。

考虑到这一点,我对您的一般性问题的一般回答是,为了整合来自不同的异构信息源的信息,您需要能够在概念上将与用户联系起来。会理解。因此,不仅仅是一个低级别的“此数据库字段映射到该XML元素”,例如,“此数据集记录了客户与销售团队的交互,这些是生产线吞吐量的统计数据,并且它们通过订单队列中的订单“。这有点模糊,但这是一个简单的例子来说明我的意思。那么,将CRM信息与制造统计数据联系起来的方法就是拥有一些概念集合,您可以将所有内容与之相关联。在语义网络世界中,我们称之为本体。设计一个本体来覆盖整个业务可能很难,但是,从松散的角度来说,您可以应用敏捷技术来逐步发展您的理解和本体模型。

一旦你有了本体论,你就可以使用像Jena这样的库来帮助你从不同来源中提取信息,并将它们存储在你可以与你的本体相关的表格中。使用诸如RDFS之类的语言或者更好的OWL使本体显式化的一个优点是,您可以使用自动推理工具自动从数据中得出新的结论,或者将一些数据映射表示为规则。有些人认为规则是一种更抽象,更易理解的符号。

有很多方法可以解决您所描述的问题,Jena不会为您提供解决方案本身。我认为拥有合适的本体对我理解你的问题非常重要。数据的复杂性和用户需求将驱动本体需要的复杂程度,这将取决于对问题有更清晰的业务级别理解。一旦你有了,那么选择正确的RDF / OWL工具将相对简单。

答案 1 :(得分:2)

您可以使用ISO 15926等方法。在本标准中,您有抽象模型(201个实体),并且具有特定知识领域的RDL(参考数据库)。 为了对所有存储库使用一个全局查询,您可以在不同的应用程序之间使用映射,并在RDF中存储映射等效性。通过这种方式,您需要为每个应用程序使用外观。

答案 2 :(得分:1)

我看到两种方法:

  • 拉取数据,将其编入索引(Lucene?)并使用自定义索引搜索“副本”。如果可能的话,我会避免这种情况,因为移动大量数据通常是个坏主意。

  • 将一些代理移动到尽可能靠近数据源的位置,在本地运行查询(靠近SAP,DB等)并仅传输您真正需要的结果部分。

考虑将集成框架视为Apache Camel或Spring Integration。

答案 3 :(得分:1)

有趣的问题。

如果确实有一些通用的概念模型允许您将所有数据映射到连贯的本体,那么您可以按照Ian Dickinson建议的路线进行操作。如果你正在使用SAP,我猜你在谈论大量数据,以及一个中等复杂的业务领域。这样的项目将是一项重大任务 - 技术要素只是一个开始。

我在语义网诞生之前就开始研究这样一个项目,它是一个庞大而复杂的项目野兽。问题不在于技术问题,而是商业专家对于词汇的含义,商业概念之间的关系存在矛盾的观点(“所有员工必须属于一个部门。哦,除了弗雷德,他为财务月亮” ),并发现很难使用我们技术人员喜欢使用的抽象。

替代方案基于“搜索” - 找到一种在一些最小结构中表示数据的方法,使用Lucene(或类似方法)构建索引,并允许用户浏览该机制。当然,这可能意味着构建一个相当复杂的Web应用程序,但我认为大多数人都习惯Google来找到他们想要的东西......