So, I want to count the number of skos:Concept records that have a skos:broader 
child.

I have fragmented on skos:Concept (there are 352950 skos:Concept fragments in 
the DB).

The following query works as expected:

declare namespace skos="http://www.w3.org/2004/02/skos/core#";;

xdmp:estimate(//skos:Concept[skos:broader])

This returns 352944 (which is correct)

However,

xdmp:estimate(//skos:Concept[not(skos:broader)])

returns 352950 (every skos:Concept fragment in the DB instead of the expected 
value of 6).


So, I then moved on to search.

xdmp:estimate(cts:search(//skos:Concept,
                                        
cts:not-query(cts:element-query((QName("http://www.w3.org/2004/02/skos/core#","broader";)),

                                                                                
       
 cts:and-query(())))))

returns a value of 6.

and 

xdmp:estimate(cts:search(//skos:Concept,
                                      
cts:element-query((QName("http://www.w3.org/2004/02/skos/core#","broader";)),
                                      cts:and-query(()))))

returns a value of 352944.


So, since MarkLogic indexes parent-child relationships, why wouldn't the first 
simple query ... just using xpath expressions ... return the correct result.

Thanks.

Darin.

p.s. No, I didn't bother to do a trace or xdmp:plan  ;-)  The xpath example 
appears so simple (on the surface) I'm a bit stumped as to why this would not 
correctly return an unfiltered result.
_______________________________________________
General mailing list
[email protected]
http://developer.marklogic.com/mailman/listinfo/general

Reply via email to