2014-03-03 2 views
0

부모 클래스 장난감 및 하위 클래스를 actiofigures, activities, arts bike로 생성하는 다음 코드를 작성했습니다. SPARQL 쿼리 (귀하의 경우 기본 네임 스페이스로) 당신이 클래스를 작성하는 동안클래스의 하위 클래스 검색을위한 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(); 

       } 
      } 
+0

당신은'의 서브 클래스를 요구하고 ', 그러나'createClass ("Toys")'를 호출하면 클래스 ''이 생성됩니다. 대신에,'createClass (defaultNameSpace + "Toys")'를 사용해야합니다. –

답변

0

이 네임 스페이스를 추가 해결책을 찾기 위해 좀 도와주세요 서브 클래스의 목록으로 답변을 제공하지 않습니다. // semanticweb : 아래의 코드는 http://opentox.org/data/documents/development/RDF%20files/JavaOnly/query-reasoning-with-jena-and-sparql

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(); 
} 

}

+0

내 코드가 실행 된 도움을 많이 주셔서 감사합니다. – user2710605