10 Things to Know When Using SHACL With GraphDB

Today I have one of those moments where I am absolutely sure if I do not write this down, I will forget how to do this next time. For one of the projects I am working on, we need to do SHACL validation of RDF data that will be stored in Ontotext GraphDB. Here are the 10 things I needed to learn in doing this. Some of these are rather obvious, but some were less than obvious to me.

Number 1: To be able to do SHACL validation, your repository needs to be configured for SHACL when you create your repository. This cannot be done after the fact.

Top 5 Data Streaming Trends for 2023

Data streaming is one of the most relevant buzzwords in tech to build scalable real-time applications in the cloud and innovative business models. Do you wonder about my predicted TOP 5 data streaming trends in 2023 to set data in motion? Check out the following presentation and learn what role Apache Kafka plays. Learn about decentralized data mesh, cloud-native lakehouse, data sharing, improved user experience, and advanced data governance.

Some followers might notice that this became a series with past posts about the top 5 data streaming trends for 2021 and the top 5 for 2022. Data streaming with Apache Kafka is a journey and evolution to set data in motion. Trends change over time, but the core value of a scalable real-time infrastructure as the central data hub stays.

REST vs. Messaging for Microservices

This is an article from DZone's 2023 Software Integration Trend Report.

For more:


Read the Report

A microservices architecture is an established pattern for building a complex system that consists of loosely coupled modules. It is one of the most talked-about software architecture trends in the last few years. It seems to be a surprisingly simple idea to break a large, interdependent system into many small, lightweight modules that can make software management easier. 

Shipfusion Review

Shipfusion is an ecommerce fulfillment solution that provides businesses across the United States and Canada with powerful fulfillment, inventory management, and customer support to assist in building a seamless ecommerce operation. 

With additional products in returns, freight, and warehouse projects, you can focus on growing your business with an all-in-one solution.

Shipfusion brand logo.

Shipfusion Compared

Shipfusion did not make it onto our top list of the best ecommerce fulfillment services, though it is still a decent option. ShipBob is the best option for most, with two-day shipping and omnichannel support. Request a quote for free

About Shipfusion

Shipfusion offers comprehensive features for ecommerce fulfillment that scale to the size of your business. Whether you need shipping for 10 products or 100 products per month, Shipfusion can help you process orders, manage customer returns, and track inventory without the hassle of outsourcing various fulfillment platforms. 

Along with Shipfusion’s ecommerce fulfillment platform, its other products and services include inventory management, fulfillment center locations, a returns program, a freight management system, warehouse projects, and a reporting portal. 

Shipfusion Health and Stability

Shipfusion was founded in 2014 as a privately traded company with headquarters in Chicago, Illinois. Shipfusion has four investors, including Kanye Anderson Capital Advisors, Vitality Capital, Seek Captial Management, and MER Partners, collectively raising $40 million across four funding rounds. 

As of 2023, Shipfusion has hired more than 250 employees across the United States. With a 4.9-star rating on Glassdoor, most of Shipfusion’s current and former employees seem to support the CEO and like the work culture. 

Shipfusion Pricing

Unfortunately, Shipfusion doesn’t disclose pricing for any of its products on its website. This is because its ecommerce solution is highly customizable, and Shipfusion wants to work with the user to create a package that works well with their exact needs.

Shipfusion Pricing Structure

As Shipfusion doesn’t disclose pricing on its website, there isn’t much to discuss in terms of pricing structure. However, after extensive research, we found a few users claim that Shipfusion uses a monthly pricing structure.

But because Shipfusion works with you to create custom pricing, there’s a high chance that you can choose a structure that best suits your budget and business. 

Shipfusion Pricing Comparison

One of Shipfusion’s main—and most popular—products is its ecommerce platform, so I will compare the pricing for this same product between two competitors. Similarly to Shipfusion, many ecommerce platforms don’t disclose pricing on their website, but let’s take a look at two companies that do. 

ShipMonk bases its pricing on how many monthly orders you expect to pack and ship. For example, if you have between zero and 500 monthly orders, you will pay a $3.00 pick fee per order, a $0.75 fee for additional items per order, a $0.20 fee for promotional inserts, and $2.00 for return processing. ShipMonk also offers monthly storage fees that range from $1.00 per month to $25 per month for a pallet. 

Easyship offers a different pricing structure, with tiers that range from free to $29, $69, and $99 per month. Easyship’s free plan comes with 50 shipments per month and unlimited ecommerce integrations. 

Shipfusion Trials and Guarantees

Shipfusion doesn’t currently offer any free trials or guarantees. However, you can request a custom quote and view a demo for free. 

Shipfusion Ecommerce Fulfillment Service Review

