2014-10-06 50 views
0

我有一個從根到葉的長度不同的結構。我希望將它們輸出到列表中。我也希望所有的父母和父母都在市場領域。最大深度爲5級,我如何將結果限制在Market_segment而不轉到Market_segment的父母。 currenly此查詢將返回MARKET_SEGMENT的父母,如果路徑短於5輸出特定根目錄下的所有父項

PREFIX mdy: <http://www.owl-ontologies.com/mdys.owl#> 
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
SELECT ?node ?parent ?gparent ?ggparent ?gggparent ?ggggparent 
     WHERE { 
       ?node rdfs:subClassOf* mdy:Market_Segment     
        OPTIONAL {?node rdfs:subClassOf ?parent. 
        OPTIONAL {?parent rdfs:subClassOf ?gparent. 
        OPTIONAL {?gparent rdfs:subClassOf ?ggparent. 
        OPTIONAL {?ggparent rdfs:subClassOf ?gggparent. 
        OPTIONAL {?gggparent rdfs:subClassOf ?ggggparent. 
        }}}}} 
} 
+1

不要爲[計算的深度子類在OWL本體](http://stackoverflow.com/q/26115488/1281433)或[Sparql查詢爲兒童,孫輩,..一類](http://stackoverflow.com/q/23094361/1281433 ) 幫幫我?他們是類似的問題。你不會很容易得到不同的變量(?parent,?gparent等),但是你可以得到每個節點的深度。 – 2014-10-06 21:49:23

回答

0

使用逆屬性路徑:

PREFIX mdy: <http://www.owl-ontologies.com/mdys.owl#> 
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
SELECT ?node ?parent 
    WHERE { 
      ?node ^rdfs:subClassOf* mdy:Market_Segment . 
      ?node ^rdfs:subClassOf ?parent   
} 

參見 http://www.w3.org/TR/sparql11-query/#propertypaths

相關問題