{"id":69571,"date":"2019-12-30T16:45:47","date_gmt":"2019-12-30T11:15:47","guid":{"rendered":"https:\/\/www.vskills.in\/certification\/tutorial\/?p=69571"},"modified":"2024-04-12T14:21:54","modified_gmt":"2024-04-12T08:51:54","slug":"ios-predicate","status":"publish","type":"page","link":"https:\/\/www.vskills.in\/certification\/tutorial\/ios-predicate\/","title":{"rendered":"iOS Predicate"},"content":{"rendered":"\n<p><a href=\"https:\/\/www.vskills.in\/certification\/tutorial\/mobile-testing-appium-tutorials\/\" target=\"_blank\" rel=\"noreferrer noopener\">Go back to tutorial<\/a><\/p>\n\n\n<h1><strong>iOS Predicate<\/strong><\/h1>\n<p>iOS predicates are used in iOS 9. 3 by using the -ios uiautomation locator strategy. Also, they are usable in iOS 10 and above using the -ios predicate string locator strategy.&nbsp;We will now be looking at the &#8216;-ios uiautomation&#8217; search strategy with Predicates. Such that, UIAutomation JavaScript API has following methods which can are very useful.<\/p>\n<ul>\n<li>(UIAElement) UIAElementArray.firstWithPredicate(PredicateString predicateString)<\/li>\n<li>(UIAElementArray) UIAElementArray.withPredicate(PredicateString predicateString)<\/li>\n<\/ul>\n<p>On the other hand, Native JS search strategy provides much more flexibility and is more like Xpath. Further, predicates can be used to restrict an elements set to select only those ones for which some condition is true.<\/p>\n<h3><\/h3>\n<h3><strong>iOS Predicate &#8211; Basic Comparisons<\/strong><\/h3>\n<p>= , == &#8211; The left-hand expression is equal to the right-hand expression:<\/p>\n<p>tableViews()[1].cells().firstWithPredicate(&#8220;label == &#8216;Olivia&#8217; &#8220;)<\/p>\n<p>same in Xpath: \/UIATableView[2]\/UIATableCell[@label = &#8216;Olivia&#8217;][1]\n<p>&gt;= , =&gt; &#8211; The left-hand expression is greater than or equal to the right-hand expression.<\/p>\n<p>&lt;= , =&lt; &#8211; The left-hand expression is less than or equal to the right-hand expression.<\/p>\n<p>&gt; &#8211; The left-hand expression is greater than the right-hand expression.<\/p>\n<p>&lt; &#8211; The left-hand expression is less than the right-hand expression.<\/p>\n<p>!= , &lt;&gt; &#8211; The left-hand expression is not equal to the right-hand expression.<\/p>\n<p>BETWEEN &#8211; The left-hand expression is between, or equal to either of, the values specified in the right-hand side. The right-hand side is a two value array (an array is required to specify order) giving upper and lower bounds.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Illustration &#8211;<\/strong> 1 BETWEEN { 0 , 33 }, or $INPUT BETWEEN { $LOWER, $UPPER }. In Objective-C, you could create a BETWEEN predicate as shown in following code,<\/p>\n<p>NSPredicate *betweenPredicate =<\/p>\n[NSPredicate predicateWithFormat: @&#8221;attributeName BETWEEN %@&#8221;, @[@1, @10]];<\/p>\n<p>This creates a predicate that matches ( ( 1 &lt;= attributeValue ) &amp;&amp; ( attributeValue &lt;= 10 ) )<\/p>\n<p>&nbsp;<\/p>\n<h3><strong>iOS Predicate &#8211; <\/strong><strong>Boolean Value Predicates<\/strong><\/h3>\n<p>TRUEPREDICATE &#8211; A predicate that always evaluates to TRUE .<\/p>\n<p>FALSEPREDICATE &#8211; A predicate that always evaluates to FALSE.<\/p>\n<p>&nbsp;<\/p>\n<h3><strong>Basic Compound Predicates<\/strong><\/h3>\n<p>AND , &amp;&amp; &#8211; Logical AND.<\/p>\n<p>OR , || &#8211; Logical OR.<\/p>\n<p>NOT , ! &#8211; Logical NOT.<\/p>\n<h3><\/h3>\n<h3><strong>String Comparisons<\/strong><\/h3>\n<p>Since, string comparisons are by default case and diacritic sensitive. Therefore, you can modify an operator using the key characters c and d within square braces, to specify case and diacritic insensitivity respectively.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Illustration &#8211;<\/strong><\/p>\n<p>firstName BEGINSWITH[cd] $FIRST_NAME<\/p>\n<p>BEGINSWITH &#8211; The left-hand expression begins with the right-hand expression.<\/p>\n<p>scrollViews()[3].buttons().firstWithPredicate(&#8220;name BEGINSWITH &#8216;results toggle&#8217; &#8220;)<\/p>\n<p>same in Xpath: \/UIAScrollView[4]\/UIAButton[starts-with(@name, &#8216;results toggle&#8217;)][1]\n<p>CONTAINS &#8211; The left-hand expression contains the right-hand expression.<\/p>\n<p>tableViews()[1].cells().withPredicate(&#8220;ANY collectionViews[0].buttons.name CONTAINS &#8216;opera'&#8221;)<\/p>\n<p>same in Xpath: \/UIATableView[2]\/UIATableCell[UIACollectionView[1]\/UIAButton[contains(@name, &#8216;opera&#8217;)]]\n<p>ENDSWITH &#8211; The left-hand expression ends with the right-hand expression.<\/p>\n<p>LIKE &#8211; The left hand expression equals the right-hand expression &#8211;<\/p>\n<p>? and * are allowed as wildcard characters<\/p>\n<p>where ? matches 1 character and * matches 0 or more characters.<\/p>\n<p>In Mac OS X v10.4, wildcard characters do not match newline characters.<\/p>\n<p>tableViews()[0].cells().firstWithPredicate(&#8220;name LIKE &#8216;*Total: $*&#8217; &#8220;)<\/p>\n<p>same in Xpath: \/UIATableView[1]\/UIATableCell[matches(@name, &#8216;.*Total: \\$.*&#8217;)][1]\n<p>MATCHES &#8211; The left hand expression equals the right hand expression using a regex -style comparison according to ICU v3.<\/p>\n<p>tableViews().firstWithPredicate(&#8220;value MATCHES &#8216;.*of 7&#8217; &#8220;)<\/p>\n<p>same in Xpath: \/UIATableView[matches(@value, &#8216;.*of 7&#8217;)][1]\n<p>&nbsp;<\/p>\n<h3><strong>Aggregate Operations<\/strong><\/h3>\n<p>ANY , SOME &#8211; Specifies any of the elements in the following expression.<\/p>\n<p>For example ANY children.age &lt; 18 .<\/p>\n<p>tableViews()[0].cells().firstWithPredicate(&#8220;SOME staticTexts.name = &#8216;red'&#8221;).staticTexts().withName(&#8216;red&#8217;)<\/p>\n<p>same in Xpath: \/UIATableView[1]\/UIATableCell[UIAStaticText\/@name = &#8216;red&#8217;][1]\/UIAStaticText[@name = &#8216;red&#8217;]\n<p>ALL &#8211; Specifies all of the elements in the following expression. For example ALL children.age &lt; 18 .<\/p>\n<p>NONE &#8211; Specifies none of the elements in the following expression.<\/p>\n<p>For example, NONE children.age &lt; 18 . This is logically equivalent to NOT (ANY &#8230;) .<\/p>\n<p>IN &#8211; Equivalent to an SQL IN operation, the left-hand side must appear in the collection specified by the right-hand side.<\/p>\n<p>For example, name IN { &#8216;Ben&#8217;, &#8216;Melissa&#8217;, &#8216;Matthew&#8217; } . The collection may be an array, a set, or a dictionary\u2014in the case of a dictionary, its values are used.<\/p>\n<p>array[index] &#8211; Specifies the element at the specified index in the array.<\/p>\n<p>array[FIRST] &#8211; Specifies the first element in the array.<\/p>\n<p>array[LAST] &#8211; Specifies the last element in the array.<\/p>\n<p>array[SIZE] &#8211; Specifies the size of the array<\/p>\n<p>elements()[0].tableViews()[0].cells().withPredicate(&#8220;staticTexts[SIZE] &gt; 2&#8221;)<\/p>\n<p>same in Xpath: \/*[1]\/UIATableView[1]\/UIATableCell[count(UIAStaticText) &gt; 2]\n<p>&nbsp;<\/p>\n<h3><strong>Identifiers<\/strong><\/h3>\n<p>C style identifier &#8211; Any C style identifier that is not a reserved word.<\/p>\n<p>#symbol &#8211; Used to escape a reserved word into a user identifier.<\/p>\n[\\]{octaldigit}{3} &#8211; Used to escape an octal number ( \\ followed by 3 octal digits).<\/p>\n[\\][xX]{hexdigit}{2} &#8211; Used to escape a hex number ( \\x or \\X followed by 2 hex digits).<\/p>\n[\\][uU]{hexdigit}{4} &#8211; Used to escape a Unicode number ( \\u or \\U followed by 4 hex digits).<\/p>\n<p>&nbsp;<\/p>\n<h3><strong>Literals<\/strong><\/h3>\n<p>Single and double quotes produce the same result, but they do not terminate each other.<\/p>\n<p>For example, &#8220;abc&#8221; and &#8216;abc&#8217; are identical, whereas &#8220;a&#8217;b&#8217;c&#8221; is equivalent to a space-separated concatenation of a, &#8216;b&#8217;, c.<\/p>\n<p>FALSE , NO &#8211; Logical false.<\/p>\n<p>TRUE , YES &#8211; Logical true.<\/p>\n<p>NULL , NIL &#8211; A null value.<\/p>\n<p>SELF &#8211; Represents the object being evaluated.<\/p>\n<p>&#8220;text&#8221; &#8211; A character string.<\/p>\n<p>&#8216;text&#8217; &#8211; A character string.<\/p>\n<p>Comma-separated literal array &#8211; For example, { &#8216;comma&#8217;, &#8216;separated&#8217;, &#8216;literal&#8217;, &#8216;array&#8217; } .<\/p>\n<p>Standard integer and fixed-point notations &#8211; For example, 1 , 27 , 2.71828 , 19.75 .<\/p>\n<p>Floating-point notation with exponentiation &#8211; For example, 9.2e-5 .<\/p>\n<p>0x &#8211; Prefix used to denote a hexadecimal digit sequence.<\/p>\n<p>0o &#8211; Prefix used to denote an octal digit sequence.<\/p>\n<p>0b &#8211; Prefix used to denote a binary digit sequence.<\/p>\n<p>&nbsp;<\/p>\n<h3><strong>Reserved Words<\/strong><\/h3>\n<p>The following words are reserved:<\/p>\n<p>AND, OR, IN, NOT, ALL, ANY, SOME, NONE, LIKE, CASEINSENSITIVE, CI, MATCHES, CONTAINS, BEGINSWITH, ENDSWITH, BETWEEN, NULL, NIL, SELF, TRUE, YES, FALSE, NO, FIRST, LAST, SIZE, ANYKEY, SUBQUERY, CAST, TRUEPREDICATE, FALSEPREDICATE<\/p>\n<p>&nbsp;<\/p>\n<h3><strong>Appium predicate helpers<\/strong><\/h3>\n<p>Appium has helpers for predicate search in app.js:<\/p>\n<ul>\n<li>getFirstWithPredicate<\/li>\n<li>getFirstWithPredicateWeighted<\/li>\n<li>getAllWithPredicate<\/li>\n<li>getNameContains<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<h4><strong>Enrich your profile and become Job Ready. Practice and Prepare for&nbsp;<a href=\"https:\/\/www.vskills.in\/certification\/testing\/mobile-testing-appium-professional\">Mobile Testing (Appium) Exam<\/a>&nbsp;Now!<\/strong><\/h4>\n<h4><strong>Get expert advice and hundreds of Free Test \u2013 Try&nbsp;<a href=\"https:\/\/www.vskills.in\/practice\/index.php?route=test\/search&amp;search=appium\">Mobile Testing (Appium) Practice Questions<\/a>&nbsp;Now!<\/strong><\/h4>\n\n\n<p><a href=\"https:\/\/www.vskills.in\/certification\/tutorial\/mobile-testing-appium-tutorials\/\" target=\"_blank\" rel=\"noreferrer noopener\">Go back to tutorial<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Go back to tutorial iOS Predicate iOS predicates are used in iOS 9. 3 by using the -ios uiautomation locator strategy. Also, they are usable in iOS 10 and above using the -ios predicate string locator strategy.&nbsp;We will now be looking at the &#8216;-ios uiautomation&#8217; search strategy with Predicates. Such that, UIAutomation JavaScript API has&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"categories":[7891],"tags":[7988],"class_list":["post-69571","page","type-page","status-publish","hentry","category-mobile-testing-appium","tag-ios-predicate"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>iOS Predicate - Mobile Testing (Appium) - VskillsTutorial<\/title>\n<meta name=\"description\" content=\"Get ready to learn iOS Predicate and practice with hundreds of real time exam questions. Become a Certified Mobile Testing Professional. Try Now!\" \/>\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.vskills.in\/certification\/tutorial\/ios-predicate\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"iOS Predicate - Mobile Testing (Appium) - VskillsTutorial\" \/>\n<meta property=\"og:description\" content=\"Get ready to learn iOS Predicate and practice with hundreds of real time exam questions. Become a Certified Mobile Testing Professional. Try Now!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.vskills.in\/certification\/tutorial\/ios-predicate\/\" \/>\n<meta property=\"og:site_name\" content=\"Tutorial\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/vskills.in\/\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-12T08:51:54+00:00\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.vskills.in\/certification\/tutorial\/ios-predicate\/\",\"url\":\"https:\/\/www.vskills.in\/certification\/tutorial\/ios-predicate\/\",\"name\":\"iOS Predicate - Mobile Testing (Appium) - VskillsTutorial\",\"isPartOf\":{\"@id\":\"https:\/\/www.vskills.in\/certification\/tutorial\/#website\"},\"datePublished\":\"2019-12-30T11:15:47+00:00\",\"dateModified\":\"2024-04-12T08:51:54+00:00\",\"description\":\"Get ready to learn iOS Predicate and practice with hundreds of real time exam questions. Become a Certified Mobile Testing Professional. Try Now!\",\"breadcrumb\":{\"@id\":\"https:\/\/www.vskills.in\/certification\/tutorial\/ios-predicate\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.vskills.in\/certification\/tutorial\/ios-predicate\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.vskills.in\/certification\/tutorial\/ios-predicate\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.vskills.in\/certification\/tutorial\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"iOS Predicate\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.vskills.in\/certification\/tutorial\/#website\",\"url\":\"https:\/\/www.vskills.in\/certification\/tutorial\/\",\"name\":\"Tutorial\",\"description\":\"Vskills - A initiative in elearning and certification\",\"publisher\":{\"@id\":\"https:\/\/www.vskills.in\/certification\/tutorial\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.vskills.in\/certification\/tutorial\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.vskills.in\/certification\/tutorial\/#organization\",\"name\":\"Vskills\",\"url\":\"https:\/\/www.vskills.in\/certification\/tutorial\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.vskills.in\/certification\/tutorial\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.vskills.in\/certification\/tutorial\/wp-content\/uploads\/2017\/07\/vskills-min-logo.jpg\",\"contentUrl\":\"https:\/\/www.vskills.in\/certification\/tutorial\/wp-content\/uploads\/2017\/07\/vskills-min-logo.jpg\",\"width\":73,\"height\":55,\"caption\":\"Vskills\"},\"image\":{\"@id\":\"https:\/\/www.vskills.in\/certification\/tutorial\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/vskills.in\/\",\"https:\/\/x.com\/vskills_in\",\"https:\/\/www.linkedin.com\/company-beta\/1371554\/\",\"https:\/\/www.youtube.com\/channel\/UCMWnscxPwRF_PqXo9B7q_Tw\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"iOS Predicate - Mobile Testing (Appium) - VskillsTutorial","description":"Get ready to learn iOS Predicate and practice with hundreds of real time exam questions. Become a Certified Mobile Testing Professional. Try Now!","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.vskills.in\/certification\/tutorial\/ios-predicate\/","og_locale":"en_US","og_type":"article","og_title":"iOS Predicate - Mobile Testing (Appium) - VskillsTutorial","og_description":"Get ready to learn iOS Predicate and practice with hundreds of real time exam questions. Become a Certified Mobile Testing Professional. Try Now!","og_url":"https:\/\/www.vskills.in\/certification\/tutorial\/ios-predicate\/","og_site_name":"Tutorial","article_publisher":"https:\/\/www.facebook.com\/vskills.in\/","article_modified_time":"2024-04-12T08:51:54+00:00","twitter_misc":{"Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.vskills.in\/certification\/tutorial\/ios-predicate\/","url":"https:\/\/www.vskills.in\/certification\/tutorial\/ios-predicate\/","name":"iOS Predicate - Mobile Testing (Appium) - VskillsTutorial","isPartOf":{"@id":"https:\/\/www.vskills.in\/certification\/tutorial\/#website"},"datePublished":"2019-12-30T11:15:47+00:00","dateModified":"2024-04-12T08:51:54+00:00","description":"Get ready to learn iOS Predicate and practice with hundreds of real time exam questions. Become a Certified Mobile Testing Professional. Try Now!","breadcrumb":{"@id":"https:\/\/www.vskills.in\/certification\/tutorial\/ios-predicate\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.vskills.in\/certification\/tutorial\/ios-predicate\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.vskills.in\/certification\/tutorial\/ios-predicate\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.vskills.in\/certification\/tutorial\/"},{"@type":"ListItem","position":2,"name":"iOS Predicate"}]},{"@type":"WebSite","@id":"https:\/\/www.vskills.in\/certification\/tutorial\/#website","url":"https:\/\/www.vskills.in\/certification\/tutorial\/","name":"Tutorial","description":"Vskills - A initiative in elearning and certification","publisher":{"@id":"https:\/\/www.vskills.in\/certification\/tutorial\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.vskills.in\/certification\/tutorial\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.vskills.in\/certification\/tutorial\/#organization","name":"Vskills","url":"https:\/\/www.vskills.in\/certification\/tutorial\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.vskills.in\/certification\/tutorial\/#\/schema\/logo\/image\/","url":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-content\/uploads\/2017\/07\/vskills-min-logo.jpg","contentUrl":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-content\/uploads\/2017\/07\/vskills-min-logo.jpg","width":73,"height":55,"caption":"Vskills"},"image":{"@id":"https:\/\/www.vskills.in\/certification\/tutorial\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/vskills.in\/","https:\/\/x.com\/vskills_in","https:\/\/www.linkedin.com\/company-beta\/1371554\/","https:\/\/www.youtube.com\/channel\/UCMWnscxPwRF_PqXo9B7q_Tw"]}]}},"_links":{"self":[{"href":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-json\/wp\/v2\/pages\/69571","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-json\/wp\/v2\/comments?post=69571"}],"version-history":[{"count":5,"href":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-json\/wp\/v2\/pages\/69571\/revisions"}],"predecessor-version":[{"id":84617,"href":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-json\/wp\/v2\/pages\/69571\/revisions\/84617"}],"wp:attachment":[{"href":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-json\/wp\/v2\/media?parent=69571"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-json\/wp\/v2\/categories?post=69571"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-json\/wp\/v2\/tags?post=69571"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}