was*_*lli 10 java ontology jena
我有一些数据三元组,我想用某种基本的OWL本体编写.我有三胞胎喜欢:
Delhi is part of India
Run Code Online (Sandbox Code Playgroud)
要么
India is an Asian country
Run Code Online (Sandbox Code Playgroud)
请注意,我的关系类似于"is-a","part-of"或"related-to".构建本体的最简单方法是什么?任何工作示例或对示例网站的引用都将是很有帮助的!
Ian*_*son 10
在你的问题中有很多不同的东西混在一起,我强烈建议你花点时间(远离键盘!)来思考你想要在这里实现的目标.
首先,地理本体可以变得非常复杂,并且在这个领域已经做了很多工作.可能明显的起点是GeoNames本体,它为地理特征命名,包括Dehli等城市和印度等国家.至少应该为应用程序中的位置重复使用这些名称,因为这样可以最大限度地提高数据与其他可用链接数据源成功连接的可能性.
但是,您可能不希望在您的应用程序中使用整个GeoNames(我猜),所以您还需要清楚为什么需要一个本体.解决这个问题的一个好方法是从你的应用程序的外部:而不是担心使用哪种Jena模型,首先考虑完成句子的方法"使用本体,我的应用程序的用户将能够. ..".然后,这应该引导您为您的本体建立一些能力问题(例如,参见本指南的第3部分).一旦您知道要表示哪种类型的信息,以及需要应用哪些类型的查询,您的技术选择就会更加清晰.我意识到这些应用程序通常是迭代开发的,并且您希望尽早尝试一些代码,但我仍然主张在您开始编码之前更清楚地了解目的地.
您暗示您想使用Jena来驱动网站.这里有很多选择.不要被术语语义网误导- 这实际上意味着将类似网络的特性带入内联数据集,而不是将语义本身放入人类可读的网页中.虽然您可以这样做,而且很多人都这样做,但您的架构中还需要一些额外的层.我们通常使用以下两种方法之一:在servlet容器中使用Jena和模板引擎(如Velocity),或使用Ruby Web框架并通过JRuby驱动Jena .还有许多其他方法可以解决这个特定问题:Jena没有直接解决Web发布问题,但它可以在任何基于Java的Web框架中使用.
最后,关于命名空间,您应该尽可能重用现有的词汇表,从而重用命名空间.不要为已经在某个地方的数据网上有表示的东西组成新名称.使用GeoNames,或DbPedia,或任何其他适合的已发布词汇表.如果它们不合适,那么您应该创建一个新名称,而不是以不兼容的方式使用现有名称.在这种情况下,您应该使用应用程序的Web域(例如您的公司或大学)作为命名空间的基础.理想情况下,您应该在命名空间的基本URL上发布本体,但有时根据本地Web策略很难安排.
我推荐曼彻斯特大学的OWL API。通过这种方式,您可以开始在 Java 中“即时”创建本体,并且通过单个方法调用,您可以根据需要以您喜欢的格式(RDF、曼彻斯特语法等)将其序列化,或者直接处理内部 -记忆表示。通过这种方式,您可以在程序的上下文中快速原型化并试验您的本体。
\n\n对于该库及其主要组件的概述,我建议该库的创建者提供的教程(代码教程),它涵盖了 90% 的基本需求。
\n\nPS: Prot\xc3\xa9g\xc3\xa9 是基于 OWL Api 的,你也可以按照建议尝试一下,但特别是一开始我更喜欢快速玩弄本体,当我头脑清醒时切换到像 Protege 这样的工程环境足够的。此外,对于外部本体,您需要学习如何导航它,恕我直言,一开始确实不值得。
\n