Shipfusion stands out for its robust inventory software with incredible fulfillment features. Shipfusion’s ecommerce fulfillment service is flexible, with comprehensive customer support and smart storage. 

You will benefit from Shipfusion’s ecommerce fulfillment platform if you are looking for a flexible platform that will grow with your business. If you want to explore other excellent alternatives, check out our reviews of the best ecommerce fulfillment services

What Makes Shipfusion Ecommerce Fulfillment Service Great

A screenshot of Shipfusion's portal.
Shipfusion’s ecommerce portal is easy to navigate, with graphs, drop-down menus, and item lists. 

Robust inventory software: Shipfusion can help you manage your entire inventory with its robust inventory software. This software automatically updates your inventory data across multiple sales channels in real-time, which allows you to sell products on various platforms simultaneously while ensuring your data stays consistent. Shipfusion’s robust inventory software also allows you to transparently view all stock levels, including SKU continuity reports, back order notifications, and count/adjustment entries. 

Smart storage: If you’re looking to reduce storage costs and optimize how you store your products, Shipfusion offers storage solutions that target both areas. Shipfusion strategically designs its warehouses and inventory systems to assign your products to designated areas. And fewer shipment errors will likely result in fewer returns. Shipfusion also offers customized storage solutions, including temperature-controlled spaces and food-grade storage options.

Flexible shipping: Shipfusion works closely with its selected merchants to ensure you get the best rates possible. Shipfusion currently offers ground shipping, which is flexible and affordable for everyone involved. As a third-party logistics (3PL) fulfillment provider, Shipfusion handles the entire shipping process—from warehousing to distribution—and can help you deliver your products in as little as two days.

Comprehensive customer service: Slow customer support is a worry of the past with Shipfusion’s comprehensive customer service options. Instead of only having the options of phone or email customer support, Shipfusion allows you to choose from support tickets, live chat, email, phone, help video demos, and a blog. Plus, every Shipfusion user gets a dedicated account manager for additional support.

Powerful inventory fulfillment features: Aside from Shipfusion’s inventory management options, you’ll also benefit from its powerful inventory fulfillment features that help streamline your fulfillment and shipping process. For picking orders, you can choose from piece picking, which allows you to hand-pick orders, batch picking for bulk orders, or zone picking, where employees are assigned to one area of the warehouse at a time. You also have the option to integrate Shipfusion into your preferred sales channel for seamless order processing. 

Where Shipfusion Ecommerce Fulfillment Service Falls Short

A screenshot of Shipfusion's fulfillment services process via an infographic.
Shipfusion offers a seamless fulfillment service with shipment, order, and customer details in one centralized place.

Tracking issues: After reviewing dozens of reviews, I found a small percentage of reviewers who experienced tracking issues while using Shipfusion. They claimed that Shipfusion failed to accurately track their inventory, which led to overselling inventory they didn’t have.

Non-transparent pricing: Most ecommerce fulfillment services don’t disclose pricing on their website, so it’s not an uncommon practice. However, it does make it increasingly difficult for businesses to understand what their budget should look like for Shipfusion’s service. Instead, Shipfusion works with each customer to create a customized pricing plan that will suit your needs.

Sometimes slow shipping speeds: Despite Shipfusion claiming that its ground shipping can deliver products in as little as two days, this doesn’t seem to be the case for a few users. Some reviewers claimed that Shipfusion took up to a week to deliver their products, which caused them to lose money and time. 

Shipfusion Ecommerce Fulfillment Service Compared

While Shipfusion is a powerful ecommerce fulfillment service with smart storage and extensive inventory management, the best company on the market today is ShipBob, with reliable two-day shipping and omnichannel support.

Final Verdict

Shipfusion is an excellent ecommerce fulfillment service that caters to businesses looking to streamline their fulfillment and shipping processes. With robust inventory software, smart storage, and comprehensive customer service, Shipfusion can help you create a reliable ecommerce operation. 

Even though Shipfusion has been in the industry for nine years, the company continues to prove its reliability through generous funding rounds and a 4.9-star rating on Glassdoor.

ClickHouse: A Blazingly Fast DBMS With Full SQL Join Support

ClickHouse is an open-source real-time analytics database built and optimized for use cases requiring super-low latency analytical queries over large amounts of data. To achieve the best possible performance for analytical applications, combining tables in a data denormalization process is typical. Flattened tables help minimize query latency by avoiding joins at the cost of incremental ETL complexity, typically acceptable in return for sub-second queries. 

However, denormalizing data isn't always practical for some workloads, for instance, those coming from more traditional data warehouses. Sometimes, part of the source data for analytical queries needs to remain normalized. These normalized tables take less storage and provide flexibility with data combinations, but they require joins at query time for certain types of analysis.

Matter vs. Thread – A Head-to-Head Comparison!

