3

问题陈述:

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

如何为我的搜索添加意义?

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

Jena/语义网会帮助我吗?我可以在 RDF 中定义关系吗?

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

4

4 回答 4

7

您在这里提出了一系列问题(顺便说一句,这并不是 StackOverflow 的最佳实践),但我认为您要问的关键问题是:

如何为我的搜索添加意义?

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

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

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

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

于 2011-03-14T10:44:55.987 回答
2

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

于 2011-03-09T05:16:12.060 回答
1

我看到两种方法:

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

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

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

于 2011-03-14T11:15:39.323 回答
1

有趣的问题。

如果确实有一些通用的概念模型允许您将所有数据映射到一个连贯的本体,您可以遵循 Ian Dickinson 推荐的路线。如果您使用的是 SAP,我猜您是在谈论大量数据和中等复杂的业务领域。这样的项目将是一项重大任务——技术要素只是一个开始。

早在语义网诞生之前,我就从事过这样一个项目,这是一个庞大而复杂的项目。问题与其说是技术问题,不如说是业务专家对词语的含义、业务概念之间的关系有相互矛盾的想法(“所有员工都必须属于一个部门。哦,除了弗雷德,他兼职做财务” ),并且发现很难使用我们技术人员喜欢使用的抽象。

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

于 2011-03-16T19:32:00.683 回答