gpt4 book ai didi

java - 使用createOntologyModel时出现异常

转载 作者:行者123 更新时间:2023-11-30 05:04:13 25 4
gpt4 key购买 nike

package tutorial;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;

import com.hp.hpl.jena.ontology.OntModel;
import com.hp.hpl.jena.ontology.OntModelSpec;
import com.hp.hpl.jena.query.Query;
import com.hp.hpl.jena.query.QueryExecution;
import com.hp.hpl.jena.query.QueryExecutionFactory;
import com.hp.hpl.jena.query.QueryFactory;
import com.hp.hpl.jena.query.ResultSetFormatter;
import com.hp.hpl.jena.rdf.model.ModelFactory;

public class Jena {

/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub


InputStream in = new FileInputStream(new File("E:\\Applications\\workspace-protoge\\periodic.owl"));
OntModel model2 = ModelFactory.createOntologyModel( OntModelSpec.OWL_MEM);
model2.read( in, null );
//prints out the RDF/XML structure
in.close();
System.out.println(" ");


// Create a new query
String queryString =
"PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> "+
"PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> "+
"select ?uri "+
"where { "+
"?uri rdfs:subClassOf <http://www.co-ode.org/roberts/pto.owl#Charge> "+
"} \n ";
Query query = QueryFactory.create(queryString);

System.out.println("----------------------");

System.out.println("Query Result Sheet");

System.out.println("----------------------");

System.out.println("Direct&Indirect Descendants (model1)");

System.out.println("-------------------");


// Execute the query and obtain results
QueryExecution qe = QueryExecutionFactory.create(query, model2);
com.hp.hpl.jena.query.ResultSet results = qe.execSelect();

// Output query results
ResultSetFormatter.out(System.out, results, query);

}

}

运行上面的代码时,我收到以下警告。我不明白为什么

 WARN [main] (OntDocumentManager.java:1078) - An error occurred while attempting to read from http://www.cs.man.ac.uk/~stevensr/ontology/units.owl. Msg was 'java.net.SocketException: Permission denied: connect'.
com.hp.hpl.jena.shared.JenaException: java.net.SocketException: Permission denied: connect
at com.hp.hpl.jena.rdf.arp.JenaReader.read(JenaReader.java:91)
at com.hp.hpl.jena.rdf.model.impl.ModelCom.read(ModelCom.java:187)
at com.hp.hpl.jena.util.FileManager.readModelWorker(FileManager.java:367)
at com.hp.hpl.jena.util.FileManager.readModel(FileManager.java:335)
at com.hp.hpl.jena.util.FileManager.readModel(FileManager.java:319)
at com.hp.hpl.jena.ontology.OntDocumentManager.read(OntDocumentManager.java:1064)
at com.hp.hpl.jena.ontology.OntDocumentManager$1.readModel(OntDocumentManager.java:1034)
at com.hp.hpl.jena.rdf.model.impl.ModelMakerImpl.getModel(ModelMakerImpl.java:78)
at com.hp.hpl.jena.ontology.OntDocumentManager.fetchLoadedImportModel(OntDocumentManager.java:1031)
at com.hp.hpl.jena.ontology.OntDocumentManager.fetchPossiblyCachedImportModel(OntDocumentManager.java:1004)
at com.hp.hpl.jena.ontology.OntDocumentManager.loadImport(OntDocumentManager.java:977)
at com.hp.hpl.jena.ontology.OntDocumentManager.loadImports(OntDocumentManager.java:771)
at com.hp.hpl.jena.ontology.OntDocumentManager.loadImports(OntDocumentManager.java:709)
at com.hp.hpl.jena.ontology.impl.OntModelImpl.loadImports(OntModelImpl.java:1887)
at com.hp.hpl.jena.ontology.impl.OntModelImpl.read(OntModelImpl.java:2050)
at tutorial.Jena.main(Jena.java:30)
Caused by: java.net.SocketException: Permission denied: connect
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance

最佳答案

异常跟踪的第一行清楚地说明了问题:

WARN [main] (OntDocumentManager.java:1078) - 
An error occurred while attempting to read from
http://www.cs.man.ac.uk/~stevensr/ontology/units.owl.
Msg was 'java.net.SocketException: Permission denied: connect'.

您正在尝试阅读http://www.cs.man.ac.uk/~stevensr/ontology/units.owl,但失败了。由于该文件确实存在(我刚刚检查过),因此很可能您没有连接到网络,或者您位于 Web 代理后面,因此您必须使用适当的代理设置来配置 JVM。

为什么你的代码要读取该文件?几乎可以肯定,这是因为您正在阅读的本体导入了单位本体。像这样的东西:

<> a owl:Ontology ; 
owl:imports <http://www.cs.man.ac.uk/~stevensr/ontology/units.owl>

该语句将被OntModel加载器识别,它将尝试获取并加载导入的本体。如果这不是您想要的,或者不方便(例如,因为您并不总是在网络上),那么您有三种补救措施:

  • 关闭导入处理:yourOntModel.getDocumentManager().setProcessImports(false);
  • 从源模型中删除 owl:imports 语句 - 对于它是否真的有用存在不同的意见
  • 使用 Jena 的 LocationMapperunits.owl 文件提供替代位置,以便您仍然可以使用 owl:imports 语句,但实际文件将从其他地方读取(例如在计算机磁盘上)

关于java - 使用createOntologyModel时出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5667350/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com