8

语义网:最佳实践

我是 Semantic Web 的新手,在我的应用程序中,我使用 Protege、RDF、SPARQL、Jena、Virtuaso。我担心的是,在流行的 Java 框架(如 Hibernate)中,我们有 POJO 层,在这个语义 Web 应用程序中我可以有同样的东西吗?这是一个好习惯吗?我想知道,Jena 为我提供了 RDF 和 Model 的连接,但是设计整个应用程序的最佳实践是什么?在前端我将使用简单的 HTML 和 JS,所以 servlet 将在那里。另外,我想知道用 Java 表示在 Protege 中创建的本体的标准(不使用 OntModel,因为我没有使用 OWL)。

4

2 回答 2

2

与任何 Web 应用程序一样,您必须为三层或更多层做出架构决策。

存储层

大多数本体操作工具(Jena、Virtuoso、Sesame、Protege)提供了多种存储数据的方法:进程内(内存中)模型、RDB 模型(在您选择的 RDBMS 中)、原生格式存储。选择取决于您的环境限制和性能/可扩展性要求。

操作层

在这里选择一个解决方案总是会在抽象级别和表现力之间进行一些权衡。这是因为很难将所有本体构造映射到面向对象构造。

鉴于您可以选择:

  • JastorJenaBean生成与您的本体类对应的 Java POJO 类,以及
  • Jena Model/OntModelProtege API用于在较低级别上最小化 RDF、OWL 和基于框架的本体。

Jastor 封装了 Jena OntModel,或者Model对您隐藏了 Jena 内部,因此如果您发现它受到限制,您可以随时扩展它。请注意,Jastor 似乎不再被维护。

表示层

操作层技术让您可以从表示视图中隐藏本体内部,因此您可以使用 JSP 等传统技术来生成 HTML 输出。不过,对于某些问题,以 RDF/XML 格式生成模型并对其应用 XSL(T) 类转换可能会很方便。我发现rx4RDF是一个基于 Python 的工具,可用于支持这种转换。

免责声明:我在 6 年前使用上述技术工作。在此期间情况可能发生了变化。因此:

  • 我鼓励您查看不同现有语义 Web 应用程序的架构,并找到适合您问题的一种。比如这里
  • 尽管在语义网工具领域已经做了很多工作,但这仍然是小众技术。为了更好地定位您的问题,您可以尝试在产品邮件列表和研究论坛上提出您的问题。
  • 此外,W3C 维护了相当长的RDF 处理工具列表。
于 2012-04-09T20:14:54.880 回答
1

我会推荐一本由专业从业者为其他从业者写的书:

它充满了利用 Jena 和相关语义网络技术的示例。

于 2011-11-22T08:41:37.417 回答