簡體   English   中英

sparql查詢以檢索類的子類

[英]sparql query to retrieve subclasses of a class

我編寫了以下代碼,以創建父類玩具和子類為活動玩具,活動玩具,藝術自行車。 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();

              }
            }

在創建類時添加名稱空間(例如您的默認名稱空間)。 以下代碼有效。它檢索給定類的子類。檢查鏈接以獲取更多詳細信息。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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM