语义网:最佳实践
我是Semantic Web的新手,在我的应用程序中,我正在使用Protege,RDF,SPARQL,Jena,Virtuaso。我关心的是,在流行的Java Frameworks(比如Hibernate)中,我们有POJO层,在这个语义Web应用程序中我可以拥有相同的东西吗?这是一个好习惯吗?我想知道, Jena为我提供了RDF和Model的连接,但是设计整个应用程序的最佳实践是什么?在前端我将使用简单的HTML和JS,因此servlet将是那里。 另外,我想知道表示在Protege in Java中创建的本体的标准(不使用OntModel,因为我没有使用OWL)。
答案 0 :(得分:1)
我建议由专业从业者为其他从业者撰写一本书:
它充满了使用Jena和相关语义Web技术的示例。
答案 1 :(得分:1)
与任何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年前使用上述技术工作过。在此期间,情况可能已发生变化。因此: