Java 检索类的子类的sparql查询
我已经编写了下面的代码,它创建了一个父类toys和子类actiofigures、activities、arts bike。Sparql查询不是以子类列表的形式给出答案,请帮助我找到解决方案Java 检索类的子类的sparql查询,java,sparql,jena,ontology,Java,Sparql,Jena,Ontology,我已经编写了下面的代码,它创建了一个父类toys和子类actiofigures、activities、arts bike。Sparql查询不是以子类列表的形式给出答案,请帮助我找到解决方案 import com.hp.hpl.jena.ontology.OntClass; import com.hp.hpl.jena.ontology.OntModel; import com.hp.hpl.jena.query.QueryExecution;
import com.hp.hpl.jena.ontology.OntClass;
import com.hp.hpl.jena.ontology.OntModel;
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.QuerySolution;
import com.hp.hpl.jena.query.ResultSet;
import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.rdf.model.ModelFactory;
import com.hp.hpl.jena.rdf.model.RDFNode;
public class jenaquery
{
static String defaultNameSpace ="http://semanticweb.org/ontologies";
static Model model = null;
public static void main(String[] args)
{
model = ModelFactory.createOntologyModel()
OntClass Toys = ((OntModel) model).createClass( "Toys" );
OntClass ActionFigures = ((OntModel) model).createClass( "ActionFigures" );
OntClass Arts = ((OntModel) model).createClass( "Arts" );
OntClass Activities = ((OntModel) model).createClass( "Activities" );
OntClass Bikes = ((OntModel) model).createClass( "Bikes" );
ActionFigures.addSuperClass(Toys);
Activities.addSuperClass(Toys);
Arts.addSuperClass(Toys);
Bikes.addSuperClass(Toys);
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://semanticweb.org/ontologies#Toys> "+
"} \n ";
com.hp.hpl.jena.query.Query query = QueryFactory.create(queryString);
System.out.println("----------------------");
System.out.println("Query Result Sheet");
System.out.println("----------------------");
QueryExecution qe = QueryExecutionFactory.create(query, model);
System.out.print( "Query executed");
ResultSet resultSet = qe.execSelect();
while(resultSet.hasNext())
{
QuerySolution soln = (QuerySolution)resultSet.next();
RDFNode name = soln.get("?name");
if( name!=null)
{
System.out.println( " Subclasses"+name.toString());
}
else
System.out.print("No subclasses");
}
}
qe.close();
}
}
import com.hp.hpl.jena.ontology.OntClass;
导入com.hp.hpl.jena.ontology.OntModel;
导入com.hp.hpl.jena.query.QueryExecution;
导入com.hp.hpl.jena.query.QueryExecutionFactory;
导入com.hp.hpl.jena.query.QueryFactory;
导入com.hp.hpl.jena.query.QuerySolution;
导入com.hp.hpl.jena.query.ResultSet;
导入com.hp.hpl.jena.rdf.model.model;
导入com.hp.hpl.jena.rdf.model.ModelFactory;
导入com.hp.hpl.jena.rdf.model.RDFNode;
公共类jenaquery
{
静态字符串defaultNameSpace=”http://semanticweb.org/ontologies";
静态模型=空;
公共静态void main(字符串[]args)
{
model=ModelFactory.createOntologyModel()
OntClass玩具=((OntModel)模型).createClass(“玩具”);
OntClass ActionFigures=((OntModel)model).createClass(“ActionFigures”);
OntClass艺术=((OntModel)模型).createClass(“艺术”);
OntClass活动=((OntModel)model.createClass(“活动”);
OntClass Bikes=((OntModel)model).createClass(“Bikes”);
ActionFigures.addSuperClass(玩具);
活动。添加超类(玩具);
艺术类(玩具);
自行车。添加超类(玩具);
String queryString=“前缀rdfs:”+
“前缀rdf:”+
“选择?uri”+
“其中{”+
“?uri rdfs:子类”+
“}\n”;
com.hp.hpl.jena.query.query query=QueryFactory.create(queryString);
System.out.println(“-------------------------”);
System.out.println(“查询结果表”);
System.out.println(“-------------------------”);
QueryExecution qe=QueryExecutionFactory.create(查询,模型);
系统输出打印(“执行查询”);
ResultSet ResultSet=qe.execSelect();
while(resultSet.hasNext())
{
QuerySolution soln=(QuerySolution)resultSet.next();
RDFNode name=soln.get(“?name”);
if(name!=null)
{
System.out.println(“子类”+name.toString());
}
其他的
系统输出打印(“无子类”);
}
}
qe.close();
}
}
在创建类时添加名称空间(与默认名称空间相同)。下面的代码有效。。它检索给定类的子类。。查看链接以了解更多详细信息
import com.hp.hpl.jena.ontology.OntClass;
导入com.hp.hpl.jena.ontology.OntModel;
导入com.hp.hpl.jena.ontology.OntModelSpec;
导入com.hp.hpl.jena.query.QueryExecution;
导入com.hp.hpl.jena.query.QueryExecutionFactory;
导入com.hp.hpl.jena.query.QueryFactory;
导入com.hp.hpl.jena.query.ResultSet;
导入com.hp.hpl.jena.query.ResultSetFormatter;
导入com.hp.hpl.jena.rdf.model.model;
导入com.hp.hpl.jena.rdf.model.ModelFactory;
公共类查询{
静态字符串defaultNameSpace=”http://semanticweb.org/ontologies#";
静态模型=空;
公共静态void main(字符串[]args){
model=ModelFactory.createOntologyModel(OntModelSpec.OWL\u DL\u MEM);
OntClass玩具=((OntModel)model.createClass(defaultNameSpace+“玩具”);
OntClass ActionFigures=((OntModel)model).createClass(defaultNameSpace+“ActionFigures”);
OntClass Arts=((OntModel)model.createClass(defaultNameSpace+“Arts”);
OntClass活动=((OntModel)model.createClass(defaultNameSpace+“活动”);
OntClass Bikes=((OntModel)model).createClass(defaultNameSpace+“Bikes”);
ActionFigures.addSuperClass(玩具);
活动。添加超类(玩具);
艺术类(玩具);
自行车。添加超类(玩具);
String queryString=“前缀rdfs:”+
“前缀rdf:”+
“选择?uri”+
“其中{”+
“?uri rdfs:子类”+
“}\n”;
com.hp.hpl.jena.query.query query=QueryFactory.create(queryString);
System.out.println(“-------------------------”);
System.out.println(“查询结果表”);
System.out.println(“-------------------------”);
QueryExecution qe=QueryExecutionFactory.create(查询,模型);
System.out.println(“执行查询”);
ResultSet ResultSet=qe.execSelect();
ResultSetFormatter.out(System.out、resultSet、query);
qe.close();
}
}您请求的是
的子类,但是您对createClass(“玩具”)
的调用创建了一个类
。相反,您需要使用createClass(defaultNameSpace+“Toys”)
。
import com.hp.hpl.jena.ontology.OntClass;
import com.hp.hpl.jena.ontology.OntModel;
import com.hp.hpl.jena.ontology.OntModelSpec;
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.ResultSet;
import com.hp.hpl.jena.query.ResultSetFormatter;
import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.rdf.model.ModelFactory;
public class Query {
static String defaultNameSpace ="http://semanticweb.org/ontologies#";
static Model model = null;
public static void main(String[] args) {
model = ModelFactory.createOntologyModel(OntModelSpec.OWL_DL_MEM);
OntClass Toys = ((OntModel) model).createClass( defaultNameSpace + "Toys" );
OntClass ActionFigures = ((OntModel) model).createClass( defaultNameSpace + "ActionFigures" );
OntClass Arts = ((OntModel) model).createClass( defaultNameSpace + "Arts" );
OntClass Activities = ((OntModel) model).createClass( defaultNameSpace + "Activities" );
OntClass Bikes = ((OntModel) model).createClass( defaultNameSpace + "Bikes" );
ActionFigures.addSuperClass(Toys);
Activities.addSuperClass(Toys);
Arts.addSuperClass(Toys);
Bikes.addSuperClass(Toys);
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://semanticweb.org/ontologies#Toys> "+
"} \n ";
com.hp.hpl.jena.query.Query query = QueryFactory.create(queryString);
System.out.println("----------------------");
System.out.println("Query Result Sheet");
System.out.println("----------------------");
QueryExecution qe = QueryExecutionFactory.create(query, model);
System.out.println( "Query executed");
ResultSet resultSet = qe.execSelect();
ResultSetFormatter.out(System.out, resultSet, query);
qe.close();
}