0

我需要使用 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 是属性的域,删除后我会得到什么?

我希望能得到你的答复。

编辑:Protege OWL API 是此处描述的 api 而不是此处描述的 OWL API

4

1 回答 1

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);

}

}
于 2014-04-03T16:25:31.850 回答