I think the G engine uses it. It is an SQL pointer method for nested graphs here at Imagisoft.
I talked about it before. The G engine, keeps track of rank and file for the SQL operators. For example, in a dictionary look up, a g graph like:
word.( partofspeech, definition, history)
Ranks is conting the descensions of the dot operator, file is counting the rowid of the graph. To search a long list:
select * from dictionary where rank = parameter and key = parameter. Then subselect the component list which will then have higher rank: select * where rank > parameter;
So rank is a filter, allowing SQL procedures to extract the key word in a lng dictionary list. But having rank and pointer means correct in the result means rank and file arithmetic. Compound unions in the select froms are needed, if the next row selected was a descension then select pointer.rank+1, otherwise pointer.file+1. Thus keep Gout in G gaph order. The G engine will help, ultimately we will install G arithmetic in an sqlite3 embedded function. So how do I mange rank and file? Right now, my pointer uses the upper byte of a 3 bit pointer for rank, but that will change. It implies that I cannot descend more than 128 levels into the World of G!
The G engine makes it natural to traverse arbitrary ontologies using complex SQL. I am testing it now.
No comments:
Post a Comment