2013-12-17 22 views
-1

可以幫助我使用SPARQL,因爲我無法理解它的語法。SPARQL中的簡單請求,Protege

如何從這個本體

https://www.dropbox.com/s/m25d6x3ej7ppjw4/MyProject.owl

我應該查看作者,誰創造超過1種方法的信息查看信息。

關於方法的信息,已創建早於1900

,最後,這是在球體使用「使用的球」和方法名。

如果有人可以用簡單的例子給出一些SPARQL語法的鏈接,或者可以向我解釋它是如何工作的,我會很高興。

+0

關於「如果有人可以用簡單的例子給出與SPARQL語法的一些鏈接,或者可以向我解釋它是如何工作的,我會很高興」:請注意「有問題要求我們推薦或找到工具,庫或最喜歡的非現場資源與Stack Overflow無關,因爲它們傾向於吸引自以爲是的答案和垃圾郵件,而是要描述問題以及迄今爲止解決問題的方法。「 –

+1

另外,請注意,「詢問代碼的問題必須對所解決的問題有最小的理解,包括**嘗試的解決方案,爲什麼他們沒有工作,以及預期的結果。」「你到目前爲止嘗試過什麼,以及什麼不起作用呢? –

+2

如果您瀏覽標籤爲[tag:sparql]的StackOverflow問題,則會發現很多查詢示例。那些不夠用? –

回答

4

你可以使用查詢像這樣的發現不止一個方法作者:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX owl: <http://www.w3.org/2002/07/owl#> 
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> 
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
PREFIX : <http://www.semanticweb.org/vyacheslav/ontologies/2013/11/untitled-ontology-6#> 

SELECT ?author (count(?method) as ?numMethods) 
WHERE { 
    ?method :hasAuthor ?author . 
    ?author a :Author . 
} 
group by ?author 
having (?numMethods > 1) 

結果是這樣的:

results in Protégé

有兩點要注意,雖然。理想情況下,您希望指定該方法實際上是一種方法。首先,通常是一個好主意,用單數命名您的類,因爲更自然地說,單個方法「是方法」而不是「方法」。總之,因爲類被命名方法,這將是很好寫的查詢身體

?method a :Methods . 
?method :hasAuthor ?author . 
?author a :Author . 

,但是這不會工作,除非你有一個推理連接(這樣被聲明爲的子類的成員個人方法也可以推斷爲方法的成員)。