Jena存储本体时的错误
小弟用jena创建本体,创建完成后要输出到本地文件中,但是出现错误,错误代码57,具体如下:Exception in thread "main" com.hp.hpl.jena.shared.BadURIException: Only well-formed absolute URIrefs can be included in RDF/XML output: <name="organization"> Code: 57/REQUIRED_COMPONENT_MISSING in SCHEME: A component that is required by the scheme is missing.
at com.hp.hpl.jena.xmloutput.impl.BaseXMLWriter.checkURI(BaseXMLWriter.java:829)
at com.hp.hpl.jena.xmloutput.impl.BaseXMLWriter.relativize(BaseXMLWriter.java:806)
at com.hp.hpl.jena.xmloutput.impl.Basic.writeResourceReference(Basic.java:148)
at com.hp.hpl.jena.xmloutput.impl.Basic.writePredicate(Basic.java:101)
at com.hp.hpl.jena.xmloutput.impl.Basic.writeRDFStatements(Basic.java:77)
at com.hp.hpl.jena.xmloutput.impl.Basic.writeRDFStatements(Basic.java:66)
at com.hp.hpl.jena.xmloutput.impl.Basic.writeBody(Basic.java:40)
at com.hp.hpl.jena.xmloutput.impl.BaseXMLWriter.writeXMLBody(BaseXMLWriter.java:500)
at com.hp.hpl.jena.xmloutput.impl.BaseXMLWriter.write(BaseXMLWriter.java:472)
at com.hp.hpl.jena.xmloutput.impl.BaseXMLWriter.write(BaseXMLWriter.java:458)
at com.hp.hpl.jena.rdf.model.impl.ModelCom.write(ModelCom.java:277)
at com.hp.hpl.jena.ontology.impl.OntModelImpl.write(OntModelImpl.java:2554)
at bs.Ont.BuildOntology.main(BuildOntology.java:89)
小弟不知道错误在哪里,请各位大神帮忙解决一下,非常感谢!此为小弟毕业设计,现在遇到困难,全靠大家啦!以下是部分代码,出错部分应该在其中:
ArrayList NormalElement = new ArrayList();
ArrayList Complexelement = new ArrayList();
ArrayList ComplexElement = new ArrayList();
ComplexElement = XMLSchema.DoTheSearch(NormalElement,Complexelement);
String NS = "http://www.w3.org/2001/XMLSchema";
String NaS = "http://www.w3.org/2001/XMLSchema/";
//创建本体模型
OntModel ontModel = ModelFactory.createOntologyModel();
//设定本体命名空间
ontModel.setNsPrefix("Ontology", NS+"#");
System.out.println("\n"+"\n"+"正在生成本体……");
//复杂类型元素创建成相应概念
for(int i=0;i<ComplexElement.size();i+=2){
String tagname = ComplexElement.get(i+1).toString();
//字符串处理函数
tagname = Resolve(tagname);
OntClass newClass = ontModel.createClass(NaS+tagname);
Resource R1 = newClass;
System.out.println(R1);
newClass.addComment(ComplexElement.get(i+1).toString(), null);
}
//简单类型元素创建成为概念的属性
for(int j=0;j<ComplexElement.size();j+=2){
ArrayList temp = XMLSchema.getChildElementofComplex((Element)ComplexElement.get(j));
//判断复杂类型数据下的子类型数据是否是复杂类型
//若是复杂类型则创建成概念间的关系
for(int p = 0;p<temp.size();p+=2){
//简单类型创建成为概念的属性
if (!XMLSchema.isComplexElement((Element)temp.get(p))){
DatatypeProperty newPro = ontModel.createDatatypeProperty(NS+temp.get(p+1));
//构建资源变量用于之后设置定义域和值域
Resource Domainname = ResourceFactory.createResource(ComplexElement.get(j+1).toString());
//设置定义域为概念
newPro.setDomain(Domainname);
//设置值域为字符型
newPro.setRange(ontModel.createResource("http://www.w3.org/2001/XMLSchema#String"));
//存储映射关系
newPro.addComment(temp.get(p+1).toString(), null);
}
else{
ObjectProperty property = ontModel.createObjectProperty(null);
//构建资源变量用于之后设置定义域和值域
Resource Domainname = ResourceFactory.createResource(ComplexElement.get(j+1).toString());
Resource Rangename = ResourceFactory.createResource(temp.get(p+1).toString());
//设置定义域为发生关系的一个概念
property.setDomain(Domainname);
//设置值域为发生关系的另一个概念
property.setRange(Rangename);
}
}
File newFile = new File("D:/workspace/毕业设计/paper.owl");
try {
FileOutputStream output = new FileOutputStream(newFile);
89行 ontModel.write(output); //以ontModel.write(output,"N-TRIPLE");输出没有错误
output.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} --------------------编程问答-------------------- 请问问题解决了么?? --------------------编程问答-------------------- 首先说明一下这东西我没用过,
只是单纯的看报的异常,
说有需求的一个元素不存在。
另外,楼主有没有什么配置文件什么的?
补充:Java , Eclipse