Modern technology has made communication easier than ever before. From smartphones to other smart devices, we can use a single gadget to accomplish a lot. However, have you ever wondered what makes it all possible? It's the microscopic chip circuits supported by powerful protocols and standards.

Over the past two decades, the technology industry has revolutionized the way we see the world. Today, we use IoT devices that can communicate not only with us but also with other smart devices. This is all thanks to the continuous improvement of communication and networking protocols such as WiFi, Ethernet, Matter, Thread, etc.

How to Efficiently Read Email Messages with the Gmail API and Apps Script

The Email Address Extractor add-on for Gmail helps you extract email addresses of your customers from your Gmail messages and writes them to a Google Sheet. It internally uses the Gmail API to fetch the messages and the Google Sheets API to write the email addresses to a Google Sheet.

There are two ways to pull email addresses from Gmail messages. The simpler, and more popular, method is that you pull a list of messages from which you wish to extract the email and loop over them to extract the email addresses.

// Pull details of emails from PayPal, Stripe or Shopify
function getEmailAddress() {
  const threads = GmailApp.search('from:paypal OR from:stripe OR from:shopify newer_than:2d', 0, 10);
  threads.forEach((thread) => {
    const messages = thread.getMessages();
    messages.forEach((message) => {
      Logger.log('Subject: ' + message.getSubject());
      Logger.log('To: ' + message.getTo());
      Logger.log('From: ' + message.getFrom());
    });
  });
}

Gmail Batch Request

A more efficient way to pull email addresses from multiple email messages is to make a single batch request to the Gmail API with the help of Apps Script’s UrlFetch service.

1. Get a list of messages in Gmail

We use the Advanced Gmail service of Apps Script to get a list of unread messages from a user’s inbox in Gmail. You may use any of Gmail’s advanced search operators to filter the messages.

The searchGmailMessages() function uses the Gmail API to search for unread messages in the inbox and returns an array of message IDs.

const searchGmailMessages = () => {
  const { messages = [] } = Gmail.Users.Messages.list('me', {
    q: 'in:inbox is:unread',
    maxResults: 25,
    fields: 'messages(id)',
  });
  return messages.map(({ id } = {}) => id);
};

2. Prepare the batch request

Now that we have the list of Gmail message Ids, we need to prepare the batch request to the Gmail API.

The function getUrlParts() generates a URL query string with parameters for requesting specific fields and metadata for Gmail messages. We use the fields parameter to request minimal data for each message and the metadataHeaders parameter to request specific metadata headers for each message.

const getUrlParts = () => {
  const metadata = ['Subject', 'From', 'To'].map((key) => `metadataHeaders=${key}`).join('&');
  const data = {
    fields: 'payload/headers',
    format: `metadata`,
  };
  const fields = Object.entries(data)
    .map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`)
    .join('&');
  return `${fields}&${metadata}`;
};

The createMessageRequest() function constructs a request object for fetching a specific message from the Gmail API with an OAuth token.

const GMAIL_API_ENDPOINT = `https://www.googleapis.com/gmail/v1/users/me/messages`;
const createMessageRequest = (messageId) => {
  const urlparts = getUrlParts();
  return {
    url: `${GMAIL_API_ENDPOINT}/${messageId}?${urlparts}`,
    headers: { Authorization: `Bearer ${ScriptApp.getOAuthToken()}` },
    muteHttpExceptions: true,
  };
};

3. Make the batch request

We use the fetchAll method of the UrlFetch service to make multiple requests to the Gmail API in parallel. This method takes an array of request objects, we created them in the previous step, and fetches the email message headers for each message ID using the Gmail API.

const makeBatchRequest = (messageIds) => {
  const messageRequests = messageIds.map(createMessageRequest);
  const responses = UrlFetchApp.fetchAll(messageRequests);
  responses.forEach((response) => {
    const messageData = JSON.parse(response);
    const { error, payload: { headers = [] } = {} } = messageData;
    if (error) {
      console.log('Error', error);
    } else {
      headers.forEach(({ name, value }) => {
        Logger.log(name + ': ' + value);
      });
    }
  });
};

Also see: Send Email with Gmail API and Node.js

What Database We Use To Support Our AI Chatbots

At AISPEECH, we provide conversational AI services and natural language interaction solutions for a wide range of entities, including financial institutions, the government, and IoV and IoT companies. If you believe in the idea that big data is the fuel for artificial intelligence, you will see how important a performant data processing architecture is for us. In this post, I am going to share with you what data tools and techniques we use to power our AI services.

Real-Time vs. Offline: From Separation to Unity

Before 2019, we used Apache Hive + Apache Kylin to build our offline data warehouse, and Apache

Spark + MySQL as a real-time analytic data warehouse:

Roughly, we have three data sources: