spira icon indicating copy to clipboard operation
spira copied to clipboard

Spira#count counts subjects - should it count instances?

Open Robsteranium opened this issue 10 years ago • 1 comments

I'm just getting to grips with Spira and I've found something that strikes me as odd (the mailing list looks a bit quiet so I'm posting here instead). I wonder if this is an expectation set by the OOP/ ActiveRecord world that simply doesn't apply in the graph/ RDF world...

I expect Spira::Base#count to return the count of objects of the relevant type - i.e. the distinct count of "?s a <model_type>", the number of instances. Instead #count returns the count of occurrences of those subjects - i.e. the number of triples where a "?s a <model_type>" is the subject. In OOP terms this is basically like counting the number of attributes which is certainly not what I would expect.

I realise that what might need 'fixing' is in fact my expectations about how objects work in a graph world. If so, I'd be very grateful if someone could elaborate on this.

Nevertheless the apparent congruence between the AR and Spira public APIs leads me to believe that I won't be the only one making this mistake! It might be clearer, for example, if Spira distinguished between a #count and a #count_of_subjects method.

Robsteranium avatar May 01 '14 09:05 Robsteranium

I agree with you here. However, it should be noted that there are two count methods defined for Spira::Base: a class method and an instance method. I believe, Spira::Base.count (class method) should return the number of "model types" (and it actually says so). Spira::Base#count returns "the number of RDF::Statements this projection has" (looks to be implemented properly).

So, if Spira::Base.count does not work as expected, there's definitely a bug there. Please make sure you're using the correct "count" ;-) Does Spira::Base.count work for you?

Speaking of the congruence between AR and Spira, you'd also call ActiveRecord::Base.count to count the records in the DB, not (non-existant) ActiveRecord::Base#count.

cordawyn avatar May 05 '14 16:05 cordawyn