so I need to figure out how the bulitin work in code and built a new one
that kind of countMatch?

What is that mean you said API would be eaiser than SPARQL? and should I
know about register the new builtin to somewhere ?


2014-08-08 15:14 GMT+08:00 Dave Reynolds <[email protected]>:

> On 08/08/14 03:08, Wang Darrell wrote:
>
>> here is part of my ontology
>>
>>   - ( Stevie_Wonder - hasMusicalRole  - wordnet_synthesist_110687231 )
>>   - ( Stevie_Wonder - hasMusicalRole  - wordnet_bass_guitar_102804123 )
>>   - ( Stevie_Wonder - hasMusicalRole  - wordnet_piano_103928116 )
>>
>> Can I use something like
>> (?x  :hasMusicalRole  ?y)
>> and get a count like 3 , then produce a new fact like
>> ( Stevie_Wonder   -    can    -   playMutipleInstrument  )
>> while we know he can play 3 kind of instrument.
>>
>
> No, as I said in my last reply the rules can't count the number of times
> they fire or would fire without a lot of messing with non-monotonic rules
> and arithmetic.
>
>
>  Or is there any way to use Sparql in rules?
>> like
>>
>> [ rule:
>> SELECT   count(?y) WHERE {   ?s yago:hasMusicalRole   ?y  .  }
>> ->
>> ( Stevie_Wonder   -    can    -   playMutipleInstrument  )
>> ]
>>
>
> There isn't a way to do that directly at the moment.  There is a Google
> Summer of Code project exploring the possibility of this but it is a
> separate experiment and not part of the main Jena codebase.
>
> However, for just counting it would be pretty easy to create a rules
> builtin, something like:
>
>     countMatches(?s, ?p, ?o, ?count)
>
> which would do this. The countMatches implementation could use SPARQL but
> since it only needs to count triples then just doing it using the API would
> be easier. Remember to mark the builtin as non-monotonic.
>
> Dave
>
>
>

Reply via email to