3

我使用 Protege 生成了 OWL 本体。我想使用我的 OWL 本体并创建要使用 Jena 保存在三元组存储中的 RDF 三元组。

我知道如何读/写 RDF,但我不知道如何为那些 OWL 类创建实例。例如:

我拥有的示例 OWL 本体

   <owl:Class rdf:about="Person"/>
   <owl:Class rdf:about="Animal"/>

   <owl:DatatypeProperty rdf:about="salary">
     <rdfs:domain rdf:resource="Person"/>
     <rdfs:range rdf:resource="&xsd;real"/>
   </owl:DatatypeProperty>

所需的 RDF 是这样的

    <Person rdf:about="Jack">
      <salary>1234</salary> 
    </Person>
4

2 回答 2

5

您可以使用 Jena Ontology API 以编程方式创建实例。有两种方法可以做到这一点。两者都要求您提供一个OntClass对象和一个OntModel

  1. 调用对象的createIndividual方法OntClass

    OntClass class = ontModel.createClass( yourNamespace + "SomeClass" );
    Individual instance = class.createIndividual( yourNamespace + "individual1");
    
  2. 调用对象的createIndividual方法OntModel并将OntClass对象作为参数传递。

    OntClass class = ontModel.createClass( yourNamespace + "SomeClass");
    Individual individual = ontModel.createIndividual( yourNameSpace + "individual2", class);
    

更多信息可以访问Jena Ontology API 官方教程

于 2012-11-15T19:36:20.987 回答
2

方法 #1 当您使用 Jena 或 Sesame 解析 OWL 时,您将在模型或图表中以三元组的形式获得猫头鹰。这些三元组可以存储在三元组存储中。

方法#2 你可以通过以三元组的形式创建实例来解决这个问题。以下是示例 java 代码。请注意,我没有测试此代码,这只是为了理解。

StringBuilder sb = new StringBuilder();

sb.append("xmlns:drug=\" http ://www.healthcare.com/patient/drug# \""); sb.append("xmlns:rdf=\" http ://www.w3.org/1999/02/22-rdf-syntax-ns# \"");

sb.append("compliance:treatmensub rdf:resource=\" http://www.healthcare.com/patient/drug##id_pa_ "+id+" pr "+"_"+drugname+"\"/>");

但我建议遵循方法#1,因为您有一个 OWL 文件。

于 2012-11-16T10:22:45.247 回答