[rules-users] drools queries: strange dependency

Davide Sottara dsotty at gmail.com
Sun Apr 14 17:40:05 EDT 2013


Correct me if I'm wrong, I would summarize your requirements as follows:
- you need some "A-box" reasoning, but you are fine with a rule-based
approach
- the object-oriented integration Drools provides is quite convenient
- you have large data sets for which an opportunistic, "query-oriented"
approach
would work better rather than a fully generative "forward chaining" approach

Drools "hybrid-chaining" approach could be very useful here - I'm not
sure how
well documented it is, and how you are planning to use it, but it would
be interesting
to see one of your rules - even "stripped" of the details you don't want
to show -
to discuss the behaviour of the engine and its implications.

I had a use case apparently very similar to yours some time ago.. I'm
working even
now on some experimental forms of rule/object/ontology integration. The
"trait"
feature might be an alternative to the explicit addition of classes to
objects .. it was
enhanced a few days ago to support updates and modifications.
If you have an ontology to begin with, you might also be interested in
the ontology -> class
conversion tool I'm working on even now

Davide


On 04/12/2013 01:45 AM, Upali Kohomban wrote:
> Hi,
>
> Sorry for the late reply, I was away from mail.
>
> I'm fine with assumptions such as unique name and closed world because
> whatever method I use these handicaps will be there in some form. In
> my case, why I can't  go on with OWL/Logic is the issue of large
> amounts of factual data which change frequently, unlike, say, in
> Biomedical ontologies.
>
> For an instance, I want to model the semantics of a country's appeal
> as a holiday destination for a particular crowd depending on any
> events that makes it interesting for that crowd. These things can
> change on day-to-day basis depending on weather, currency rates,
> school holidays, ticket prices etc. OWL ontologies (as you must know)
> handle these kind of volatile data quite poorly. Unfortunately, its
> difficult to plug things to the reasoner at the facts-end of the OWL.
> This last bit is different for Drools.
>
> On the other hand, as I said, the number of possible inferences are
> near infinite, and unnecessary unless they are explicitly queried. For
> instance take a transitive relationship such as situated_in(x, y).  If
> there are few levels of locality (say,
> country/district/city/town/suburb) there will be so many unnecessary
> inferences for the relationship in drools rules. With a backward
> chaining reasoner, these inferences won't fire unless queried.
>
> According to my limited understanding of drools, this is the main
> issue one could come up against using drools here. I was trying to
> work around that fact by using the (apparently recent)
> backward-chaining queries, and by delegating some of the worse
> (transitive etc) clauses to POJO. I really enjoy being able to do
> that, even if I'm doing it wrong and there's a better way ;-)
>
> So far, I'm using a mix of technologies to get what I think is the
> best of both worlds: backward-chaining, POJO for logic itself at lower
> level for recursive rules, semantic classes to "store" inferences
> about stuff so they can be queried later.
>
> If there is a better way of doing this, I'd really love to know it.
> I'm aware that this is not ideal problem for an expert system or an
> ontology. However I need to model a little bit of semantics than a
> database-only system, and do it in an easily changeable way.
>
> Thanks,
> Upali
>
>
>
> On 12/04/2013 00:56, Davide Sottara wrote:
>> Ontology Reasoners and Rule Engines are quite different, can be
>> integrated under some assumptions,
>> but are definitely not easily interchangeable.. (unique name
>> assumption, closed world assumption, etc..)
>> Which one is better pretty much depends on the use case, which also
>> dictates the required level of
>> expressiveness of the language - even Fact++, Hermit and Pellet do
>> not support full FOL...
>>
>> This said, your case seems very interesting.. would you mind sharing
>> a few more details or a concrete example?
>> We would then be able to assess whether Drools is appropriate or not,
>> and which constructs could be
>> used (e.g. traits, hybrid chaining queries, tms, ...) to tackle the
>> complexity.
>>
>> Or maybe we could take it as a use case to improve the engine
>> capbilities :)
>>
>> Best
>> Davide
>>
>>
>>
>>
>> On 04/11/2013 05:01 AM, Upali Kohomban wrote:
>>> Thanks a lot again, you made my life easy with the build instructions :)
>>>
>>> Yes I'm trying to do an integration. I have some experience with
>>> ontologies and want to experiment with drools as an alternative.
>>>
>>> OWL with reasoners like Fact ++ are pretty much good for the job,
>>> except for the fact that they handle individual data bits in quite a
>>> cumbersome way. It was because of this reason that I wanted to
>>> experiment on other ways of modeling a knowledge structure with
>>> better facilities for querying large amounts of factual data. I'm
>>> giving drools a try, but I'm not entirely sure if drools can do
>>> things as powerful as a reasoner.
>>>
>>> Basically, I'd like to be able to let the data lie (without firing
>>> any "events" until necessary)  and query the inferences in a
>>> first-order logic like manner. This is very space-efficient in
>>> data-heavy scenarios. I know that this isn't the traditional way
>>> drools is designed to work. I'm trying to solve the inference
>>> problem by dynamically adding semantic classes to each object to
>>> store all the possible inferences about it, so they can be queried
>>> later. Problem with this approach is that it gets out of hand very
>>> quickly, because the enumerated number of such inferences can be
>>> HUGE even for a moderate KB. Backward chaining will eventually solve
>>> this problem, but it seems that the constructs available for that in
>>> drools queries are not too matured at the moment. For instance they
>>> don't seem to support numerical inequality operators (or I am wrong,
>>> which is also very likely).
>>>
>>> Thank you again for the quick help,
>>> Upali
>>>
>>>
>>>
>>>
>>>
>>>
>>> On 11/04/2013 14:14, Davide Sottara wrote:
>>>> You should be able to
>>>> git clone ...
>>>> the droolsjbpm repository, then
>>>> git checkout -t origin/5.5.x
>>>>
>>>> this should switch to 5.5.1-SNAPSHOT (you can check the pom in the root
>>>> folder)
>>>> eventually, mvn clean install should do the trick.
>>>>
>>>> See also the readme.md in github
>>>>
>>>> Btw, it seems that you're working with rule/ontology integrations..
>>>> would you
>>>> be interested in sharing thoughts?
>>>>
>>>> Davide
>>>>
>>>> On 
>
>
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20130414/2c733595/attachment.html 


More information about the rules-users mailing list