2012-03-20 92 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