[英]Unresolved prefixed name: rdfs:subClassOf in SPARQL query
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);
}
}
錯誤:
com.hp.hpl.jena.query.QueryParseException:第1行,第27列:未解析的前綴名稱:rdfs:subClassOf
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 }";
正如威廉的簡潔回答所暗示的那樣,問題在於你還沒有定義rdfs
前綴代表什么。 SPARQL中的前綴名稱和其他相關的RDF標准純粹是以更緊湊和可讀的方式編寫查詢和數據的語法方便。 您可以指定一個前綴來表示您想要的任何名稱空間URI,因此您必須始終使用您正在使用的格式機制顯式定義前綴。
對於SPARQL,這是PREFIX
關鍵字,用於定義前綴。 這些定義必須出現在查詢主體之前,並且您可以擁有任意數量的定義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.