使用 Jena 和 Jena 开发语义应用程序的最佳实践是什么? RDF
语义网:最佳实践
我是语义网新手,在我的应用程序中,我使用 Protege、RDF、SPARQL、Jena、Virtuaso。我担心的是,在流行的 Java 框架(如 Hibernate)中,我们有 POJO 层,在这个语义 Web 应用程序中我可以有同样的东西吗?这是一个好的做法吗?我想知道,Jena 为我提供了 RDF 和模型的连接,但是设计整个应用程序的最佳实践是什么? 在前端,我将使用简单的 HTML 和 JS,因此 servlet 将是那里。 另外,我想知道用 Java 表示在 Protege 中创建的本体的标准(不使用 OntModel,因为我没有使用 OWL)。
Semantic Web: Best Practices
I am new to Semantic Web, in my application, I'm using Protege,RDF,SPARQL,Jena,Virtuaso. My concern is, in popular Java Frameworks (like Hibernate), we have POJO layer, in this Semantic Web application can I have the same thing? is it a good practice? I want to know, Jena is providing me the connection of RDF and Model, but what are the best practices to design the whole application? In front end I will use simple HTML and JS, so servlets will be there. Also, I want to know the standards of representing an ontology created in Protege in Java (without using OntModel, because I am not using OWL).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
与在任何 Web 应用程序中一样,您必须为三层或更多层做出架构决策。
存储层
大多数本体操作工具(Jena、Virtuoso、Sesame、Protege)都提供了多种存储数据的方法:进程内(内存中)模型、RDB 模型(在 RDBMS 中)您的选择),本机格式存储。选择取决于您的环境限制和性能/可扩展性要求。
操纵层
在这里选择解决方案总是会在抽象级别和表达能力之间进行一些权衡。这是因为很难将所有本体构造映射到面向对象构造。
鉴于您可以选择:
Model
/OntModel
,或 Protege API 在较低级别上微型化 RDF、OWL 和基于框架的本体。Jastor 包装了 Jena
OntModel
或Model
,但对您隐藏了 Jena 内部结构,因此,如果您发现它有限,您可以随时扩展它。请注意,Jastor 似乎不再被维护。表示层
操作层技术使您可以从表示视图中隐藏本体内部结构,因此您可以使用 JSP 等传统技术来生成 HTML 输出。尽管如此,对于某些问题,以 RDF/XML 格式发出模型并对其应用类似 XSL(T) 的转换可能会很方便。我发现 rx4RDF,一个基于 Python 的工具,对于支持这种转换非常有用。
免责声明:我 6 年前就使用了上述技术。与此同时,事情可能已经发生了变化。因此:
As in any Web application you will have to make architectural decisions for three or more layers.
Storage layer
Most of the tools for ontology manipulation (Jena, Virtuoso, Sesame, Protege) offers a number of ways to store your data: in-process (in memory) models, RDB model (in RDBMS of your choice), native format storage. The choice depends on your environment constrains and performance/scalability requirements.
Manipulation layer
Selecting a solution here brings always some trade-off between level of abstraction and expressiveness. This is because it's hard to map all ontology constructs to object-oriented constructs.
Given that you may choose between:
Model
/OntModel
, or Protege API to minipulate RDF, OWL, and frame-based ontologies on a lower level.Jastor wraps Jena
OntModel
orModel
but hides Jena internals from you, so if you find it limited you may always extend it. Note, Jastor seems not to be maintained any more.Representation layer
Manipulation layer technologies let's you hide ontology internals from the representation view, so you may use traditional technologies like JSP to produce HTML output. Still, for some problems it may be convenient for you to emit model in RDF/XML format and apply XSL(T)-like transformation to it. I found rx4RDF, a Python-based tool, useful for supporting this kind of transformations.
Disclaimer: I worked 6 years ago with the mentioned technologies. Things may have changed in the meantime. Hence:
我建议其他从业者阅读一本由专业从业者编写的书:
它充满了示例利用耶拿和相关的语义网络技术。
I'd suggest a book written by a professional practitioner for other practitioners:
It is full of examples that utlize Jena and related semantic web technologies.