naya.mdwn 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. **page under contruction**
  2. links:
  3. - [[data]]
  4. - [[decisions]]
  5. <div class="infobox">
  6. <h2>Links</h2>
  7. <ul>
  8. <li> [[News]]
  9. <li> [[Releases]]
  10. <li> [[Forum]]
  11. <li> [[Tickets]]
  12. </ul>
  13. </div>
  14. [[!toc]]
  15. # Introduction
  16. **Naya** is a query model designed to be used with the [[Smaoin]] semantic
  17. information model.
  18. # Documentation
  19. + [[Tutorial]] - friendly guide for learning Naya
  20. + [[Manual]] - reference material with explanations and examples
  21. # Software
  22. None. Naya is a just a model, therefore any software here will probably be just
  23. helper utilities.
  24. # Data
  25. These are the information documents which provide the actual precise definition
  26. of Naya. See [[here|data]].
  27. # Community
  28. For now, see the [[/contact]] page.
  29. # Copying
  30. All the data files and specifications for Naya are free culture works. All the
  31. related software is free software.
  32. # Bugs, Ideas, Tasks and Decisions
  33. See these:
  34. - [[tickets]]
  35. - [[decisions]]
  36. -----
  37. -----
  38. -----
  39. [[!template id=todo text="""
  40. Move the things below into reorganized subpages
  41. """]]
  42. Background
  43. ==========
  44. When dealing with reasonably small amounts of data, it is possible to load
  45. all the data from persistent memory into the main memory and process it while
  46. it's there. But when the size of the data grows, it must be loaded in chunks,
  47. otherwise it will cause overflow.
  48. When getting the data from a remote location, the problem is bigger: Even if
  49. the data isn't too big to handle locally, it may take long time to receive
  50. from the remote location.
  51. Also, when processing data chunks locally, the processing may take very long
  52. time for certain operations. For example searching may require going through
  53. the whole data block, just to find a tiny piece of information.
  54. These problems cause the naive approach to reading from a database fail when
  55. scaled: If we read large chunks and search inside them, we:
  56. 1. Send a lot of data over the network
  57. 2. Load a lot of data to RAM or do a lot of disk I/O for temporary storage
  58. 3. Run long computation-intensive operations to extract the information we want
  59. This is where __queries__ come to help us.
  60. Queries allow the same entity which holds the data to also handle storage
  61. mechanisms for efficient searching and matching, which means these operations
  62. become much faster than what we would do on the client side. Queries allow
  63. the server side to filter just the information we need, and avoid sending
  64. unnecessary large chunks over the network. Queries allow the server side to
  65. take the responsibility over efficient disk space management, which minimizes
  66. access to the disk and allows the client side to work with the small data
  67. sizes it needs in the same usual way it does file I/O.
  68. As you can see, these are the main advantages and the reasons for the
  69. existence of __databases__ in general. Queries are indeed a fundamental
  70. component of many database models.
  71. Queries under a Semantic Model
  72. ==============================
  73. Object models and relational models have one important thing in common: Both of
  74. them do a significant sacrifice on the mathematical models of information, for
  75. the gain of human friendliness of the model, better structure and modularity,
  76. and maybe easier implementation and lower system resource requirements.
  77. As such, the mathematical models behind them are artificial and limited. As
  78. a consequence the same is true for the query languages: They don't serve as
  79. general purpose query expression tools, but only as a way to express commands
  80. to be applied to the structured data storage. Their scope is limited to the
  81. artificially defined scope of the model.
  82. Semantic models are different in this sense. They are based on fundamental
  83. concepts like sets and relations, and can describe any finite set or relation
  84. with the exactly the same tool, avoiding introduction of new fundamental
  85. artificial structures like tables or trees. Instead, semantic models
  86. use general-purpose graphs to represent sets, elements and the relations
  87. between them.
  88. Due to this difference, query languages for semantic models have one extra
  89. responsibility. And unless you're an expert in logic and set theory, this
  90. responsibility is quite heavy. Queries under semantic models __question and__
  91. __examine the theoretical mathematical scope, limits and broadness of question__
  92. __expressions and logic formulas__.
  93. Since query languages for semantic models already exist, I could just pick one
  94. and adapt it to my needs. But then the result wouldn't be better than the tool
  95. I started with. I am personally interested in expanding and discovering new
  96. models, tools and techniques, and find logic and set theory very interesting
  97. as a general model for expression of information. Therefore, I decided to
  98. take queries very seriously, explore this area and design a formal detailed
  99. model for expression of queries, independent of any language or syntax.
  100. I called this new model __Naya__.
  101. Naya
  102. ====
  103. Here is the documentation of progress and work on Naya:
  104. + [[Mathematical basis|math-basis]]
  105. + [[Existing technology|existing]]
  106. + [[Early design|early-design]]
  107. + [[SPARQL specification table-of-contents|sparql-toc]]
  108. + [[SPARQL examples|sparql-examples]]
  109. + [[Design]]
  110. + [[Design2]]
  111. + [[Examples]] for design
  112. + [[Design3]] discusses issues
  113. + [[Design4]] introduces an improved model
  114. + [[Design5]] explores the resolution process