对于语义Web类型应用程序,我们是否使用RDF或者专有模型作为内部表示形式?
如果我们正在从事一个存储用于语义Web的数据的项目,我们是否将RDF甚至OWL用作内部数据格式,或者是否有自己的数据模型/本体要映射到RDF以实现互操作性?
如果我们使用RDF,那么在实现诸如循环类层次结构之类的各种东西时我们有什么经验?
如果我们做自己的事情,它与RDF / OWL有何不同?
解决方案
我目前正在该领域中一些非常小的项目上,尽管在那里为了进行解析,我使用了一个简单的URI注册表来避免数据结构本身的循环,但是我还是主要在其中使用RDF。虽然,我不得不说我仍处于这些项目的概念阶段。最后,我主要依赖于第三方存储后端,例如Jena,rdflib等。
我与HP的Jena团队一起工作(的确是为Jena做出了自己的贡献),因此使用Jena是我们团队中相当简单的选择。但是,除了"下一个平台"的便利性之外,还有更多原因。语义网的各种标准包含很多细节和复杂性,而正确地做到这一点并不是一件容易的事。我遇到了许多可下载的本体和其他数据集,例如,这些数据集不符合IRI规范。在一个完全独立的应用程序中,如果我们不违反标准就可能没有太大关系,但是在这种情况下,我们首先要问为什么要使用语义Web技术。对我而言,针对应用程序的semweb方法的一个重要价值将是数据互操作和开放数据链接,在这种情况下,标准一致性非常重要。
我的大部分数据都存储在三元组中,但是我确实使用自定义表作为常见查询的索引。如果我们提前知道查询模式,那么对于通用的无模式三元组存储来说,良好的数据库引擎中索引良好的表将很难被击败。
显然,使用Jena的一个缺点是它特定于Java。我确实将jena与jruby一起使用,但是我期待一个好的本机Ruby RDF库(正在进行中)。当我们处理复杂的富客户端接口时,我还希望在Javascript和Flex中提供更完整的RDF / OWL支持。
伊恩