<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.4 20241031//EN"
        "https://jats.nlm.nih.gov/publishing/1.4/JATS-journalpublishing1-4.dtd">
<article  article-type="research-article"        dtd-version="1.4">
            <front>

                <journal-meta>
                                                                <journal-id>jeps</journal-id>
            <journal-title-group>
                                                                                    <journal-title>International Journal of Advances in Engineering and Pure Sciences</journal-title>
            </journal-title-group>
                                        <issn pub-type="epub">2636-8277</issn>
                                                                                            <publisher>
                    <publisher-name>Marmara Üniversitesi</publisher-name>
                </publisher>
                    </journal-meta>
                <article-meta>
                                        <article-id pub-id-type="doi">10.7240/jeps.737786</article-id>
                                                                <article-categories>
                                            <subj-group  xml:lang="en">
                                                            <subject>Engineering</subject>
                                                    </subj-group>
                                            <subj-group  xml:lang="tr">
                                                            <subject>Mühendislik</subject>
                                                    </subj-group>
                                    </article-categories>
                                                                                                                                                        <title-group>
                                                                                                                        <article-title>GraphQL için Sorgu Oluşturma Sürecinde Kullanılan Yöntemlerin Analizi ve İyileştirilmesi</article-title>
                                                                                                    </title-group>
            
                                                    <contrib-group content-type="authors">
                                                                        <contrib contrib-type="author">
                                                                    <contrib-id contrib-id-type="orcid">
                                        https://orcid.org/0000-0003-3523-0941</contrib-id>
                                                                <name>
                                    <surname>Aydoğdu</surname>
                                    <given-names>İbrahim Enes</given-names>
                                </name>
                                                                    <aff>FATİH SULTAN MEHMET VAKIF ÜNİVERSİTESİ</aff>
                                                            </contrib>
                                                    <contrib contrib-type="author">
                                                                    <contrib-id contrib-id-type="orcid">
                                        https://orcid.org/0000-0002-5613-0686</contrib-id>
                                                                <name>
                                    <surname>Nizam</surname>
                                    <given-names>Ali</given-names>
                                </name>
                                                                    <aff>FATİH SULTAN MEHMET VAKIF ÜNİVERSİTESİ</aff>
                                                            </contrib>
                                                                                </contrib-group>
                        
                                        <pub-date pub-type="pub" iso-8601-date="20210130">
                    <day>01</day>
                    <month>30</month>
                    <year>2021</year>
                </pub-date>
                                        <volume>33</volume>
                                        <issue>1</issue>
                                        <fpage>73</fpage>
                                        <lpage>82</lpage>
                        
                        <history>
                                    <date date-type="received" iso-8601-date="20200516">
                        <day>05</day>
                        <month>16</month>
                        <year>2020</year>
                    </date>
                                                    <date date-type="accepted" iso-8601-date="20201209">
                        <day>12</day>
                        <month>09</month>
                        <year>2020</year>
                    </date>
                            </history>
                                        <permissions>
                    <copyright-statement>Copyright © 2008, International Journal of Advances in Engineering and Pure Sciences</copyright-statement>
                    <copyright-year>2008</copyright-year>
                    <copyright-holder>International Journal of Advances in Engineering and Pure Sciences</copyright-holder>
                </permissions>
            
                                                                                                <abstract><p>Günümüzde teknolojik gelişmeler İnternete bağlanan toplam cihaz türü ve sayısında büyük artışa yol açmıştır. Sunucu makineler daha fazla istek almaya başlamış hem ağ trafiği hem de sunucu yanıt süresi olumsuz etkilenmiştir. Bu sorunları çözmek için geliştirilen GraphQL teknolojisi tek bir istekle birden fazla tablo, koleksiyon veya veri tabanına erişim sağlayarak toplu veri sorgulama ve değiştirmeye imkân vermektedir. Bu sayede cihaz başına düşen istek sayısı ve cihazların belleklerinde tutulacak veri boyutu azalır. Ancak GraphQL yeni bir teknoloji olduğundan henüz kod geliştirme sürecini yöneten ve kolaylaştıran araçlar tam olarak gelişmemiştir. Sunucu kısmında sorguları oluşturmak ve çalıştırmak için önemli ölçüde kodun elle yazılması gerekmektedir. Bu da yazılım geliştiricilere önemli bir iş yükü oluşturmaktadır. Bu çalışmada GraphQL sorgu geliştirme süreci, bu süreci kolaylaştırmak veya otomatikleştirmek için kullanılan araçlar, bu araçların kullandığı yöntemler ve sorgu geliştirme maliyetleri analiz edilmiştir. Bu maliyeti azaltmak için kodları otomatik oluşturan bir yöntem önerilmiş ve bir araç geliştirilmiştir. Geliştirilen yöntemin etkinliği diğer yöntemlerle karşılaştırılmış, sayısal olarak incelenmiş ve yazılımcıları birçok kodu tekrar yazmaktan kurtararak zamandan tasarruf sağladığı görülmüştür.</p></abstract>
                                                            
            
                                                            <kwd-group>
                                                    <kwd>GraphQL</kwd>
                                                    <kwd>  otomatik sorgu oluşturma</kwd>
                                                    <kwd>  </kwd>
                                                    <kwd>  nesne ilişkisel eşleşme</kwd>
                                                    <kwd>  </kwd>
                                                    <kwd>  anlık sogulama</kwd>
                                                    <kwd>  NoSQL</kwd>
                                            </kwd-group>
                            
                                                                                                                    <funding-group specific-use="FundRef">
                    <award-group>
                                                    <funding-source>
                                <named-content content-type="funder_name">Fatih Sultan Mehmet Vakıf Üniversitesi</named-content>
                            </funding-source>
                                                                    </award-group>
                </funding-group>
                                </article-meta>
    </front>
    <back>
                            <ref-list>
                                    <ref id="ref1">
                        <label>1</label>
                        <mixed-citation publication-type="journal">Apollo. (2020). Executing a query. Erişim Şubat 29, 2020, https://www.apollographql.com/docs/react/data/queries/</mixed-citation>
                    </ref>
                                    <ref id="ref2">
                        <label>2</label>
                        <mixed-citation publication-type="journal">Biying, L. (2010). Jetty improves the performance of network management system based on TR069 protocol. 2010 IEEE International Conference on Intelligent Computing and Intelligent Systems, 3, 799–801. https://doi.org/10.1109/ICICISYS.2010.5658303</mixed-citation>
                    </ref>
                                    <ref id="ref3">
                        <label>3</label>
                        <mixed-citation publication-type="journal">Capers, J., &amp; Bonsignour, O. (2011). The Economics of Software Quality. Addison-Wesley.</mixed-citation>
                    </ref>
                                    <ref id="ref4">
                        <label>4</label>
                        <mixed-citation publication-type="journal">Chen, T. H., Shang, W., Jiang, Z. M., Hassan, A. E., Nasser, M., &amp; Flora, P. (2014). Detecting performance anti-patterns for applications developed using object-relational mapping. Proceedings - International Conference on Software Engineering, 1001–1012. https://doi.org/10.1145/2568225.2568259</mixed-citation>
                    </ref>
                                    <ref id="ref5">
                        <label>5</label>
                        <mixed-citation publication-type="journal">Costal, D., Farré, C., Gómez, C., Jovanovic, P., Romero, O., &amp; Varga, J. (2017). Semi-automatic Generation of Data-Intensive APIs. Erişim http://opendata-ajuntament.barcelona.cat/data/en/dataset</mixed-citation>
                    </ref>
                                    <ref id="ref6">
                        <label>6</label>
                        <mixed-citation publication-type="journal">Drupal. (2020). Usage statistics for GraphQL | Drupal.org. Erişim Mart 3, 2020,  https://www.drupal.org/project/usage/graphql</mixed-citation>
                    </ref>
                                    <ref id="ref7">
                        <label>7</label>
                        <mixed-citation publication-type="journal">Electronjs. (2020). GraphiQL | Apps | Electron. Erişim Mart 4, 2020,  https://www.electronjs.org/apps/graphiql</mixed-citation>
                    </ref>
                                    <ref id="ref8">
                        <label>8</label>
                        <mixed-citation publication-type="journal">Facebook. (2015). GraphQL. Erişim Şubat 28, 2020,  http://spec.graphql.org/July2015/</mixed-citation>
                    </ref>
                                    <ref id="ref9">
                        <label>9</label>
                        <mixed-citation publication-type="journal">Ghebremicael, E. S. (2017). Transformation of REST API to GraphQL for OpenTOSCA. https://doi.org/10.18419/opus-9352</mixed-citation>
                    </ref>
                                    <ref id="ref10">
                        <label>10</label>
                        <mixed-citation publication-type="journal">GraphQL. (2020). Who’s Using | GraphQL. Erişim Mart 3, 2020,  https://graphql.org/users/</mixed-citation>
                    </ref>
                                    <ref id="ref11">
                        <label>11</label>
                        <mixed-citation publication-type="journal">Guo, Y., Deng, F., &amp; Yang, X. (2018). Design and Implementation of Real-Time Management System Architecture based on GraphQL Design and Implementation of Real-Time Management System Architecture based on GraphQL. In IOP Conf. Ser.: Mater. Sci. Eng. (p. 466). https://doi.org/10.1088/1757-899X/466/1/012015</mixed-citation>
                    </ref>
                                    <ref id="ref12">
                        <label>12</label>
                        <mixed-citation publication-type="journal">Hartig, O., &amp; Pérez, J. (2018). Semantics and Complexity of GraphQL Preprint Version, 27th World Wide Web Conference on World Wide Web.</mixed-citation>
                    </ref>
                                    <ref id="ref13">
                        <label>13</label>
                        <mixed-citation publication-type="journal">Hasura.io. (2020). Realtime GraphQL on PostgreSQL. Erişim Mayıs 10, 2020, https://hasura.io/</mixed-citation>
                    </ref>
                                    <ref id="ref14">
                        <label>14</label>
                        <mixed-citation publication-type="journal">He, H. (2008). Graphs-at-a-time : Query Language and Access Methods for Graph Databases, 405–417.</mixed-citation>
                    </ref>
                                    <ref id="ref15">
                        <label>15</label>
                        <mixed-citation publication-type="journal">Howtographql. (2019). Alternative approaches to schema development. Erişim Mart 4, 2020, https://www.howtographql.com/graphql-java/11-alternative-approaches/</mixed-citation>
                    </ref>
                                    <ref id="ref16">
                        <label>16</label>
                        <mixed-citation publication-type="journal">Howtographql. (2020). GraphQL is the better REST. Erişim Mart 3, 2020,  https://www.howtographql.com/basics/1-graphql-is-the-better-rest/</mixed-citation>
                    </ref>
                                    <ref id="ref17">
                        <label>17</label>
                        <mixed-citation publication-type="journal">Javapoet. (2020). Javapoet: A Java API for generating .java source files. Erişim Mart 4, 2020, https://github.com/square/javapoet</mixed-citation>
                    </ref>
                                    <ref id="ref18">
                        <label>18</label>
                        <mixed-citation publication-type="journal">JFoenix. (2020). JavaFX Material Design Library. Erişim Mayıs 11, 2020, http://www.jfoenix.com/</mixed-citation>
                    </ref>
                                    <ref id="ref19">
                        <label>19</label>
                        <mixed-citation publication-type="journal">Kozma, D., Varga, P., &amp; Larrinaga, F. (2019). Data-driven Workflow Management by utilising BPMN and CPN in IIoT Systems with the Arrowhead Framework. IEEE International Conference on Emerging Technologies and Factory Automation, ETFA, 2019-Septe, 385–392. https://doi.org/10.1109/ETFA.2019.8869501</mixed-citation>
                    </ref>
                                    <ref id="ref20">
                        <label>20</label>
                        <mixed-citation publication-type="journal">Li, L., Chou, W., Zhou, W., &amp; Luo, M. (2016). Design Patterns and Extensibility of REST API for Networking Applications. IEEE Transactions on Network and Service Management, 13(1), 154–167. https://doi.org/10.1109/TNSM.2016.2516946</mixed-citation>
                    </ref>
                                    <ref id="ref21">
                        <label>21</label>
                        <mixed-citation publication-type="journal">McConnell, S. (2006). Software estimation : Demystifying the Black Art. Microsoft Press.</mixed-citation>
                    </ref>
                                    <ref id="ref22">
                        <label>22</label>
                        <mixed-citation publication-type="journal">MongoDB. (2020). The database for modern applications. Erişim Mart 4, 2020,  https://www.mongodb.com/</mixed-citation>
                    </ref>
                                    <ref id="ref23">
                        <label>23</label>
                        <mixed-citation publication-type="journal">Porcello, E., &amp; Banks, A. (2018). Learning GraphQL: Declarative Data Fetching for Modern Web Apps. O’Reilly Media.</mixed-citation>
                    </ref>
                                    <ref id="ref24">
                        <label>24</label>
                        <mixed-citation publication-type="journal">PostGraphile. (2020). CRUD Mutations. Erişim Mart 3, 2020, https://www.graphile.org/postgraphile/crud-mutations/</mixed-citation>
                    </ref>
                                    <ref id="ref25">
                        <label>25</label>
                        <mixed-citation publication-type="journal">Prisma. (2020). GraphQL Usage - Prisma. Erişim Mart 3, 2020, https://www.prisma.io/with-graphql</mixed-citation>
                    </ref>
                                    <ref id="ref26">
                        <label>26</label>
                        <mixed-citation publication-type="journal">Rasool, S., Khan, R., &amp; Mian, A. N. (2019). GraphQL and DC-WSN-Based Cloud of Things. IT Professional, 21(1), 59–66. https://doi.org/10.1109/MITP.2018.2876982</mixed-citation>
                    </ref>
                                    <ref id="ref27">
                        <label>27</label>
                        <mixed-citation publication-type="journal">Relay. (2020). QueryRenderer. Erişim Mart 2, 2020,  https://relay.dev/docs/en/query-renderer</mixed-citation>
                    </ref>
                                    <ref id="ref28">
                        <label>28</label>
                        <mixed-citation publication-type="journal">Rodriguez-Echeverria, R., Cánovas Izquierdo, J. L., &amp; Cabot, J. (2017). Towards a UML and IFML Mapping to GraphQL. In ICWE 2017 (pp. 149–155). Springer Verlag. https://doi.org/10.1007/978-3-319-74433-9_13</mixed-citation>
                    </ref>
                                    <ref id="ref29">
                        <label>29</label>
                        <mixed-citation publication-type="journal">StG. (2020). Swagger-to-GraphQL. Erişim Şubat 29, 2020,  https://www.npmjs.com/package/swagger-to-graphql</mixed-citation>
                    </ref>
                                    <ref id="ref30">
                        <label>30</label>
                        <mixed-citation publication-type="journal">Taskula, T. (2019). Advanced Data Fetching with GraphQL: Case Bakery Service.</mixed-citation>
                    </ref>
                                    <ref id="ref31">
                        <label>31</label>
                        <mixed-citation publication-type="journal">Torres, A., Galante, R., Pimenta, M. S., Jonatan, A., &amp; Martins, B. (2017). Twenty years of object-relational mapping : A survey on patterns , solutions , and their implications on application design, 82, 1–18. https://doi.org/10.1016/j.infsof.2016.09.009</mixed-citation>
                    </ref>
                                    <ref id="ref32">
                        <label>32</label>
                        <mixed-citation publication-type="journal">Vargas, D. M., Mayor, U., Sim, D. S., Blanco, A. F., Pablo, J., Alcocer, S., Bergel, A. (2018). Deviation Testing: A Test Case Generation Technique for GraphQL APIs, 1–9.</mixed-citation>
                    </ref>
                                    <ref id="ref33">
                        <label>33</label>
                        <mixed-citation publication-type="journal">Vogel, M., Weber, S., &amp; Zirpins, C. (2018). Experiences on Migrating RESTful Web Services to GraphQL, 2, 283–295.</mixed-citation>
                    </ref>
                                    <ref id="ref34">
                        <label>34</label>
                        <mixed-citation publication-type="journal">Wernet, C. (2017). Unifying access to data from heterogeneous sources through a RESTful API using an e icient and dynamic SQL-query builder. Hochschule Karlsruher Technik und Wirtschaft.</mixed-citation>
                    </ref>
                                    <ref id="ref35">
                        <label>35</label>
                        <mixed-citation publication-type="journal">Wittern, E., Cha, A., &amp; Laredo, J. A. (2017). Generating GraphQL-Wrappers for REST(-like) APIs. In ICWE 2018. Springer, Cham.</mixed-citation>
                    </ref>
                            </ref-list>
                    </back>
    </article>
