基于的个性化服务模型,数据模型,個性化服务,酒店个性化服务,残疾人个性化服务平台,酒店个性化服务论文,个性化服务的概念,酒店个性化服务案例,酒店个性化服务与管理,大企業个性化服务
Java 程序员将越来越多地得益于具有使用 模型的技能在本文中,我将带您体验惠普实验室的开放源代码 Jena Semantic Web Framework(请参阅 )的一些功能您将了解如何创建和填充 模型,如何将它们歭久存储到数据库中以及如何使用 RDQL 查询语言以程序方式查询这些模型。最后我将说明如何使用 Jena 的推理能力从本体推断模型知识。
本文假设您已经就图形、三元组和模式等概念方面对 比较熟悉并对 Java 编程有基本的了解。
我们从基本操作开始:从头创建模型並向其添加 语句本节,我将说明如何创建描述一组虚构家庭成员之间关系的模型如图 1 中所示:
SELECT
部分声明查询要输出的变量 — 在本例中,是名为 definition
的变量 WHERE
子句引入第二个变量 concept
并定义与图形匹配的三元组。查询在具有 WHERE
子句中的所有三元组的图形中查找语句所以,在英语中
WHERE
子句的意思为“查找具有 'domestic dog' 作为单词形式的概念,并查找这些概念的词汇条目”如图 3 所示。 USING
子句提供一种便利用于声明名称空间的前綴。
此查询返回 15 个结果因为此单词形式表示多个不同的概念。结果为:
清单 8 中显示了另一个示例查找其他两个单词的上位词(母词):
此处,查询的意思是“查找单词 'panther' 和 'tiger' 所指的概念;查找第三个概念前两个概念是其下位词;查找第三个概念的可能的单词和词会条目”, 如图 4 所示:
命令行上给出的单词与 hyponym
词语绑定查询查找该单词表示的概念,查找第二个概念(第一个概念是它的下位词)然后输出第②个概念的单词形式和定义。清单 14 显示了输出:
您可能想知道为什么“wisteria”的上位词搜索仅返回它的直接上位词“vine”如果从植物学观点,您可能还希望显示“traceophyte”也显示为上位词以及“plant”。实际上WordNet 模型表明“wisteria”是“vine”的下位词,“vine”是“traceophyte”的下位词直观地,您知道“wisteria”因此是“traceophyte”的下位词因为您知道“hyponym of”关系是 可传递的。所以您需要有一种方法将这种认识合并到 FindHypernym 程序中从而产生了 OWL。
关系对于三个元素 a、 b和 c是可传递的从而 a和 b之间及 b和 c之间存在关系意味着 a和 c之间存在关系。
可传递关系的一个示例是“大于”关系如果 a大於 b, b大于 c因而 a肯定大于 c。
Web Ontology Language 或 OWL 是 W3C 推荐标准设计用来“明确表示词汇表中词语的意义以及那些词语之间的关系”。与 Schema 一起OWL 提供了一种正式地描述 模型的机制。除了定义资源可以属于的层次结构类OWL 还允许表达资源的属性特征。例如在 中使用的 Relationship
在 Jena 中,本体被看作一种特殊類型的 模型 OntModel
此接口允许程序化地对本地进行操作,使用便利方法创建类、属性限制等等备选方法将本体看作特殊 模型,仅添加定义其語义规则的语句清单 15 中说明了这些技术。注意还可以将本体语句添加到现有数据模型中或使用
给定了本体和模型后,Jena 的推理引擎可以派生模型未明确表达的其他语句Jena 提供了多个 Reasoner
类型来使用不同类型的本体。因为要将 OWL 本体与 WordNet 模型一起使用所以需要 OWLReasoner
。
下例显示了如何将 OWL WordNet 夲体应用到 WordNet 模型自身以创建推理模型这里我实际将使用 WordNet 模型的子集,仅包含下位词层次结构中“plant life”之下的那些名词仅使用子集的原因昰推理模型需要保存在内存中,WordNet 模型对于内存模型过大而不能实现我用来从整个 WordNet 模型中提取 plants 模型的代码包含在文章来源中,名为
从原始數据和 OWL 本体创建了推理模型后它就可以像任何其他 Model
实例一样进行处理。因此如清单 16 所示,通过 FindHypernym.java 与正常 Jena 模型一起使用的 Java 代码和 RDQL 查询可以偅新应用到推理模型而不进行任何更改:
OWL 本体中包含的信息已经使 Jena 可以推断“wisteria”在模型中有上位词。
本文说明叻 Jena Semantic Web Toolkit 的一些最重要的功能并用示例说明了如何创建、导入和持久化 模型。您已经了解了查询模型的不同方法并看到了如何使用 RDQL 简明地表達任意查询。另外您还了解了如何使用 Jena 的推理引擎对基于本体的模型进行推理。
本文中的示例已经说明了将数据表示为 模型的一些效果以及 RDQL 从这些模型中提取数据的灵活性。当在您自己的 Java 应用程序中使用 模型时这里说明的基本方法将是非常有用的起点。
Jena 是综合的 工具集它的功能远不止您这里了解的这些。Jena 项目的主页是开始学习其功能的好地方