2017-02-22 66 views
0

類型我做了這個本體:SPARQL如何獲得的個人

SensorOntology:MedicalCabinet-01 rdf:type owl:NamedIndividual , 
            SensorOntology:MedicalCabinetSensor ; 
          SensorOntology:hasId "57"^^xsd:int ; 
          SensorOntology:hasValue "0"^^xsd:int . 

我想編寫一個查詢得到的MedicalCabinet-01這是MedicalCabinetSensor給出ID類型號碼。然而,我正在印刷貓頭鷹:命名個人傳感器本體:MedicalCabinetSensor。無論如何,我只打印傳感器科學:MedicalCabinetSensor。這是我的查詢:

SELECT DISTINCT ?sensor ?sensorclass 
     WHERE {?sensor :hasId "100"^^xsd:int. 
       ?sensor rdf:type ?sensorclass} 
+1

查詢是正確的,**必須返回2個結果**爲個人'SensorOntology:MedicalCabinet-01'-一個與類'SensorOntology:MedicalCabinetSensor',一個用於'貓頭鷹:NamedIndividual' 。你如何運行查詢並處理結果集?請顯示代碼片段。 – AKSW

+0

對不起,我編輯我的問題。是否有任何方法可以打印** SensorOntology:MedicalCabinetSensor ** – Ali

回答

1

有很多方法可以忽略結果,所以目前還不清楚你想使用哪一個 - 特別是因爲有些是非常明顯的。這裏有兩種選擇:

  1. 當你用Jena標記它時,使用Java並忽略URI匹配的資源,它們的URI匹配爲owl:NamedIndividual
  2. 在SPARQL中使用FILTER,即將FILTER(?sensorclass != owl:NamedIndividual)添加到SPARQL查詢的圖形模式。
1

的確,有多種方式。下面是另一個:

SELECT DISTINCT ?sensor ?sensorclass 
WHERE {?sensor :hasId "100"^^xsd:int. 
       ?sensor rdf:type ?sensorclass 

FILTER (strstarts(str(?sensorclass), "[sensor ontology URI]")) 

}