Nodes, Attributes, and Relationships

Use the Technopedia query language (TQL) to query nodes, attributes, and relationships in the Technopedia graph database.

Technopedia data overview

Technopedia data is represented by nodes that store data, for example, the ASSET node represents software, hardware, and CPU asset data.

Nodes have attributes that store specific data, for example, the edition attribute on the ASSET node stores software edition data.

To get related data from other nodes, you use relationships to connect nodes in a query, which enables you to get related data from multiple nodes in one query.

The following diagram shows an overview of nodes and relationships in the Technopedia graph:

Figure 1. Nodes and relationships in Technopedia

Nodes in Technopedia

The Technopedia graph consists of the following nodes:

  • OWNER
    Represents manufacturer or owner data. Owner is synonymous with manufacturer.
  • ASSET
    Represents software, hardware, and CPU assets.
  • CATEGORY_2
    Represents the broadest categorization of Technopedia assets, such as desktops.
  • CATEGORY_1
    This category is the parent of CATEGORY_2 and is a narrower categorization of assets, such as computers.
  • CATEGORY_GROUP
    Represents category groups such as business applications and is parent of CATEGORY_1
  • VERTICAL
    Represents high-level groups such as medical, and financial.

About node attributes

An attribute is a named-value pair that is stored by a node or relationship.
A name-value pair consists of a data value and a name that identifies the data value.
For example, {product : 'Excel'}

Class attribute

The class attribute is used in ASSET node queries only to filter by software, hardware, or CPU.

For example, you can specify class in the following ways:
MATCH (alias:ASSET {class: 'Software'}) RETURN alias LIMIT 1
or
MATCH (alias:ASSET) WHERE alias.class = 'Software' RETURN alias LIMIT 1

The following diagram shows the class and type attributes that you use only with the ASSET node, and the type attribute that you use with the OWNER node:

Figure 2. Class and type attributes

Type attribute

The type attribute is used primarily on the ASSET node to represent distinct classifications of software such as Edition or Release that have their own attributes, for example, Version has attributes such as version_order and owner.

The following attributes are software type attributes on the ASSET node:

  • Product
  • Version
  • Edition
  • Release
  • Component
  • Family

The following query example returns a list of attributes on the type:Release attribute.

MATCH (alias:ASSET {class: 'Software', type: 'Release'}) RETURN alias LIMIT 1

Note: Attribute values for the class and type attributes are capitalized.

In the following query, the type attribute has the value Product

MATCH (n:ASSET {type: 'Product'}) RETURN n LIMIT 2

Both hardware and software nodes have a Product attribute, so you might get hardware and software results from this query as shown in the following results:

Figure 3. Hardware and software results from the Product attribute

Use the class attribute when you specifically want results for software, hardware, or CPU.

To get software or hardware only, specify the class attribute, as shown in the following query:
MATCH (alias:ASSET {class: 'Software', type: 'Product'}) RETURN alias
or
MATCH (alias:ASSET {class: 'Hardware', type: 'Product'}) RETURN alias

The following attributes are hardware type attributes on the ASSET node:

  • Product
  • Model

You can view a list of child attributes for the type attribute by using the following query:

MATCH (alias:ASSET {class: '<attribute>', type: '<attribute>'}) RETURN alias LIMIT 1


The CPU node has the type: Model attribute only as shown in the following example:

MATCH (alias:ASSET {class: 'CPU', type: 'Model'}) RETURN alias LIMIT 1



The OWNER node has one type attribute, which is Manufacturer.
View a list of the child attributes for the type attribute by using the following query:

MATCH (alias:OWNER {type: 'Manufacturer'}) RETURN alias LIMIT 1

Relationships connect nodes

Relationships connect nodes in the graph database, which enables you to include multiple nodes in one query by adding node-to-node relationships.

The following list describes characteristics of relationships in the Technopedia graph database:

  • Relationships connect nodes, for example, you use the OWNS relationship type to connect the OWNER node to the ASSET node so that you can retrieve related data from both nodes.
  • Relationships allow you to use a single query to traverse the Technopedia nodes and retrieve data from multiple nodes.
  • Typically, relationships are unidirectional, but they can be bidirectional, in which case, there‚Äôs no arrowhead.
  • Relationships have a type, such as OWNS and a direction, such as OWNER to ASSET.
    An arrowhead (>) determines the direction of the relationship.

Note: You can only access data from Technopedia nodes that your subscription allows.

Query examples

To use the MATCH statements in the following examples, you add the MATCH statement to the following /tql endpoint and make a GET request from an API client or use cURL.

https://data.technopedia.com/tql?q=<MATCH Statement>

MATCH (alias:ASSET {class: 'Software', type: 'Product'}) RETURN alias LIMIT 1

RESPONSE

{
    "results": [
        {      
            "alias.class": "Software",
            "alias.created_at": "2018-08-07T10:42:28Z",
            "alias.is_suite": "FALSE",
            "alias.modified_at": "2018-08-07T18:30:03Z",
            "alias.owner": "National Weather Service",
            "alias.product": "Bufkit",
            "alias.technopedia_id": "30873b4a-09a6-45bd-9990-ee3d0bf2eddb",
            "alias.title": "National Weather Service Bufkit",
            "alias.type": "Product",
            "alias.url": "https://training.weather.gov/wdtd/tools/BUFKIT/index.php"

         }
    ] 
 }    
MATCH (alias:ASSET {class: 'CPU', type: 'Model'}) 
RETURN alias LIMIT 1

RESPONSE

{
    "results": [
        {      
            "alias.class": "CPU",
            "alias.clock_rate": 2150,
            "alias.cores": 2,
            "alias.created_at": "2009-04-09T11:29:30Z",
            "alias.isa_bit_mode": 64,
            "alias.model": "SPARC64 VI Processor 2.15 GHz (Olympus-C)",
            "alias.modified_at": "2013-08-28T14:54:45Z",
            "alias.num_threads": 2,
            "alias.owner": "Fujitsu",
            "alias.technopedia_id": "2d28fc08-b9fb-43b9-a647-43f9b1f4b320",
            "alias.title": "Fujitsu SPARC64 VI Processor 2.15 GHz (Olympus-C)",
            "alias.type": "Model",
            "alias.url": "https://www.insight.com/search/minippp.web?materialId=SELX1A1Z#techspecs"
        }
    ] 
 }    

What's Next

TQL Queries

Nodes, Attributes, and Relationships


Suggested Edits are limited on API Reference Pages

You can only suggest edits to Markdown body content, but not to the API spec.