使用Protege-OWL API处理owl文件。(删除类,删除属性)

时间:2014-04-02 16:14:26

标签: class owl protege object-property

我需要使用Protege-Owl API来操作owl文件。你知道,创建类和属性并不太困难。但我不知道如何删除类或属性。如果我们将owl文件视为图形,删除类意味着删除节点及其直接边缘。为例:

<owl:unionOf rdf:parseType="Collection">
                <rdf:Description rdf:about="&data;DataBundle"/>
                <rdf:Description rdf:about="&data;DataItem"/>
</owl:unionOf>

如果我想删除类DataItem,

  1. 我应该如何使用Protege-OWL API? RDFResource.delete()可以实现吗?我已经尝试过,但我无法做到这一点,也许有些不对劲。

  2. 删除DataItem后会得到什么?

  3. 如果DataItem是属性的域,我删除它后会得到什么?

  4. 我希望得到你的答案。

    编辑:Protege OWL API是描述的here api,而不是here所描述的OWL API。

1 个答案:

答案 0 :(得分:0)

@Joshua Taylor,谢谢你的回答!我是一个新用户,我错误地发布了这个问题两次。为此。我在我的代码中犯了一些错误,今天我尝试修复它。以下代码可以删除类或属性。

 import java.io.FileInputStream;
 import java.io.InputStreamReader;
 import java.io.Reader;
 import java.net.URI;
 import edu.stanford.smi.protegex.owl.ProtegeOWL;
 import edu.stanford.smi.protegex.owl.jena.JenaOWLModel;
 import edu.stanford.smi.protegex.owl.model.RDFResource;

 public class DeleteClass {

public static void main(String[] args) throws Exception {
    // TODO Auto-generated method stub

    //get model from an owl file
    String filePath = "D:\\ss.owl";
    FileInputStream inFile= new FileInputStream(filePath);
    Reader in = new InputStreamReader(inFile,"UTF-8");
    JenaOWLModel jenaOwlModel = ProtegeOWL.createJenaOWLModelFromReader(in);
    //get an class from the model
    RDFResource oneClass=jenaOwlModel.getRDFResource("Person");
    RDFResource oneDataProperty=jenaOwlModel.getRDFResource("age");
    //delete the resource
    oneClass.delete();
    oneDataProperty.delete();
    //save the model to another owl file
    URI file=URI.create("file:///D:/ssChange.owl");
    System.out.println(file);
    jenaOwlModel.save(file);
    //System.out.println(oneClass);

}

}