[英]sparql query to retrieve subclasses of a class
I have written the following code which creates a parent class toys and subclasses as actiofigures ,activities ,arts bike. 我编写了以下代码,以创建父类玩具和子类为活动玩具,活动玩具,艺术自行车。 Sparql query is not giving the answers as a list of subclasses please help me to find the solution 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.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();
}
}
Add Namespace while you are creating classes (as in your case default namespace). 在创建类时添加名称空间(例如您的默认名称空间)。 The below code works.. It retrieves the subclass for a given class.. Check the link for further details.. http://opentox.org/data/documents/development/RDF%20files/JavaOnly/query-reasoning-with-jena-and-sparql 以下代码有效。它检索给定类的子类。检查链接以获取更多详细信息。http://opentox.org/data/documents/development/RDF%20files/JavaOnly/query-reasoning-with-耶拿和斯帕克
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();
}
} }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.