2017-05-11 32 views
0

我在定式服務器設置以下數據:SPARQL選擇特定的數據

<http://person/Mark-John> <http://purl.org/dc/elements/1.1/name> 
       "Mark John" ; 
     <http://purl.org/dc/elements/1.1/nationality> 
       "American" . 

<http://person/Elizabeth-Mary> 
     <http://purl.org/dc/elements/1.1/name> 
       "Elizabeth Mary" ; 
     <http://purl.org/dc/elements/1.1/nationality> 
       "American" . 

我怎樣才能獲得的數據只對具有name =「馬克約翰」的條目?

這是我已經試過:

public static void main(String[] argv) throws IOException { 
    execSelectAndPrint(
      "http://localhost:3030/Date/query", 
      "PREFIX dc: <http://purl.org/dc/elements/1.1/> " + "SELECT * WHERE { ?name dc:name 'Mark John' }" 
      ); 
} 

但它返回:


http://person/Mark-John

,而不是Mark JohnAmerican

基本上,我想輸出一個人可用的所有數據......在我的案例中,namenationality

回答

1

您的查詢返回查詢中與查詢中三重模式匹配的內容。您要求的資源名稱爲「Mark John」 - RDF資源由URI表示。事實上,你的變量名是混亂,因爲該名稱將是在三元組的客體位置...

如果你想再次有名字,你必須使用一個變量:

PREFIX dc: <http://purl.org/dc/elements/1.1/> 
SELECT ?name WHERE { 
VALUES ?name {"Mark John"} 
?s dc:name ?name . 
} 

而且您不會在查詢中選擇國籍。你如何期待這將返回呢?

PREFIX dc: <http://purl.org/dc/elements/1.1/> 
SELECT ?name ?ǹationality WHERE { 
VALUES ?name {"Mark John"} 
?s dc:name ?name ; 
    dc:nationality ?nationality . 
}