{"id":1647,"date":"2020-07-27T10:24:45","date_gmt":"2020-07-27T04:54:45","guid":{"rendered":"https:\/\/binaryterms.com\/?p=1647"},"modified":"2021-01-18T11:00:41","modified_gmt":"2021-01-18T05:30:41","slug":"domain-class-model","status":"publish","type":"post","link":"https:\/\/binaryterms.com\/domain-class-model.html","title":{"rendered":"Domain Class Model"},"content":{"rendered":"<p><strong>Domain class model<\/strong> defines the real-world classes and the relationship between them. In our previous content, we have studied that during the software development process the domain modelling occurs at the analysis phase.<\/p>\n<p><strong>Domain analysis<\/strong> figures out real-world objects from the problem statement that are important from the application point of view by creating the domain model.<\/p>\n<p>Domain model figure outs three aspects of the real-world objects:<\/p>\n<ol>\n<li>The static structure of the object by creating a domain class model.<\/li>\n<li>Interaction between the objects by creating domain interaction model.<\/li>\n<li>Life cycle histories of the objects by creating the domain state model.<\/li>\n<\/ol>\n<p>In this section, we will discuss the domain class model and its modelling elements in brief.<\/p>\n<h2>What is Domain Class Model?<\/h2>\n<p>Domain class model is the first model created during analysis because it is easier and convenient to define <strong>static<\/strong> entities which are independent of the application and are more stable in the progression of the software development.<\/p>\n<p>To create the domain class model, the information is gathered from the problem statement, related applications, expert\u2019s knowledge, business interviews, documents etc&#8230; You must not rely entirely on the provided problem statement as not even a business expert can provide a precise problem statement.<\/p>\n<p>Now, the problem is how to create a domain class model?<\/p>\n<p>To create a domain class model, you have to perform the following steps:<\/p>\n<ol>\n<li>Identify real-world classes.<\/li>\n<li>Compose a data dictionary.<\/li>\n<li>Identify the association.<\/li>\n<li>Identify attributes.<\/li>\n<li>Optimize classes using inheritance.<\/li>\n<li>Test the access path to verify that they produce a sensible result.<\/li>\n<li>Iterate to model to resolve the ambiguities.<\/li>\n<li>Revise the level of abstraction.<\/li>\n<li>Group classes to form packages.<\/li>\n<\/ol>\n<p>It is impossible to construct the entire software at once and develop every aspect uniformly. The first constructed model always has flaws and it is refined with several iterations. We will discuss each step of constructing a domain class model in detail.<\/p>\n<h3>1. Identifying Classes<\/h3>\n<p>Find the classes for real-world objects. An object could be a real-world physical entity like a person, furniture, country and many more as well as a conceptual real-world entity like route, transaction, cost. Make it clear you must figure out classes that are relevant to the application.<\/p>\n<p>You can\u2019t find all the classes from the problem statement you have to exercise your general knowledge to extract classes. The figure below shows the standard way of choosing classes.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1653\" src=\"https:\/\/binaryterms.com\/wp-content\/uploads\/2020\/07\/Domain-Class-Model.jpg\" alt=\"Domain Class Model\" width=\"521\" height=\"118\" srcset=\"https:\/\/binaryterms.com\/wp-content\/uploads\/2020\/07\/Domain-Class-Model.jpg 521w, https:\/\/binaryterms.com\/wp-content\/uploads\/2020\/07\/Domain-Class-Model-300x68.jpg 300w\" sizes=\"auto, (max-width: 521px) 100vw, 521px\" \/><\/p>\n<p>Don\u2019t think too much to figure out the classes, just note down the classes that occur in your mind. At the initial stage don\u2019t indulge in practising inheritance.<\/p>\n<p>Now, from your class collection, you have to eliminate the unnecessary and incorrect classes. For this, you can use the following guideline.<\/p>\n<ul>\n<li>Eliminate the redundant classes by reserving one class with the most expressive name.<\/li>\n<li>Eliminate the irrelevant classes that have nothing to do with the problem. You need an expert\u2019s judgment for this as it would cause the problem if the eliminated class is important.<\/li>\n<li>Eliminate the vague classes that have ill-defined boundaries and are broader in scope.<\/li>\n<li>Names describing the property of the object must be listed as attributed. But if the property is independently too important then list it as a class, not as attributes. Same is with the operation, i.e. if the operation has some of its own properties then it should be modelled as a class.<\/li>\n<li>The name of the class should reflect its nature, not the role it plays in association with the other classes.<\/li>\n<li>Also, eliminate the names that are implementation construct.<\/li>\n<li>Ignore the classes that can be derived from other classes.<\/li>\n<\/ul>\n<h3>2. Preparing Data Dictionary<\/h3>\n<p>The name of the class can be interpreted in many ways. So, prepare a dictionary for every name. You can write the information in a paragraph that describes the class, its attributes, operations and associations. You can also note down the scope of the class in the current scenario and also about its limitations.<\/p>\n<h3>3. Identifying Associations<\/h3>\n<p>Now, when we have a set of classes its time to identify the structural relationships between them. Association can be identified as a verb or verb phrases in the problem statement.<\/p>\n<p>It is represented by communication (DealsWith), ownership (has, PartOf), physical location (PartOf, ContainedIn, NextTo), Condition (WorksFor, Manages). Just note down all the relationship and don\u2019t try to refine relations too early.<\/p>\n<p>After collection all kind of relations it times to eliminate and discard the unnecessary associations. For these follow the guidelines below.<\/p>\n<ul>\n<li>If you have eliminated certain class then eliminate its association or redefine it for other class.<\/li>\n<li>\u00a0Eliminate the association that is beyond the scope of the application.<\/li>\n<li>An association should be a perpetual relationship, not a temporary event. In the problem, statement association is sometimes expressed as an action.<\/li>\n<li>Decompose the associations between three or more classes into a binary association, retaining every information.<\/li>\n<li>Eliminate the association that can be defined with other association.<\/li>\n<li>The derived association may not add information but they are important for designing the class model.<\/li>\n<li>Association must be named carefully as the name define what the situation is?<\/li>\n<li>Association end names are not required if there is a single and well-defined association between a pair of classes. When there is multiple association between the classes association end name must be described precisely.<\/li>\n<li>Add qualified association when the object needs to be identified in a specific context.<\/li>\n<li>Add multiplicity to the association but don\u2019t try to refine too much as multiplicity changes during the analysis.<\/li>\n<li>In case you find any missing association add that missing association.<\/li>\n<li>Don\u2019t spend much time in distinguishing between association and aggregation. As aggregation is also an association but, with some extra conditions.<\/li>\n<\/ul>\n<h3>4. Identifying Attributes<\/h3>\n<p>For every class, identify the common nouns that describe the properties of the object in the application domain. Attributes are not much described as classes and association.<\/p>\n<p>Do not spend too much time in identifying attribute. Only consider attributes important from the applications point of view. Name attributes in a meaningful sense. Figure out the attributes on the association, this attribute defines the relationship between two objects instead of defining the property of the individual object.<\/p>\n<p>After listing out attributes its time to eliminate the unnecessary and incorrect attribute.<\/p>\n<ul>\n<li>Eliminates the attributes whose independent existence is important from the application point of view, consider that attribute as an object.<\/li>\n<li>Restate the attribute as a qualifier, if its value is depending on a certain situation.<\/li>\n<li>A name is considered as an attribute if its value doesn\u2019t depend on the particular context and need not be unique in a set.<\/li>\n<li>Eliminate the attribute whose only concern is to identify the object as class model implicitly include an identifier.<\/li>\n<li>If the attribute presents value for the links then it is the attribute of association.<\/li>\n<li>Attributes defining the internal state of the object that are not visible to the outside world then eliminate those attributes.<\/li>\n<li>Attributes that are not affecting the behavior of an object must be eliminated.<\/li>\n<li>Restate boolean attributes as enumeration.<\/li>\n<\/ul>\n<h3>5. Refining inheritance<\/h3>\n<p>We have left the task of generalizing and reorganizing the classes while identifying the classes. Generalizing the classes help in reusing the class models.<\/p>\n<p>We can implement inheritance among the classes in two directions:<\/p>\n<ul>\n<li><strong>Bottom-up:<\/strong> It is generalizing the classes by discovering the common attributes, associations and operation and defining it in the superclass.<\/li>\n<li><strong>Top-down:<\/strong> It is specializing the classes by refining the features of the superclass in the subclasses.<\/li>\n<\/ul>\n<h3>6. Testing Access Paths<\/h3>\n<p>Now its time to trace the domain class model to see that it answers for every possible user question. If you find that the model does not provide answers to some useful questions then it indicates that some information is missing from the model.<\/p>\n<h3>7. Iterating Class Model<\/h3>\n<p>Software is never developed at once it passes through many iterations to resolve ambiguities in it. Similarly, the class model doesn\u2019t get perfect in one pass. While iterating the class model you have to find the missing answers for the questions you get in testing the access path stage.<\/p>\n<h3>8. Shift Level of Abstraction<\/h3>\n<p>In the first pass, you have been focusing on the problem statement to figure out classes and associations. But this is not enough you have to raise the level of abstraction at each iteration.<\/p>\n<h3>9. Grouping Classes into Packages<\/h3>\n<p>After discovering classes, identifying the association between them, listing attributes for classes now, we have to group the classes that are more closely related to each other in packages.<\/p>\n<p>Classes in different packages are less closely related to each other. It is not that you can not repeat classes in different packages. Packages could be reused if your previous problem is similar to the current one.<\/p>\n<p>If your new problem statement is similar to the previous one but more advance you can extend the packages. It is based on your judgment if you want to reuse the packages or build a new model.<\/p>\n<p>So, this is all about the technique to construct a domain class model. We have leant about what is the domain model? What\u2019s the use of a domain class model? How to construct the domain class model?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Domain class model defines the real-world classes and the relationship between them. In our previous content, we have studied that during the software development process the domain modelling occurs at the analysis phase. Domain analysis figures out real-world objects from the problem statement that are important from the application point of view by creating the [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_genesis_hide_title":false,"_genesis_hide_breadcrumbs":false,"_genesis_hide_singular_image":false,"_genesis_hide_footer_widgets":false,"_genesis_custom_body_class":"","_genesis_custom_post_class":"","_genesis_layout":"","footnotes":""},"categories":[10],"tags":[],"class_list":{"0":"post-1647","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-oot","7":"entry"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>What is Domain Class Model? Design Elements - Binary Terms<\/title>\n<meta name=\"description\" content=\"Domain class model defines the real-world classes and the relationship between them. Modelling domain class model occurs at analysis phase.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/binaryterms.com\/domain-class-model.html\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"What is Domain Class Model? Design Elements - Binary Terms\" \/>\n<meta property=\"og:description\" content=\"Domain class model defines the real-world classes and the relationship between them. Modelling domain class model occurs at analysis phase.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/binaryterms.com\/domain-class-model.html\" \/>\n<meta property=\"og:site_name\" content=\"Binary Terms\" \/>\n<meta property=\"article:published_time\" content=\"2020-07-27T04:54:45+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-01-18T05:30:41+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/binaryterms.com\/wp-content\/uploads\/2020\/07\/Domain-Class-Model.jpg\" \/>\n<meta name=\"author\" content=\"Neha T\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Neha T\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/binaryterms.com\/domain-class-model.html#article\",\"isPartOf\":{\"@id\":\"https:\/\/binaryterms.com\/domain-class-model.html\"},\"author\":{\"name\":\"Neha T\",\"@id\":\"https:\/\/binaryterms.com\/#\/schema\/person\/e495f1d57f5c0a4c521cc3dba95661fe\"},\"headline\":\"Domain Class Model\",\"datePublished\":\"2020-07-27T04:54:45+00:00\",\"dateModified\":\"2021-01-18T05:30:41+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/binaryterms.com\/domain-class-model.html\"},\"wordCount\":1521,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/binaryterms.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/binaryterms.com\/domain-class-model.html#primaryimage\"},\"thumbnailUrl\":\"https:\/\/binaryterms.com\/wp-content\/uploads\/2020\/07\/Domain-Class-Model.jpg\",\"articleSection\":[\"Object Oriented Technology\"],\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/binaryterms.com\/domain-class-model.html#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/binaryterms.com\/domain-class-model.html\",\"url\":\"https:\/\/binaryterms.com\/domain-class-model.html\",\"name\":\"What is Domain Class Model? Design Elements - Binary Terms\",\"isPartOf\":{\"@id\":\"https:\/\/binaryterms.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/binaryterms.com\/domain-class-model.html#primaryimage\"},\"image\":{\"@id\":\"https:\/\/binaryterms.com\/domain-class-model.html#primaryimage\"},\"thumbnailUrl\":\"https:\/\/binaryterms.com\/wp-content\/uploads\/2020\/07\/Domain-Class-Model.jpg\",\"datePublished\":\"2020-07-27T04:54:45+00:00\",\"dateModified\":\"2021-01-18T05:30:41+00:00\",\"description\":\"Domain class model defines the real-world classes and the relationship between them. Modelling domain class model occurs at analysis phase.\",\"breadcrumb\":{\"@id\":\"https:\/\/binaryterms.com\/domain-class-model.html#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/binaryterms.com\/domain-class-model.html\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/binaryterms.com\/domain-class-model.html#primaryimage\",\"url\":\"https:\/\/binaryterms.com\/wp-content\/uploads\/2020\/07\/Domain-Class-Model.jpg\",\"contentUrl\":\"https:\/\/binaryterms.com\/wp-content\/uploads\/2020\/07\/Domain-Class-Model.jpg\",\"width\":521,\"height\":118,\"caption\":\"Domain Class Model\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/binaryterms.com\/domain-class-model.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/binaryterms.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Domain Class Model\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/binaryterms.com\/#website\",\"url\":\"https:\/\/binaryterms.com\/\",\"name\":\"Binary Terms\",\"description\":\"The Computer Science &amp; IT Guide\",\"publisher\":{\"@id\":\"https:\/\/binaryterms.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/binaryterms.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/binaryterms.com\/#organization\",\"name\":\"Binary Terms\",\"url\":\"https:\/\/binaryterms.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/binaryterms.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/binaryterms.com\/wp-content\/uploads\/2020\/05\/binary-terms-logo1.png\",\"contentUrl\":\"https:\/\/binaryterms.com\/wp-content\/uploads\/2020\/05\/binary-terms-logo1.png\",\"width\":400,\"height\":63,\"caption\":\"Binary Terms\"},\"image\":{\"@id\":\"https:\/\/binaryterms.com\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/binaryterms.com\/#\/schema\/person\/e495f1d57f5c0a4c521cc3dba95661fe\",\"name\":\"Neha T\",\"url\":\"https:\/\/binaryterms.com\/author\/author\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"What is Domain Class Model? Design Elements - Binary Terms","description":"Domain class model defines the real-world classes and the relationship between them. Modelling domain class model occurs at analysis phase.","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:\/\/binaryterms.com\/domain-class-model.html","og_locale":"en_GB","og_type":"article","og_title":"What is Domain Class Model? Design Elements - Binary Terms","og_description":"Domain class model defines the real-world classes and the relationship between them. Modelling domain class model occurs at analysis phase.","og_url":"https:\/\/binaryterms.com\/domain-class-model.html","og_site_name":"Binary Terms","article_published_time":"2020-07-27T04:54:45+00:00","article_modified_time":"2021-01-18T05:30:41+00:00","og_image":[{"url":"https:\/\/binaryterms.com\/wp-content\/uploads\/2020\/07\/Domain-Class-Model.jpg","type":"","width":"","height":""}],"author":"Neha T","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Neha T","Estimated reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/binaryterms.com\/domain-class-model.html#article","isPartOf":{"@id":"https:\/\/binaryterms.com\/domain-class-model.html"},"author":{"name":"Neha T","@id":"https:\/\/binaryterms.com\/#\/schema\/person\/e495f1d57f5c0a4c521cc3dba95661fe"},"headline":"Domain Class Model","datePublished":"2020-07-27T04:54:45+00:00","dateModified":"2021-01-18T05:30:41+00:00","mainEntityOfPage":{"@id":"https:\/\/binaryterms.com\/domain-class-model.html"},"wordCount":1521,"commentCount":0,"publisher":{"@id":"https:\/\/binaryterms.com\/#organization"},"image":{"@id":"https:\/\/binaryterms.com\/domain-class-model.html#primaryimage"},"thumbnailUrl":"https:\/\/binaryterms.com\/wp-content\/uploads\/2020\/07\/Domain-Class-Model.jpg","articleSection":["Object Oriented Technology"],"inLanguage":"en-GB","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/binaryterms.com\/domain-class-model.html#respond"]}]},{"@type":"WebPage","@id":"https:\/\/binaryterms.com\/domain-class-model.html","url":"https:\/\/binaryterms.com\/domain-class-model.html","name":"What is Domain Class Model? Design Elements - Binary Terms","isPartOf":{"@id":"https:\/\/binaryterms.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/binaryterms.com\/domain-class-model.html#primaryimage"},"image":{"@id":"https:\/\/binaryterms.com\/domain-class-model.html#primaryimage"},"thumbnailUrl":"https:\/\/binaryterms.com\/wp-content\/uploads\/2020\/07\/Domain-Class-Model.jpg","datePublished":"2020-07-27T04:54:45+00:00","dateModified":"2021-01-18T05:30:41+00:00","description":"Domain class model defines the real-world classes and the relationship between them. Modelling domain class model occurs at analysis phase.","breadcrumb":{"@id":"https:\/\/binaryterms.com\/domain-class-model.html#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/binaryterms.com\/domain-class-model.html"]}]},{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/binaryterms.com\/domain-class-model.html#primaryimage","url":"https:\/\/binaryterms.com\/wp-content\/uploads\/2020\/07\/Domain-Class-Model.jpg","contentUrl":"https:\/\/binaryterms.com\/wp-content\/uploads\/2020\/07\/Domain-Class-Model.jpg","width":521,"height":118,"caption":"Domain Class Model"},{"@type":"BreadcrumbList","@id":"https:\/\/binaryterms.com\/domain-class-model.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/binaryterms.com\/"},{"@type":"ListItem","position":2,"name":"Domain Class Model"}]},{"@type":"WebSite","@id":"https:\/\/binaryterms.com\/#website","url":"https:\/\/binaryterms.com\/","name":"Binary Terms","description":"The Computer Science &amp; IT Guide","publisher":{"@id":"https:\/\/binaryterms.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/binaryterms.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Organization","@id":"https:\/\/binaryterms.com\/#organization","name":"Binary Terms","url":"https:\/\/binaryterms.com\/","logo":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/binaryterms.com\/#\/schema\/logo\/image\/","url":"https:\/\/binaryterms.com\/wp-content\/uploads\/2020\/05\/binary-terms-logo1.png","contentUrl":"https:\/\/binaryterms.com\/wp-content\/uploads\/2020\/05\/binary-terms-logo1.png","width":400,"height":63,"caption":"Binary Terms"},"image":{"@id":"https:\/\/binaryterms.com\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/binaryterms.com\/#\/schema\/person\/e495f1d57f5c0a4c521cc3dba95661fe","name":"Neha T","url":"https:\/\/binaryterms.com\/author\/author"}]}},"_links":{"self":[{"href":"https:\/\/binaryterms.com\/wp-json\/wp\/v2\/posts\/1647","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/binaryterms.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/binaryterms.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/binaryterms.com\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/binaryterms.com\/wp-json\/wp\/v2\/comments?post=1647"}],"version-history":[{"count":2,"href":"https:\/\/binaryterms.com\/wp-json\/wp\/v2\/posts\/1647\/revisions"}],"predecessor-version":[{"id":2169,"href":"https:\/\/binaryterms.com\/wp-json\/wp\/v2\/posts\/1647\/revisions\/2169"}],"wp:attachment":[{"href":"https:\/\/binaryterms.com\/wp-json\/wp\/v2\/media?parent=1647"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/binaryterms.com\/wp-json\/wp\/v2\/categories?post=1647"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/binaryterms.com\/wp-json\/wp\/v2\/tags?post=1647"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}