语义网:最佳实践
我是Semantic Web的新手,在我的应用程序中,我使用的是Protege,RDF,SPARQL,Jena,Virtuaso。我关心的是,在流行的Java Frameworks(比如Hibernate)中,我们有POJO层,在这个语义Web应用程序中我可以拥有相同的东西吗?这是一个好习惯吗?我想知道,Jena为我提供了RDF和Model的连接,但是设计整个应用程序的最佳实践是什么?在前端,我将使用简单的HTML和JS,因此servlet将在那里。另外,我想知道表示在Protege in Java中创建的本体的标准(不使用OntModel,因为我没有使用OWL)。
我建议由专业从业者为其他从业者撰写一本书:
它充满了利用Jena和相关语义Web技术的示例。
与任何Web应用程序一样,您必须为三层或更多层做出架构决策。
存储层
大多数用于本体操作的工具(Jena,Virtuoso,Sesame,Protege)提供了许多存储数据的方法:进程内(内存)模型,RDB模型(在您选择的RDBMS中),本机格式存储。选择取决于您的环境约束和性能/可伸缩性要求。
操纵层
在这里选择解决方案总会在抽象级别和表达性之间进行一些权衡。这是因为很难将所有本体构造映射到面向对象的构造。
鉴于您可以选择:
Jastor包裹了Jena Model
或OntModel
,但隐藏了Jena的内部构件,所以如果你发现它有限,你可以随时扩展它。注意,Jastor似乎不再维护了。
表示层
操作层技术允许您从表示视图隐藏本体内部,因此您可以使用JSP等传统技术来生成HTML输出。但是,对于某些问题,您可以方便地以RDF / XML格式发出模型并对其应用类似XSL(T)的转换。我发现Protege API是一个基于Python的工具,可用于支持这种转换。
免责声明:我在6年前使用上述技术工作过。在此期间,情况可能已发生变化。因此:
OntModel
。Model
用于RDF处理。