2012-03-20 38 views
1
import java.awt.*; 
import java.awt.event.*; 
import java.applet.*; 
import java.lang.*; 
import java.util.regex.*; 
import java.io.*; 
import com.hp.hpl.jena.sparql.*; 
import com.hp.hpl.jena.*; 
import com.hp.hpl.jena.rdf.model.Model; 
import com.hp.hpl.jena.rdf.model.ModelFactory; 
import com.hp.hpl.jena.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.ResultSet; 
import com.hp.hpl.jena.query.ResultSetFormatter; 

/* 
<applet code="Sample" width=275 height=200> 
</applet> 
*/ 
//creating applet 
public class Sample extends Applet implements ActionListener 
{ 
TextField t; 
String msg= " "; 
String token[]; 
int s=60; 
public void init() 
{ 
    setBackground(Color.gray); 
    Label qa=new Label("QA SYSTEM",Label.CENTER); 
    Button search=new Button("Search"); 
    t=new TextField(25); 
    //Adding text box,button in to applet 
    add(qa); 
    add(t); 
    add(search); 
    t.addActionListener(this); 
    search.addActionListener(this); 
} 
public void actionPerformed(ActionEvent ae) 
{ 
    String str=ae.getActionCommand(); 
    if(str.equals("Search")) 
    { 
    msg=t.getText() ; 
    Pattern pat=Pattern.compile("[ ?]"); 
    String strs[]=pat.split(msg); 
    for(int i=0;i<strs.length;i++) 
    System.out.println("Token"+(i+1)+":"+strs[i]); 
    } 

    try 
    { 
     //opening owl file 
     InputStream in = new FileInputStream(new File("D:/ds.OWL")); 
     Model model=ModelFactory.createMemModelMaker().createDefaultModel() ; 
     model.read(in,null);  
     in.close(); 
     String queryString ="SELECT ?ds ?o WHERE {?ds rdfs:subClassOf ?o }"; 

     com.hp.hpl.jena.query.Query q = QueryFactory.create(queryString); 
     QueryExecution qe = QueryExecutionFactory.create(q, model); 
     ResultSet results = qe.execSelect(); 
     while (results.hasNext()) 
     { 
      System.out.println(results.getRowNumber()); 
     } 
     ResultSetFormatter.out(System.out, results, q); 
     qe.close(); 

    }catch(Exception e){ System.out.println(e);} 

    repaint(); 
} 
public void paint(Graphics g) 
{ 
    g.drawString("wait...",6,80); 
} 
} 

錯誤:尚未解決的前綴名稱:RDFS:subClassOf在SPARQL查詢

com.hp.hpl.jena.query.QueryParseException: Line 1, column 27: Unresolved prefixed name: rdfs:subClassOf

回答

9
String queryString ="SELECT ?ds ?o WHERE {?ds rdfs:subClassOf ?o }"; 

應該

String queryString ="PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
SELECT ?ds ?o WHERE {?ds rdfs:subClassOf ?o }"; 
4

由於威廉的簡潔的回答意味着問題是,你有沒有定義了前綴所代表的內容。 SPARQL和其他相關RDF標準中的前綴名稱純粹是以更緊湊和更易讀的方式編寫查詢和數據的句法便利。您可以指定一個前綴來表示任何您想要的名稱空間URI,因此您必須始終使用您使用的格式機制明確定義您的前綴。

對於SPARQL,這是用於定義前綴的關鍵字PREFIX。這些定義必須出現在查詢的主體之前,並且您可以擁有儘可能多的定義。

+0

Thank you for your reply.It really really helpful ... – user1280146 2012-04-11 11:01:21

+0

@ user1280146如果答案有用,您應該[接受它](http://meta.stackexchange.com/questions/5234/how-does-接受-的回答工作)。 – 2013-09-25 00:34:28