{"id":2023,"date":"2006-04-28T19:56:00","date_gmt":"2006-04-28T19:56:00","guid":{"rendered":"http:\/\/www.leobard.net\/blog\/?p=2023"},"modified":"2017-11-04T15:48:13","modified_gmt":"2017-11-04T15:48:13","slug":"gnowsis-and-ajax-running-serql-queries-with-xmlrpc","status":"publish","type":"post","link":"https:\/\/www.leobard.net\/blog\/2006\/04\/28\/gnowsis-and-ajax-running-serql-queries-with-xmlrpc\/","title":{"rendered":"gnowsis and AJAX: running SERQL queries with XML\/RPC"},"content":{"rendered":"<p><b>Gnowsis rocks so hard that the neighbours complain<\/b>. read on to know why:<\/p>\n<p>(also available at <a href=\"https:\/\/gnowsis.opendfki.de\/wiki\/XmlRpcDeveloping\">this wiki page<\/a>)<\/p>\n<h1 id=\"XMLRPCdevelopingwithgnowsis\">XML-RPC developing with gnowsis<\/h1>\n<p>\nYes, we have AJAX, and we love it. You can call many services of gnowsis using XML\/RPC. The nice thing about this approach is, that every object that is defined as API of gnowsis inside a <tt>service.xml<\/tt> file is automatically hosted as XML\/RPC server. A small example to show what you can do when calling the <a class=\"wiki\">TaggingApi<\/a>:\n<\/p>\n<div class=\"code\">\n<pre>\/\/ Example: call method getPossibleTagsForTagName of API 'tagging' on service 'gnowsis-server'\n\/\/ (include gnowsis.js and jsolait dependencies)\n\n\/\/ call method\nvar tags = gnowsis_callXmlMethod(\"gnowsis-server\", \"tagging\", \"getPossibleTagsForTagName\", rlabel);\n\/\/ result is an array of maps\nfor (var i = 0; i &lt; tags .length; i++)\n{\n  \/\/ tag is a map, an array with named index.\n  var tag = tags[i];\n  \/\/ read uri and name of result\n  var tagUri = tag[\"uri\"];\n  var tagName = tag[\"name\"];\n  alert(\"hey, I found \"+tagName+\" (\"+tagUri+\")\");\n}\n\n<\/pre>\n<\/div>\n<h2 id=\"Whathappensinthisscript\">What happens in this script?<\/h2>\n<p>\nFirst <strong>the dependencies<\/strong>: to make this run, include the gnowsis.js dependencies. If you run gnowsis, go to <a class=\"ext-link\" href=\"http:\/\/127.0.0.1:9993\/gnowsis-server\/PimoTaggingAPI.html\"><span class=\"icon\"><\/span>http:\/\/127.0.0.1:9993\/gnowsis-server\/PimoTaggingAPI.html<\/a> for an example.\n<\/p>\n<pre class=\"wiki\">\/\/ (include dependencies)\n&lt;head&gt;\n&lt;script type='text\/javascript' src='web\/jsolait\/init.js'&gt;&lt;\/script&gt;\n&lt;script type='text\/javascript' src='web\/jsolait\/lib\/urllib.js'&gt;&lt;\/script&gt;\n\n&lt;script type='text\/javascript' src='web\/jsolait\/lib\/xml.js'&gt;&lt;\/script&gt;\n&lt;script type='text\/javascript' src='web\/jsolait\/lib\/xmlrpc.js'&gt;&lt;\/script&gt;\n&lt;script type='text\/javascript' src='gnowsis.js'&gt;&lt;\/script&gt;\n&lt;\/head&gt;\n<\/pre>\n<p>\nWhen you have done that, the gnowsis_callXmlMethod() function is available. You can test that by calling something simple as this:\n<\/p>\n<pre class=\"wiki\">\/\/ show the uri of the current user.\nalert(gnowsis_callXmlMethod('gnowsis-server','configure','getUserUri'));\n<\/pre>\n<p>\nWe called a method to get tags with a certain name in it. The <tt>gnowsis_callXmlMethod()<\/tt> method takes three (or more) parameters. The result value is an XML\/RPC result. If you want to know what is possible in XML\/RPC see at the bottom for the external links. The result value is, in this case, an array containing named arrays (maps).\n<\/p>\n<pre class=\"wiki\">var tags = gnowsis_callXmlMethod(\"gnowsis-server\", \"tagging\", \"getPossibleTagsForTagName\", rlabel);\n<\/pre>\n<p>\nNote that when the server throws an exception, the exception message will be passed to the xml\/rpc client, so you know whats happening when it fails.\n<\/p>\n<h1 id=\"Therealrockingcoolexample\">The real rocking cool example<\/h1>\n<p>\nDownload gnowsis and run this page:\n<\/p>\n<ul>\n<li><a class=\"ext-link\" href=\"http:\/\/127.0.0.1:9993\/gnowsis-server\/ajax_example.html\"><span class=\"icon\"><\/span>http:\/\/127.0.0.1:9993\/gnowsis-server\/ajax_example.html<\/a>\n<\/li>\n<li>press ok there.\n<\/li>\n<li>see how\n<ul>\n<li><strong>we run a SERQL query from javascript, <\/strong>\n<\/li>\n<li><strong>parse the results using ultra-cool jsolait framework<\/strong>\n<\/li>\n<li><strong>and render HTML of it.<\/strong>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>\nusing only these lines of code:<\/p>\n<pre class=\"wiki\">function runSerqlExample()\n{\n   \/\/ turn debug alerts off\n   gnowsis_showdebugalert = false;\n   var formC = document.forms[\"formserqlexample\"];\n   var queryString = formC.elements[\"rquery\"].value;  \n   try  {\n\t   var res = gnowsis_callXmlMethod(\"gnowsis-server\", \"dataaccess\", \"querySelect\", \n    \t  queryString, \"serql\");\n   } catch (e)\n   {\n     alert(\"error querying: \"+e);\n   }\n   renderSerqlExample(res);\n}\n\n\/**\n * render the serql query result.\n * query result is a vector of hashmaps, pretty easy.\n *\/\nfunction renderSerqlExample(res)\n{\n   gnowsis_debug(\"rendering table\");\n   var render = \"&lt;table&gt;\";\n   for (var i = 0; i &lt; res.length; i++)\n   {\n      var row = res[i];\n      \n      \/\/ render header?\n      if (i==0)\n      {\n      \trender+=\"&lt;tr&gt;\";\n\t\tfor (col in row)\n\t\t{\n          render += \"&lt;td&gt;\"+col+\"&lt;\/td&gt;\";   \n        }\n        render += \"&lt;\/tr&gt;\";\n      }\n      \n      \/\/ render row\n      render+=\"&lt;tr&gt;\";\n      for (col in row)\n      {\n        render += \"&lt;td&gt;\"+row[col]+\"&lt;\/td&gt;\";  \n      }\n      render += \"&lt;\/tr&gt;\";\n   }\n   render += \"&lt;\/table&gt;\";\n   var exampleOut = document.getElementById('SerqlExampleoutput');\n   gnowsis_debug(render);\n   exampleOut.innerHTML = render;\n   gnowsis_debug(\"finished\");\n}\n\n<\/pre>\n<p>\nyes, you want to dig this?\n<\/p>\n<ul>\n<li><a class=\"source\" href=\"\/browser\/branches\/gnowsis0.9\/gnowsis-server\/service\/gnowsis-server\/ajax_example.html\">source:branches\/gnowsis0.9\/gnowsis-server\/service\/gnowsis-server\/ajax_example.html<\/a> use the source, luke\n<\/li>\n<\/ul>\n<h1 id=\"SowhatservicescanIcall\">So what services can I call?<\/h1>\n<p>\nYou can call all services that are listed in the corresponding <tt>service.xml<\/tt> files.<br \/>\nWe encourage you to look at this service first:\n<\/p>\n<ul>\n<li><a class=\"wiki\">TaggingApi<\/a>, you can call the methods defined in the <a class=\"ext-link\" href=\"http:\/\/www.gnowsis.org\/statisch\/0.9\/doc\/gnowsis-server\/javadoc\/org\/gnowsis\/pimo\/TaggingApi.html\"><span class=\"icon\"><\/span>TaggingApi &#8211; Javadoc<\/a>\n<\/li>\n<li><a class=\"wiki\">PimoStorage<\/a>, you can add\/remove triples from the pimo via <a class=\"ext-link\" href=\"http:\/\/www.gnowsis.org\/statisch\/0.9\/doc\/gnowsis-server\/javadoc\/org\/gnowsis\/api\/DataAccessApi.html\"><span class=\"icon\"><\/span>this api<\/a>.\n<\/li>\n<li>every <a class=\"ext-link\" href=\"http:\/\/www.gnowsis.org\/statisch\/0.9\/doc\/gnowsis-server\/javadoc\/org\/gnowsis\/api\/package-summary.html\"><span class=\"icon\"><\/span>gnowsis-server API<\/a> that is listed.\n<\/li>\n<li><strong>note that you can only call methods that have really simple input\/output values<\/strong>. Not every method is allowed for XML\/RPC access, we are currently working on making more methods available. Only methods with the following datatypes as input\/output work:\n<ul>\n<li>no void result supported (XML\/RPC standard)\n<\/li>\n<li>Integer, Boolean, String, Double, javaa.util.Calendar, java.util.Date, byte[], java.util.Map, java.util.List\n<\/li>\n<li>no more. espacially this will not work: com.hp.hpl.jena.rdf.model.Resource !\n<\/li>\n<li>we are working on providing String-based interfaces for most of our methods.\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h1 id=\"AndwhataboutMozillaandXUL\">And what about Mozilla and XUL?<\/h1>\n<p>Now comes the tricky part: You want to write an XPI plugin for Mozilla Firefox or Mozilla Thunderbird and access the nice sesame repository of gnowsis. That is possible, but it needs an adapted version of the jsolait library and it is easier to copy\/paste our working prototype than to hack something from scratch.\n<\/p>\n<p>\nSo, all Mozilla fanatics that want to SPARQL from out there, please look at the code of this SVN project:\n<\/p>\n<ul>\n<li><a class=\"ext-link\" href=\"https:\/\/dragontalk.opendfki.de\/repos\/dragontalk\/trunk\/dragontalk_tagging_thunderbird\"><span class=\"icon\"><\/span>https:\/\/dragontalk.opendfki.de\/repos\/dragontalk\/trunk\/dragontalk_tagging_thunderbird<\/a>\n<\/li>\n<li><a class=\"ext-link\" href=\"https:\/\/dragontalk.opendfki.de\/repos\/dragontalk\/trunk\/dragontalk_tagging_thunderbird\/content\/dragontalk_tagging_thunderbird\/dt_tagging_messenger.js\"><span class=\"icon\"><\/span>this file<\/a> for example, loads the tags for each e-mail when its browsed in TB.\n<\/li>\n<\/ul>\n<p>\nAll you have to do is copy\/paste the whole project, change some parameters, run the build.xml and you have a plugin for Thunderbird 1.5.\n<\/p>\n<h1 id=\"OkIwanttodoAJAXwithgnowsiswhattodo\">Ok, I want to do AJAX with gnowsis, what to do?<\/h1>\n<p>\nSo the first thing you have to do, is run through the usual <a class=\"wiki\">GnowsisDevelopingBeta<\/a>. Then, you have a running gnowsis server with all the XML\/RPC services available on <tt>localhost:9993<\/tt>. <\/p>\n<p>\nThe best way to use gnowsis XML\/RPC and AJAX services is, at the moment, to edit the HTML files in \/services\/gnowsis-server\/*.html. They form a nice basis to get started, we frequently enlarge them with more examples. You can also start any other HTML project on your harddisk, Javascript and JSOLAIT are rock-hard technology and run pretty easy.\n<\/p>\n<h1 id=\"Restrictionsandcaveats\">Restrictions and caveats<\/h1>\n<p>\n<strong>No real ajax library used yet<\/strong>. Did you notice? we did not use coldfusion or any other cool Ajax library. We will, surely, soon do that.\n<\/p>\n<p>\nBe aware that our server only answers to requests coming from <tt>127.0.0.1<\/tt>. So, you will not be able to run server-to-server programs with it. That is good that way: gnowsis is a desktop server, not a web server. If you feel to change that, you may want to look at that <tt>jetty.xml<\/tt> file closer, but be warned: opening gnowsis to the network is not just a small security risk, its really a problem. Don&#8217;t open the gnowsis ports to outside, people can easily run shell commands via the XML\/RPC port with your user&#8217;s rights and cause havoc on your machine.<\/p>\n<h1 id=\"Links\">Links<\/h1>\n<p>\nApache XML\/RPC doc\n<\/p>\n<ul>\n<li><a class=\"ext-link\" href=\"http:\/\/ws.apache.org\/xmlrpc\/\"><span class=\"icon\"><\/span>xml-rpc doc<\/a>\n<\/li>\n<li><a class=\"ext-link\" href=\"http:\/\/ws.apache.org\/xmlrpc\/types.html\"><span class=\"icon\"><\/span>xml\/rpc types<\/a>\n<\/li>\n<\/ul>\n<p>\nDynamic HTML and XML: The XMLHttpRequest Object\n<\/p>\n<ul>\n<li><a class=\"ext-link\" href=\"http:\/\/developer.apple.com\/internet\/webcontent\/xmlhttpreq.html\"><span class=\"icon\"><\/span>http:\/\/developer.apple.com\/internet\/webcontent\/xmlhttpreq.html<\/a>\n<\/li>\n<li>example: <a class=\"ext-link\" href=\"http:\/\/developer.apple.com\/internet\/webcontent\/XMLHttpRequestExample\/example.html\"><span class=\"icon\"><\/span>http:\/\/developer.apple.com\/internet\/webcontent\/XMLHttpRequestExample\/example.html<\/a>\n<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Gnowsis rocks so hard that the neighbours complain. read on to know why: (also available at this wiki page) XML-RPC developing with gnowsis Yes, we have AJAX, and we love it. You can call many services of gnowsis using XML\/RPC. The nice thing about this approach is, that every object that is defined as API &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/www.leobard.net\/blog\/2006\/04\/28\/gnowsis-and-ajax-running-serql-queries-with-xmlrpc\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;gnowsis and AJAX: running SERQL queries with XML\/RPC&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_bluesky_dont_syndicate":"","_bluesky_syndication_accounts":"","_bluesky_syndication_text":"","activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":3,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"","footnotes":""},"categories":[5],"tags":[],"class_list":["post-2023","post","type-post","status-publish","format-standard","hentry","category-semweb"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>gnowsis and AJAX: running SERQL queries with XML\/RPC - Leobard&#039;s blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.leobard.net\/blog\/2006\/04\/28\/gnowsis-and-ajax-running-serql-queries-with-xmlrpc\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"gnowsis and AJAX: running SERQL queries with XML\/RPC - Leobard&#039;s blog\" \/>\n<meta property=\"og:description\" content=\"Gnowsis rocks so hard that the neighbours complain. read on to know why: (also available at this wiki page) XML-RPC developing with gnowsis Yes, we have AJAX, and we love it. You can call many services of gnowsis using XML\/RPC. The nice thing about this approach is, that every object that is defined as API &hellip; Continue reading &quot;gnowsis and AJAX: running SERQL queries with XML\/RPC&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.leobard.net\/blog\/2006\/04\/28\/gnowsis-and-ajax-running-serql-queries-with-xmlrpc\/\" \/>\n<meta property=\"og:site_name\" content=\"Leobard&#039;s blog\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/leobard\" \/>\n<meta property=\"article:published_time\" content=\"2006-04-28T19:56:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2017-11-04T15:48:13+00:00\" \/>\n<meta name=\"author\" content=\"leobard\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"leobard\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.leobard.net\\\/blog\\\/2006\\\/04\\\/28\\\/gnowsis-and-ajax-running-serql-queries-with-xmlrpc\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.leobard.net\\\/blog\\\/2006\\\/04\\\/28\\\/gnowsis-and-ajax-running-serql-queries-with-xmlrpc\\\/\"},\"author\":{\"name\":\"leobard\",\"@id\":\"https:\\\/\\\/www.leobard.net\\\/blog\\\/#\\\/schema\\\/person\\\/23f718c5d3bd8d343befaa1b11bdc609\"},\"headline\":\"gnowsis and AJAX: running SERQL queries with XML\\\/RPC\",\"datePublished\":\"2006-04-28T19:56:00+00:00\",\"dateModified\":\"2017-11-04T15:48:13+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.leobard.net\\\/blog\\\/2006\\\/04\\\/28\\\/gnowsis-and-ajax-running-serql-queries-with-xmlrpc\\\/\"},\"wordCount\":847,\"commentCount\":0,\"articleSection\":[\"SemWeb\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.leobard.net\\\/blog\\\/2006\\\/04\\\/28\\\/gnowsis-and-ajax-running-serql-queries-with-xmlrpc\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.leobard.net\\\/blog\\\/2006\\\/04\\\/28\\\/gnowsis-and-ajax-running-serql-queries-with-xmlrpc\\\/\",\"url\":\"https:\\\/\\\/www.leobard.net\\\/blog\\\/2006\\\/04\\\/28\\\/gnowsis-and-ajax-running-serql-queries-with-xmlrpc\\\/\",\"name\":\"gnowsis and AJAX: running SERQL queries with XML\\\/RPC - Leobard&#039;s blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.leobard.net\\\/blog\\\/#website\"},\"datePublished\":\"2006-04-28T19:56:00+00:00\",\"dateModified\":\"2017-11-04T15:48:13+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.leobard.net\\\/blog\\\/#\\\/schema\\\/person\\\/23f718c5d3bd8d343befaa1b11bdc609\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.leobard.net\\\/blog\\\/2006\\\/04\\\/28\\\/gnowsis-and-ajax-running-serql-queries-with-xmlrpc\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.leobard.net\\\/blog\\\/2006\\\/04\\\/28\\\/gnowsis-and-ajax-running-serql-queries-with-xmlrpc\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.leobard.net\\\/blog\\\/2006\\\/04\\\/28\\\/gnowsis-and-ajax-running-serql-queries-with-xmlrpc\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.leobard.net\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"gnowsis and AJAX: running SERQL queries with XML\\\/RPC\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.leobard.net\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.leobard.net\\\/blog\\\/\",\"name\":\"Leobard&#039;s blog\",\"description\":\"personal weblog of Leo Sauermann\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.leobard.net\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.leobard.net\\\/blog\\\/#\\\/schema\\\/person\\\/23f718c5d3bd8d343befaa1b11bdc609\",\"name\":\"leobard\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/4f15ee76fffcb732371d121c4713809a3f075186c6223630d4fe6c82ae88166d?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/4f15ee76fffcb732371d121c4713809a3f075186c6223630d4fe6c82ae88166d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/4f15ee76fffcb732371d121c4713809a3f075186c6223630d4fe6c82ae88166d?s=96&d=mm&r=g\",\"caption\":\"leobard\"},\"description\":\"https:\\\/\\\/www.leobard.net\\\/blog\\\/about-leo-sauermann\\\/\",\"sameAs\":[\"https:\\\/\\\/www.leobard.net\\\/\",\"https:\\\/\\\/www.facebook.com\\\/leobard\",\"https:\\\/\\\/www.instagram.com\\\/leobarder\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/leosauermann\\\/\"],\"url\":\"https:\\\/\\\/www.leobard.net\\\/blog\\\/author\\\/leobard\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"gnowsis and AJAX: running SERQL queries with XML\/RPC - Leobard&#039;s blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.leobard.net\/blog\/2006\/04\/28\/gnowsis-and-ajax-running-serql-queries-with-xmlrpc\/","og_locale":"en_US","og_type":"article","og_title":"gnowsis and AJAX: running SERQL queries with XML\/RPC - Leobard&#039;s blog","og_description":"Gnowsis rocks so hard that the neighbours complain. read on to know why: (also available at this wiki page) XML-RPC developing with gnowsis Yes, we have AJAX, and we love it. You can call many services of gnowsis using XML\/RPC. The nice thing about this approach is, that every object that is defined as API &hellip; Continue reading \"gnowsis and AJAX: running SERQL queries with XML\/RPC\"","og_url":"https:\/\/www.leobard.net\/blog\/2006\/04\/28\/gnowsis-and-ajax-running-serql-queries-with-xmlrpc\/","og_site_name":"Leobard&#039;s blog","article_author":"https:\/\/www.facebook.com\/leobard","article_published_time":"2006-04-28T19:56:00+00:00","article_modified_time":"2017-11-04T15:48:13+00:00","author":"leobard","twitter_card":"summary_large_image","twitter_misc":{"Written by":"leobard","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.leobard.net\/blog\/2006\/04\/28\/gnowsis-and-ajax-running-serql-queries-with-xmlrpc\/#article","isPartOf":{"@id":"https:\/\/www.leobard.net\/blog\/2006\/04\/28\/gnowsis-and-ajax-running-serql-queries-with-xmlrpc\/"},"author":{"name":"leobard","@id":"https:\/\/www.leobard.net\/blog\/#\/schema\/person\/23f718c5d3bd8d343befaa1b11bdc609"},"headline":"gnowsis and AJAX: running SERQL queries with XML\/RPC","datePublished":"2006-04-28T19:56:00+00:00","dateModified":"2017-11-04T15:48:13+00:00","mainEntityOfPage":{"@id":"https:\/\/www.leobard.net\/blog\/2006\/04\/28\/gnowsis-and-ajax-running-serql-queries-with-xmlrpc\/"},"wordCount":847,"commentCount":0,"articleSection":["SemWeb"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.leobard.net\/blog\/2006\/04\/28\/gnowsis-and-ajax-running-serql-queries-with-xmlrpc\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.leobard.net\/blog\/2006\/04\/28\/gnowsis-and-ajax-running-serql-queries-with-xmlrpc\/","url":"https:\/\/www.leobard.net\/blog\/2006\/04\/28\/gnowsis-and-ajax-running-serql-queries-with-xmlrpc\/","name":"gnowsis and AJAX: running SERQL queries with XML\/RPC - Leobard&#039;s blog","isPartOf":{"@id":"https:\/\/www.leobard.net\/blog\/#website"},"datePublished":"2006-04-28T19:56:00+00:00","dateModified":"2017-11-04T15:48:13+00:00","author":{"@id":"https:\/\/www.leobard.net\/blog\/#\/schema\/person\/23f718c5d3bd8d343befaa1b11bdc609"},"breadcrumb":{"@id":"https:\/\/www.leobard.net\/blog\/2006\/04\/28\/gnowsis-and-ajax-running-serql-queries-with-xmlrpc\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.leobard.net\/blog\/2006\/04\/28\/gnowsis-and-ajax-running-serql-queries-with-xmlrpc\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.leobard.net\/blog\/2006\/04\/28\/gnowsis-and-ajax-running-serql-queries-with-xmlrpc\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.leobard.net\/blog\/"},{"@type":"ListItem","position":2,"name":"gnowsis and AJAX: running SERQL queries with XML\/RPC"}]},{"@type":"WebSite","@id":"https:\/\/www.leobard.net\/blog\/#website","url":"https:\/\/www.leobard.net\/blog\/","name":"Leobard&#039;s blog","description":"personal weblog of Leo Sauermann","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.leobard.net\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.leobard.net\/blog\/#\/schema\/person\/23f718c5d3bd8d343befaa1b11bdc609","name":"leobard","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/4f15ee76fffcb732371d121c4713809a3f075186c6223630d4fe6c82ae88166d?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/4f15ee76fffcb732371d121c4713809a3f075186c6223630d4fe6c82ae88166d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/4f15ee76fffcb732371d121c4713809a3f075186c6223630d4fe6c82ae88166d?s=96&d=mm&r=g","caption":"leobard"},"description":"https:\/\/www.leobard.net\/blog\/about-leo-sauermann\/","sameAs":["https:\/\/www.leobard.net\/","https:\/\/www.facebook.com\/leobard","https:\/\/www.instagram.com\/leobarder\/","https:\/\/www.linkedin.com\/in\/leosauermann\/"],"url":"https:\/\/www.leobard.net\/blog\/author\/leobard\/"}]}},"_links":{"self":[{"href":"https:\/\/www.leobard.net\/blog\/wp-json\/wp\/v2\/posts\/2023","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.leobard.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.leobard.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.leobard.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.leobard.net\/blog\/wp-json\/wp\/v2\/comments?post=2023"}],"version-history":[{"count":1,"href":"https:\/\/www.leobard.net\/blog\/wp-json\/wp\/v2\/posts\/2023\/revisions"}],"predecessor-version":[{"id":2809,"href":"https:\/\/www.leobard.net\/blog\/wp-json\/wp\/v2\/posts\/2023\/revisions\/2809"}],"wp:attachment":[{"href":"https:\/\/www.leobard.net\/blog\/wp-json\/wp\/v2\/media?parent=2023"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.leobard.net\/blog\/wp-json\/wp\/v2\/categories?post=2023"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.leobard.net\/blog\/wp-json\/wp\/v2\/tags?post=2023"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}