OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

xdi message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: Re: [xdi] $or and $and may not be necessary


Coming back a bit to this thread... I've made some thoughts.

The solution proposed by Markus works because he has been able to 
express this complex query into a "normal form" compliant with the 
one used for "traditional" $get. He correctly identified that this 
format allows to disjoin the graph into multiple graphs (he called 
them "clusters"). Adding different $any variables, we can implicitly 
create AND and OR statements, in a simple way: AND statements are 
created when the same $any variable appears into two or more 
clusters, OR statements are the default.
So this solution will work in general for any AND/OR expression. The 
only concern is that we've to arrange the query into this "normal 
form". Interestingly, the existence of a "normal form" for XDI has 
reminded me some expressions in logic which are known as disjunctive 
normal forms: http://en.wikipedia.org/wiki/Disjunctive_normal_form... 
not sure, but maybe it worths to be further investigated in the future.

Bests,
Giovanni

At 15.40 01/04/2008, Giovanni Bartolomeo wrote:
>Hello Markus,
>
>at a first glance it seems that this solution works fine, however I'm
>not sure whether this could replace $and, $or etc. in any possible use
>case (we need to elaborate some more examples).
>But I agree that for now this is a good solution and we can reccomend
>to use it :-)
>
>Giovanni
>
>At 20.46 30/03/2008, you wrote:
>Maybe $or and $and are not necessary at all, because I think that
>1) There's an implicit AND relation between query statements that
>share variables.
>2) There's an implicit OR relation between query statements that do
>not share variables.
>
>For example, take this query:
>
>=giovanni
>     +friend
>         $any$1
>     +brother
>         $any$2
>$any$1+age
>     $lesser
>         "40"
>
>It means give me all statements that are matched by the following:
>( [=giovanni[+friend[$any$1]]] AND [$any$1+age[$lesser["40"]]] ) OR (
>[=giovanni[+brother[$any$2]]] )
>
>In other words, you can divide the query graph into multiple disjunct
>graphs (let's call them clusters). Every variable you use appears in
>only one cluster. The query above consists of two clusters:
>
>Cluster 1:
>
>=giovanni
>     +friend
>         $any$1
>$any$1+age
>     $lesser
>         "40"
>
>Cluster 2:
>
>=giovanni
>     +brother
>         $any$2
>
>Now the rule is that when executing the query you select everything
>from your input graph that matches ALL statements in AT LEAST ONE of
>the clusters. This results in the implicit AND and OR relations.
>
>I'm not 100% sure, but I think that with Giovanni's $any and $all
>words you can automatically model any query you want, without the need
>for $or and $and.
>
>Markus
>
>P.S. I'm sure that in graph theory there's a better word for those
>"clusters", but I don't know the correct expression in either English
>or German. The point is that variables that are not "connected" end up
>in different clusters.
>
>
>
>---------------------------------------------------------------------
>To unsubscribe from this mail list, you must leave the OASIS TC that
>generates this mail.  You may a link to this group and all your TCs in OASIS
>at:
>https://www.oasis-open.org/apps/org/workgroup/portal/my_workgroups.php




[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]