{"id":249378,"date":"2026-05-14T10:00:58","date_gmt":"2026-05-14T08:00:58","guid":{"rendered":"https:\/\/graphwise.ai\/?post_type=blog-post&#038;p=249378"},"modified":"2026-07-10T05:34:18","modified_gmt":"2026-07-10T03:34:18","slug":"querying-diverse-datasets-with-mcp","status":"publish","type":"blog-post","link":"https:\/\/gws-sso-test.graphwise.ai\/de\/blog\/querying-diverse-datasets-with-mcp\/","title":{"rendered":"Querying Diverse Datasets with MCP"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">One of the most sought-after qualities in any workplace is versatility. CVs always list all the skills we have and the technologies we know. It shouldn&#8217;t be a surprise that this also applies to the technologies themselves. We don&#8217;t just use the same software for all tasks. Data, too, is best stored in purpose-built structures. There are databases for time series data, databases for text, and databases for <a href=\"https:\/\/gws-sso-test.graphwise.ai\/fundamentals\/what-is-a-knowledge-graph\/\" target=\"_blank\" rel=\"noreferrer noopener\">knowledge graphs<\/a>.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">When retrieving data, interoperability is a key quality. In that regard, few approaches can beat <a href=\"https:\/\/gws-sso-test.graphwise.ai\/fundamentals\/what-is-large-language-model\/\" target=\"_blank\" rel=\"noreferrer noopener\">Large Language Models (LLMs)<\/a>. Since an LLM can make any textual request if provided sufficient context, it is ideal for this purpose. Model Context Protocol (MCP) makes this easier by standardising ways in which REST APIs are exposed.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In this step by step tutorial, we will use just this to bring some data together in one knowledge graph and then expose it via LLMs. This way, users can make queries in any language, not just the one(s) spoken by the knowledge graph data aggregator.<\/p>\n\n\n\n<h2 id='source-data-and-systems'  id=\"boomdevs_1\" class=\"wp-block-heading\" id=\"h-source-data-and-systems\">Source data and systems<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Publicly available financial industry data would be a good fit for this tutorial. It contains at least two kinds of data. On the one hand, financial data often forms graphs of connected corporations, people and industry sectors, which is ideally suited to knowledge graphs. On the other, it also has high-frequency transaction information, which is best suited to a time-series database.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We now know the domain of our data, but where to store it? The natural choice for graph data would be <a href=\"https:\/\/gws-sso-test.graphwise.ai\/components\/graphdb\/\" target=\"_blank\" rel=\"noreferrer noopener\">Graphwise&#8217;s GraphDB<\/a>. It offers fast SPARQL evaluation, great interoperability, and, since 2025, also <a href=\"https:\/\/gws-sso-test.graphwise.ai\/blog\/the-power-of-model-context-protocol-using-natural-language-to-query-graphdb\/\" target=\"_blank\" rel=\"noreferrer noopener\">offers an MCP server<\/a>. A popular option for relational data, in particular when analytics are involved, is <a href=\"https:\/\/www.snowflake.com\/en\/\" target=\"_blank\" rel=\"noreferrer noopener\">Snowflake<\/a>. Snowflake also <a href=\"https:\/\/docs.snowflake.com\/en\/user-guide\/snowflake-cortex\/cortex-agents-mcp\" target=\"_blank\" rel=\"noreferrer noopener\">exposes an MCP server<\/a>, so it&#8217;s a good fit.<\/p>\n\n\n\n<h2 id='interoperability'  id=\"boomdevs_2\" class=\"wp-block-heading\" id=\"h-interoperability\">Interoperability<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">This tutorial will cover two ways to expose your data in MCP:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Snowflake -&gt; JDBC connection -&gt; <a href=\"https:\/\/graphdb.ontotext.com\/documentation\/11.1\/virtualization.html\" target=\"_blank\" rel=\"noreferrer noopener\">GraphDB virtual repositories<\/a><\/li>\n\n\n\n<li>CSV file -&gt; <a href=\"https:\/\/platform.ontotext.com\/ontorefine\/\" target=\"_blank\" rel=\"noreferrer noopener\">Refine<\/a> (note that Refine will soon be replaced in by our new Graph Automation) -&gt; GraphDB standard repository<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">The target client can be any MCP client, but we decided on <a href=\"https:\/\/claude.ai\/\" target=\"_blank\" rel=\"noreferrer noopener\">Claude Desktop<\/a> over <a href=\"https:\/\/lmstudio.ai\/\" target=\"_blank\" rel=\"noreferrer noopener\">LM Studio<\/a> for practical reasons.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The final solution can easily include the Snowflake MCP server as well, but for brevity&#8217;s sake, we have omitted this part. <a href=\"https:\/\/datatoolspro.com\/tutorials\/install-and-setup-snowflake-mcp\/\" target=\"_blank\" rel=\"noreferrer noopener\">Adding a new Snowflake MCP server to Claude is straightforward<\/a>.<\/p>\n\n\n\n<h2 id='data-setup'  id=\"boomdevs_3\" class=\"wp-block-heading\">Data setup<\/h2>\n\n\n\n<h3 id='jdbc-virtual-data'  id=\"boomdevs_4\" class=\"wp-block-heading\">JDBC virtual data<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Our space is limited, so we assume you already know how to import data into Snowflake. Here&#8217;s a sample of the imported data.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"595\" src=\"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/1-1024x595.png\" alt=\"\" class=\"wp-image-244620\" srcset=\"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/1-1024x595.png 1024w, https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/1-980x570.png 980w, https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/1-480x279.png 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">In order to access this data in GraphDB, we would need an interoperability layer. This can be done over the Jata Database Connectivity (JDBC) API. Snowflake <a href=\"https:\/\/docs.snowflake.com\/en\/developer-guide\/jdbc\/jdbc-download\" target=\"_blank\" rel=\"noreferrer noopener\">offers a JDBC driver<\/a>. Any recent version would work, but for our tutorial, we&#8217;ll use 3.19.1. So, download the driver and place it in the GraphDB distribution directory, under lib\/jdbc. No restart is required, GraphDB will dynamically look up JDBC drivers stored there.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Hint<\/strong>: If running on Docker, you can mount the file.<br>&nbsp; volumes:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8211; .\/jdbc:\/opt\/graphdb\/dist\/lib\/jdbc<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;To make the JDBC connection, you need:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The snowflake URL, which is composed of:\n<ul class=\"wp-block-list\">\n<li>The account ID.<\/li>\n\n\n\n<li>A static <a href=\"http:\/\/snowflakecomputing.com\" target=\"_blank\" rel=\"noreferrer noopener\">snowflakecomputing.com<\/a> string.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>The Warehouse identifier.<\/li>\n\n\n\n<li>The username.<\/li>\n\n\n\n<li>The password.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">You can get this information (except credentials) from the connectors menu on the bottom left in the Snowflake UI.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"262\" height=\"234\" src=\"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/2.png\" alt=\"\" class=\"wp-image-244621\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Navigate to the Connectors\/Drivers tab and select the JDBC Connection String from the dropdown.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"849\" height=\"433\" src=\"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/3.png\" alt=\"\" class=\"wp-image-244622\" srcset=\"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/3.png 849w, https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/3-480x245.png 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 849px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Once you have this information, you can switch to GraphDB. We recommend starting the server with the environment variable JDK_JAVA_OPTIONS=&#8217;&#8211;add-opens=java.base\/java.nio=ALL-UNNAMED&#8217;. <a href=\"https:\/\/community.snowflake.com\/s\/article\/JDBC-Driver-Compatibility-Issue-With-JDK-16-and-Later\" target=\"_blank\" rel=\"noreferrer noopener\">This is because there is a bug in Snowflake drivers working under Java 16 or later<\/a> and GraphDB operates on Java 21. If you don&#8217;t, you will get an error message when you try to query your virtual repository.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"369\" src=\"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/4-1024x369.png\" alt=\"\" class=\"wp-image-244623\" srcset=\"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/4-980x353.png 980w, https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/4-480x173.png 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Once you have GraphDB up and running, start by selecting the Setup -&gt; Repositories page from the navigation menu. Create a new Virtual GraphDB repository. Your settings should look similar to this:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"838\" height=\"903\" src=\"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/5.png\" alt=\"\" class=\"wp-image-244624\" srcset=\"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/5.png 838w, https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/5-480x517.png 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 838px, 100vw\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"178\" src=\"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/6-1024x178.png\" alt=\"\" class=\"wp-image-244625\" srcset=\"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/6-1024x178.png 1024w, https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/6-980x171.png 980w, https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/6-480x84.png 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Note the Ontop settings for logging extra information. By default, we have no information about the reformulated query. Configuring those flags would log the queries sent to Snowflake. This is very useful for debugging and the logs only appear when a query is made, so they won&#8217;t clutter the general GraphDB log.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Next, we need to write the mapping. We will be using <a href=\"https:\/\/ontop-vkg.org\/guide\/advanced\/mapping-language.html\" target=\"_blank\" rel=\"noreferrer noopener\">OBDA, the ontop-native mapping language<\/a>. Ontop is the library embedded in GraphDB to enable integrations of relational data over JDBC.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">While this is just a small toy example, following industry standards is a good practice. One of the most important ontologies in the financial domain is <a href=\"https:\/\/spec.edmcouncil.org\/fibo\/\" target=\"_blank\" rel=\"noreferrer noopener\">FIBO<\/a>. Using it, we can ensure our data is interoperable with other datasources from the same domain.Writing mapping by hand can be time-consuming and error-prone. For this, we have partnered with Ontopic and we offer the <a href=\"https:\/\/ontopic.ai\/en\/ontopic-studio\/\" target=\"_blank\" rel=\"noreferrer noopener\">Ontopic studio<\/a>, which provides syntax assistance and a live preview of the results of your mapping. However, if you want to go even faster, you could start with an LLM prompt.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"669\" height=\"512\" src=\"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/7.png\" alt=\"\" class=\"wp-image-244626\" srcset=\"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/7.png 669w, https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/7-480x367.png 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 669px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Be mindful that the initial output likely wouldn&#8217;t work out of the box and you would have to refine it in several consecutive iterations. A more efficient approach could be to get the initial mapping from the LLM and carry out alterations by hand.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Here&#8217;s an example of a mapping.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"404\" src=\"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/8-1024x404.png\" alt=\"\" class=\"wp-image-244627\" srcset=\"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/8-980x387.png 980w, https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/8-480x190.png 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Once you have the mapping and the repository created, let&#8217;s fire a simple SPARQL query to ensure it&#8217;s properly set up.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"483\" src=\"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/9-1024x483.png\" alt=\"\" class=\"wp-image-244628\" srcset=\"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/9-980x462.png 980w, https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/9-480x226.png 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Explore the PSX ticker for extra information.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"778\" src=\"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/10-1024x778.png\" alt=\"\" class=\"wp-image-244629\" srcset=\"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/10-1024x778.png 1024w, https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/10-980x745.png 980w, https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/10-480x365.png 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">For the MCP client to write adequate queries, it would need information about the data structure. It could obtain it by running a SPARQL query, which fetches the first 1,000 triples of the database and examining them. However, this is unreliable. There may be predicates (properties) that just aren&#8217;t visible in the sample that the LLM picks up. Besides, this would be using up valuable bandwidth and tokens. The best option would be to provide it with an ontology. The GraphDB MCP server exposes a tool that provides ontological data to the LLM. It is based on storing your ontology in a named graph.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We could import the whole FIBO (and friend-of-a-friend) ontologies in graphs and rely on this. However, FIBO and FoaF are large ontologies, and we are using only a small subset of either. Not only would we be wasting tokens on processing the whole ontology, but the LLM may end up writing worse queries since it has parts of the ontology that don&#8217;t correspond to any data.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The best approach would be to take only the parts of FIBO and FoaF that are relevant to our data. We can easily do this with SPARQL, looking up the classes and properties in your triplestore, then deleting all instances from the ontology that are not represented in the data. However, assuming no SPARQL know-how, we could also ask an LLM to do it for you.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"572\" height=\"106\" src=\"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/11.png\" alt=\"\" class=\"wp-image-244630\" srcset=\"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/11.png 572w, https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/11-480x89.png 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 572px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Unlike the OBDA mapping, there are a lot of examples of FIBO ontologies available on the Internet and the LLM is much better at writing a correct ontology. It would likely be correct on the first try.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Store this ontology. We would need it shortly.<\/p>\n\n\n\n<h3 id='relational-data-materialisation-with-refine'  id=\"boomdevs_5\" class=\"wp-block-heading\">Relational data materialisation with Refine<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Next, we shall store some of our data using an ETL transformation with Refine and import it into a standard GraphDB repository. This serves two purposes.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>It demonstrates another way of integrating data with GraphDB.<\/li>\n\n\n\n<li>It gives us a repository we can query over MCP.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Why the latter purpose? Currently, the MCP server can only work with standard repositories. If it tries to send a query directly to the JDBC-driven virtual repository, we would be presented with an error.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"245\" height=\"87\" src=\"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/12.png\" alt=\"\" class=\"wp-image-244631\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">All SPARQL queries would have to use <a href=\"https:\/\/graphdb.ontotext.com\/documentation\/11.1\/sparql-federation.html\" target=\"_blank\" rel=\"noreferrer noopener\">federation<\/a> and be run on a standard GraphDB repository. Additionally, we can&#8217;t import ontologies into the virtual repository. Remember, it is <strong>virtual<\/strong><em>.<\/em> This means that data is remote and immutable.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Now that we have explained&nbsp; the reasons behind creating another repository, let&#8217;s go ahead and set it up. First, let&#8217;s pick up our CSV. If it is available as a source file, that&#8217;s great. Otherwise, we can <a href=\"https:\/\/docs.snowflake.com\/en\/user-guide\/snowsql-use#exporting-data\" target=\"_blank\" rel=\"noreferrer noopener\">pick it up from Snowflake using SnowSQL<\/a>. Once we have the file, start up Refine and configure it to work with GraphDB from the Setup menu.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"490\" src=\"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/13-1024x490.png\" alt=\"\" class=\"wp-image-244632\" srcset=\"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/13-1024x490.png 1024w, https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/13-980x469.png 980w, https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/13-480x230.png 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The next step is to import the file through the Projects menu. Just put in the CSV file and click next.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"234\" src=\"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/14-1024x234.png\" alt=\"\" class=\"wp-image-244633\" srcset=\"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/14-980x224.png 980w, https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/14-480x110.png 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">We would not need to perform any modifications on the raw CSV file. Let&#8217;s prepare an RDF mapping. Go to the RDF mapper dropdown on the top right. In this graphical mapper, you can drag and drop columns to create RDF from your tabular data. The mapper has a lot of neat features, including a powerful expression language, full operation history, and the capability to export the mapping and reuse it in an ETL pipeline. For more information, you can <a href=\"https:\/\/platform.ontotext.com\/ontorefine\/rdfizing.html\" target=\"_blank\" rel=\"noreferrer noopener\">check out our tutorials on the topic<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><br><\/p>\n\n\n\n<figure class=\"wp-block-premium-image premium-image  premium-image-61c7ade5dd4b\"><div class=\"premium-image-container\"><div class=\"premium-image-wrap premium-image-wrap-none \"><img decoding=\"async\" src=\"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/15-1024x474.png\" alt=\"\" class=\"pbg-image-244634 wp-image-244634\" width=\"1024\" height=\"474\" srcset=\"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/15-980x454.png 980w, https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/15-480x222.png 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw\" \/><\/div><\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Writing the mapping can get tedious when we have hundreds of columns, so it is good to know that you can also automate it with an LLM. The best approach in that case is to use the SPARQL Query editor. First, write a few mappings in the Visual RDF mapper. Switch over to the SPARQL Query Editor and use the Generate Query dropdown to generate a mapping with a service clause.<br><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"411\" src=\"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/16-1024x411.png\" alt=\"\" class=\"wp-image-244635\" srcset=\"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/16-980x393.png 980w, https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/16-480x193.png 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">This template, coupled with a sample of the source CSV would be enough for an LLM to write you a SPARQL-based mapping.<br><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"656\" height=\"874\" src=\"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/17.png\" alt=\"\" class=\"wp-image-244636\" srcset=\"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/17.png 656w, https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/17-480x640.png 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 656px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Once you have that, you should ask the LLM for a minimalist ontology as well.<br><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"467\" height=\"71\" src=\"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/18.png\" alt=\"\" class=\"wp-image-244637\" srcset=\"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/18.png 467w, https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/18-300x46.png 300w\" sizes=\"(max-width: 467px) 100vw, 467px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Once we have the mapping ready, we can copy it into GraphDB. We will create a standard repository, calling it stocks. Then, we will go to the SPARQL editor from the navigation menu on the left and paste the mapping. It contains a SPARQL CONSTRUCT. CONSTRUCT is used to display data in RDF format, not to write it to the repository. Let&#8217;s run the CONSTRUCT first, to make sure everything looks correct. Then, we will replace the CONSTRUCT keyword with INSERT and materialize the statements.<br><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"294\" src=\"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/19-1024x294.png\" alt=\"\" class=\"wp-image-244638\" srcset=\"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/19-980x282.png 980w, https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/19-480x138.png 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Remember the two ontologies we created? Now is the time to import them to the repository. Since the virtual repository is not a standard GraphDB repository and thus, can&#8217;t be used directly with MCP, we will put its ontology in the new stocks repository.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Let&#8217;s go to the import menu from the navigation bar, making sure we are on the stocks repository. Then, we can paste the two ontologies &#8211; likely in the TTL format &#8211; that the LLM provided us with as a text snippet. Remember to import them into two different named graphs. Any name would work, but having a reference to the Flake repository in the name of the ontology graph intended for it would be helpful to the LLM.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"164\" src=\"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/20-1024x164.png\" alt=\"\" class=\"wp-image-244639\" srcset=\"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/20-980x157.png 980w, https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/20-480x77.png 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Once all that is done, we are finally ready to see the MCP in action.<\/p>\n\n\n\n<h2 id='the-mcp-client'  id=\"boomdevs_6\" class=\"wp-block-heading\">The MCP client<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">For this tutorial, we evaluated two MCP clients &#8211; LM Studio and Claude. Unfortunately, LM studio is intended for local models. Unless you are running on really powerful hardware, any LLM model you can load into LM studio would not be great at writing SPARQL queries. SPARQL is relatively niche and needs a tailor-made model, or just a very big one. No tailor-made SPARQL-writing LLMs are available and most consumer hardware isn&#8217;t powerful enough to host a strong model, so we need a MCP client:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>That can connect to external models.<\/li>\n\n\n\n<li>And can be run locally.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Why do we care about running locally? Exposing GraphDB to the Internet so a remote MCP client can access it is unnecessary for the purposes of this tutorial and would pad out its length. Suffice it to say, it is as easy as running a GraphDB instance and a gateway service. The MCP server on the GraphDB side has no special configurations necessary. MCP is always-on and applies the security methods available in GraphDB.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Once we have Claude up and running, we will provide it with the MCP configuration. We can do this by modifying the claude_desktop_config.json.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"253\" src=\"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/21-1024x253.png\" alt=\"\" class=\"wp-image-244640\" srcset=\"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/21-1024x253.png 1024w, https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/21-980x242.png 980w, https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/21-480x119.png 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">This file is located under the Claude install directory. On Linux, this is&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><br><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">~\/Library\/Application\\ Support\/Claude<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">And under Windows, this is<br><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$env:AppData\\Claude\\<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">You may notice that we are using the node command with something called the mcphub-gateway. This is because the GraphDB MCP works with the HTTP\/SSE protocol, while Claude expects streaming STDIO. The lightweight <a href=\"http:\/\/github.com\/Ontotext-AD\/graphdb-mcp-gateway\" target=\"_blank\" rel=\"noreferrer noopener\">GraphDB MCP gateway<\/a> converts requests from one format to the other.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Once we have that configured, the Local MCP server would appear in Claude.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"973\" height=\"455\" src=\"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/22.png\" alt=\"\" class=\"wp-image-244641\" srcset=\"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/22.png 973w, https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/22-480x224.png 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 973px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">When Claude is set up and the MCP server is running, you can start a new chat. Remember to enable the MCP server connector from the configuration window for this specific chat.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"527\" height=\"384\" src=\"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/23.png\" alt=\"\" class=\"wp-image-244642\" srcset=\"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/23.png 527w, https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/23-480x350.png 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 527px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">With the MCP server accessible and configured to be used in Claude, you can start making queries.<br><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"888\" height=\"842\" src=\"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/24.png\" alt=\"\" class=\"wp-image-244643\" srcset=\"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/24.png 888w, https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/24-480x455.png 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 888px, 100vw\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"856\" height=\"630\" src=\"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/25.png\" alt=\"\" class=\"wp-image-244644\" srcset=\"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/25.png 856w, https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/25-480x353.png 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 856px, 100vw\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"840\" height=\"733\" src=\"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/26.png\" alt=\"\" class=\"wp-image-244645\" srcset=\"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/26.png 840w, https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/26-480x419.png 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 840px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">In case something goes wrong, the Claude logs are available in the Claude installation directory, under logs\/main.log and logs\/mcp.log.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Now that we have unlocked the full power of Retrieval-Augmented Generation (RAG), we can make queries for data available in Snowflake and GraphDB and also combine it with information from the Internet, such as company logos.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"900\" height=\"992\" src=\"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/27.png\" alt=\"\" class=\"wp-image-244646\" srcset=\"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/27.png 900w, https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/27-480x529.png 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 900px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Keep in mind that if you are using Claude&#8217;s free plan, you will soon hit the session limit.<br><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"822\" height=\"195\" src=\"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/28.png\" alt=\"\" class=\"wp-image-244647\" srcset=\"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/28.png 822w, https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/28-480x114.png 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 822px, 100vw\" \/><\/figure>\n\n\n\n<h2 id='wrapping-it-up'  id=\"boomdevs_7\" class=\"wp-block-heading\">Wrapping it up<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In this tutorial, we have seen how to connect to data in Snowflake with a virtual JDBC repository, how to materialize tabular data using Refine and how to expose this data in a unified view using the MCP Server.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">With that knowledge, what comes next is only up to you.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Get to know GraphDB better by downloading a local edition.<\/li>\n\n\n\n<li>Or, perhaps, try out our GraphDB Sandbox. It also has the MCP server enabled!<\/li>\n\n\n\n<li>Already on GraphDB and following along? Great! You can try adding the Snowflake MCP to your MCP client.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Have questions? Comments? We are always here to help. Reach out via email, phone, LinkedIn, X &#8211; if it is a graph of some description, we are on it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Want to try it for yourself?<\/strong><\/p>\n\n\n\n<div class=\"hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-193575182687\"\n  style=\"max-width:100%; max-height:100%; width:700px;height:266.515625px\" data-hubspot-wrapper-cta-id=\"193575182687\">\n  <a href=\"https:\/\/cta-service-cms2.hubspot.com\/web-interactives\/public\/v1\/track\/redirect?encryptedPayload=AVxigLI2Va9vRmKnJGBiz%2BY8TJTe4xeTC%2Bd9lgCZqmVrhgL%2BV6R9ib9P5jDlDFFmUIiR5gMZRq43S4DBCfO4obdN8mKEZUls7l0dQuGFHw%2Fa1detIduw2esvZQy6JsXbAa4%2FPnDwjxbSQUU7BuH4Wb9D6X3MsG5nTV1%2FSp1LaEsaIhWXUqMwrKo%3D&#038;webInteractiveContentId=193575182687&#038;portalId=5619976\" target=\"_blank\" rel=\"noopener\" crossorigin=\"anonymous\">\n    <img decoding=\"async\" alt=\"Start exploring Graphwise Sandbox!\" loading=\"lazy\" src=\"https:\/\/no-cache.hubspot.com\/cta\/default\/5619976\/interactive-193575182687.png\" style=\"height: 100%; width: 100%; object-fit: fill\"\n      onerror=\"this.style.display='none'\" \/>\n  <\/a>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><br><\/p>\n","protected":false},"excerpt":{"rendered":"Read about how to integrate JDBC-enabled relational data with your RDF graphs and how to query them both with natural language","protected":false},"author":10,"featured_media":244618,"template":"","meta":{"_acf_changed":false,"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":"","content-type":"","_EventAllDay":false,"_EventTimezone":"","_EventStartDate":"","_EventEndDate":"","_EventStartDateUTC":"","_EventEndDateUTC":"","_EventShowMap":false,"_EventShowMapLink":false,"_EventURL":"","_EventCost":"","_EventCostDescription":"","_EventCurrencySymbol":"","_EventCurrencyCode":"","_EventCurrencyPosition":"","_EventDateTimeSeparator":"","_EventTimeRangeSeparator":"","_EventOrganizerID":[],"_EventVenueID":[],"_OrganizerEmail":"","_OrganizerPhone":"","_OrganizerWebsite":"","_VenueAddress":"","_VenueCity":"","_VenueCountry":"","_VenueProvince":"","_VenueState":"","_VenueZip":"","_VenuePhone":"","_VenueURL":"","_VenueStateProvince":"","_VenueLat":"","_VenueLng":"","_VenueShowMap":false,"_VenueShowMapLink":false},"categories":[152,23,21,45],"tags":[],"persona":[406],"resource-category":[17],"blog-category":[],"ppma_author":[344],"class_list":["post-249378","blog-post","type-blog-post","status-publish","has-post-thumbnail","hentry","category-ai-in-action","category-graph-database","category-graph-rag","category-semantic-layer","persona-kevin","resource-category-blog-post"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.3 (Yoast SEO v27.8) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Querying Diverse Datasets with MCP<\/title>\n<meta name=\"description\" content=\"Learn how to integrate JDBC-enabled relational data with your RDF graphs and how to query them both with natural language\" \/>\n<meta name=\"robots\" content=\"noindex, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Querying Diverse Datasets with MCP\" \/>\n<meta property=\"og:description\" content=\"Learn how to integrate JDBC-enabled relational data with your RDF graphs and how to query them both with natural language\" \/>\n<meta property=\"og:url\" content=\"https:\/\/gws-sso-test.graphwise.ai\/de\/blog\/querying-diverse-datasets-with-mcp\/\" \/>\n<meta property=\"og:site_name\" content=\"Graphwise\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-10T03:34:18+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/AI-in-action-featured-image.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2000\" \/>\n\t<meta property=\"og:image:height\" content=\"1000\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data1\" content=\"17\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/gws-sso-test.graphwise.ai\\\/de\\\/blog\\\/querying-diverse-datasets-with-mcp\\\/\",\"url\":\"https:\\\/\\\/gws-sso-test.graphwise.ai\\\/de\\\/blog\\\/querying-diverse-datasets-with-mcp\\\/\",\"name\":\"Querying Diverse Datasets with MCP\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/gws-sso-test.graphwise.ai\\\/de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/gws-sso-test.graphwise.ai\\\/de\\\/blog\\\/querying-diverse-datasets-with-mcp\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/gws-sso-test.graphwise.ai\\\/de\\\/blog\\\/querying-diverse-datasets-with-mcp\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/gws-sso-test.graphwise.ai\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/AI-in-action-featured-image.png\",\"datePublished\":\"2026-05-14T08:00:58+00:00\",\"dateModified\":\"2026-07-10T03:34:18+00:00\",\"description\":\"Learn how to integrate JDBC-enabled relational data with your RDF graphs and how to query them both with natural language\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/gws-sso-test.graphwise.ai\\\/de\\\/blog\\\/querying-diverse-datasets-with-mcp\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/gws-sso-test.graphwise.ai\\\/de\\\/blog\\\/querying-diverse-datasets-with-mcp\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/gws-sso-test.graphwise.ai\\\/de\\\/blog\\\/querying-diverse-datasets-with-mcp\\\/#primaryimage\",\"url\":\"https:\\\/\\\/gws-sso-test.graphwise.ai\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/AI-in-action-featured-image.png\",\"contentUrl\":\"https:\\\/\\\/gws-sso-test.graphwise.ai\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/AI-in-action-featured-image.png\",\"width\":2000,\"height\":1000},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/gws-sso-test.graphwise.ai\\\/de\\\/blog\\\/querying-diverse-datasets-with-mcp\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/gws-sso-test.graphwise.ai\\\/de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blog Posts\",\"item\":\"https:\\\/\\\/gws-sso-test.graphwise.ai\\\/de\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Querying Diverse Datasets with MCP\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/gws-sso-test.graphwise.ai\\\/de\\\/#website\",\"url\":\"https:\\\/\\\/gws-sso-test.graphwise.ai\\\/de\\\/\",\"name\":\"Graphwise\",\"description\":\"AI THRIVES ON WHOLE DATA\",\"publisher\":{\"@id\":\"https:\\\/\\\/gws-sso-test.graphwise.ai\\\/de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/gws-sso-test.graphwise.ai\\\/de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/gws-sso-test.graphwise.ai\\\/de\\\/#organization\",\"name\":\"Graphwise\",\"url\":\"https:\\\/\\\/gws-sso-test.graphwise.ai\\\/de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/gws-sso-test.graphwise.ai\\\/de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/gws-sso-test.graphwise.ai\\\/wp-content\\\/uploads\\\/2024\\\/10\\\/graphwise-logo-horizontal-slogan.svg\",\"contentUrl\":\"https:\\\/\\\/gws-sso-test.graphwise.ai\\\/wp-content\\\/uploads\\\/2024\\\/10\\\/graphwise-logo-horizontal-slogan.svg\",\"width\":\"1024\",\"height\":\"1024\",\"caption\":\"Graphwise\"},\"image\":{\"@id\":\"https:\\\/\\\/gws-sso-test.graphwise.ai\\\/de\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/company\\\/graphwise\\\/\"],\"description\":\"Graphwise enables organizations to unlock ROI for enterprise AI by delivering the most comprehensive and trusted industry solution in the field of knowledge graphs and semantic AI technologies. As enterprises pour millions into AI investment, Graphwise delivers the critical knowledge graph infrastructure to ensure enterprises are ready to realize the technology\u2019s full potential, is trusted, and can be implemented at scale. Graphwise, which is the result of the merger between tech visionaries Ontotext and Semantic Web Company, has over 200 employees worldwide, with offices located across North America, Europe and APAC.\",\"numberOfEmployees\":{\"@type\":\"QuantitativeValue\",\"minValue\":\"201\",\"maxValue\":\"500\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Querying Diverse Datasets with MCP","description":"Learn how to integrate JDBC-enabled relational data with your RDF graphs and how to query them both with natural language","robots":{"index":"noindex","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"de_DE","og_type":"article","og_title":"Querying Diverse Datasets with MCP","og_description":"Learn how to integrate JDBC-enabled relational data with your RDF graphs and how to query them both with natural language","og_url":"https:\/\/gws-sso-test.graphwise.ai\/de\/blog\/querying-diverse-datasets-with-mcp\/","og_site_name":"Graphwise","article_modified_time":"2026-07-10T03:34:18+00:00","og_image":[{"width":2000,"height":1000,"url":"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/AI-in-action-featured-image.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_misc":{"Gesch\u00e4tzte Lesezeit":"17\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/gws-sso-test.graphwise.ai\/de\/blog\/querying-diverse-datasets-with-mcp\/","url":"https:\/\/gws-sso-test.graphwise.ai\/de\/blog\/querying-diverse-datasets-with-mcp\/","name":"Querying Diverse Datasets with MCP","isPartOf":{"@id":"https:\/\/gws-sso-test.graphwise.ai\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/gws-sso-test.graphwise.ai\/de\/blog\/querying-diverse-datasets-with-mcp\/#primaryimage"},"image":{"@id":"https:\/\/gws-sso-test.graphwise.ai\/de\/blog\/querying-diverse-datasets-with-mcp\/#primaryimage"},"thumbnailUrl":"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/AI-in-action-featured-image.png","datePublished":"2026-05-14T08:00:58+00:00","dateModified":"2026-07-10T03:34:18+00:00","description":"Learn how to integrate JDBC-enabled relational data with your RDF graphs and how to query them both with natural language","breadcrumb":{"@id":"https:\/\/gws-sso-test.graphwise.ai\/de\/blog\/querying-diverse-datasets-with-mcp\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/gws-sso-test.graphwise.ai\/de\/blog\/querying-diverse-datasets-with-mcp\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/gws-sso-test.graphwise.ai\/de\/blog\/querying-diverse-datasets-with-mcp\/#primaryimage","url":"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/AI-in-action-featured-image.png","contentUrl":"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/AI-in-action-featured-image.png","width":2000,"height":1000},{"@type":"BreadcrumbList","@id":"https:\/\/gws-sso-test.graphwise.ai\/de\/blog\/querying-diverse-datasets-with-mcp\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/gws-sso-test.graphwise.ai\/de\/"},{"@type":"ListItem","position":2,"name":"Blog Posts","item":"https:\/\/gws-sso-test.graphwise.ai\/de\/blog\/"},{"@type":"ListItem","position":3,"name":"Querying Diverse Datasets with MCP"}]},{"@type":"WebSite","@id":"https:\/\/gws-sso-test.graphwise.ai\/de\/#website","url":"https:\/\/gws-sso-test.graphwise.ai\/de\/","name":"Graphwise","description":"AI THRIVES ON WHOLE DATA","publisher":{"@id":"https:\/\/gws-sso-test.graphwise.ai\/de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/gws-sso-test.graphwise.ai\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/gws-sso-test.graphwise.ai\/de\/#organization","name":"Graphwise","url":"https:\/\/gws-sso-test.graphwise.ai\/de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/gws-sso-test.graphwise.ai\/de\/#\/schema\/logo\/image\/","url":"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2024\/10\/graphwise-logo-horizontal-slogan.svg","contentUrl":"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2024\/10\/graphwise-logo-horizontal-slogan.svg","width":"1024","height":"1024","caption":"Graphwise"},"image":{"@id":"https:\/\/gws-sso-test.graphwise.ai\/de\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.linkedin.com\/company\/graphwise\/"],"description":"Graphwise enables organizations to unlock ROI for enterprise AI by delivering the most comprehensive and trusted industry solution in the field of knowledge graphs and semantic AI technologies. As enterprises pour millions into AI investment, Graphwise delivers the critical knowledge graph infrastructure to ensure enterprises are ready to realize the technology\u2019s full potential, is trusted, and can be implemented at scale. Graphwise, which is the result of the merger between tech visionaries Ontotext and Semantic Web Company, has over 200 employees worldwide, with offices located across North America, Europe and APAC.","numberOfEmployees":{"@type":"QuantitativeValue","minValue":"201","maxValue":"500"}}]}},"pbg_featured_image_src":{"full":["https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/AI-in-action-featured-image.png",2000,1000,false],"thumbnail":["https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/AI-in-action-featured-image-150x150.png",150,150,true],"medium":["https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/AI-in-action-featured-image-300x150.png",300,150,true],"medium_large":["https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/AI-in-action-featured-image-768x384.png",768,384,true],"large":["https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/AI-in-action-featured-image-1024x512.png",1024,512,true],"1536x1536":["https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/AI-in-action-featured-image-1536x768.png",1536,768,true],"2048x2048":["https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/AI-in-action-featured-image.png",2000,1000,false],"et-pb-post-main-image":["https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/AI-in-action-featured-image-400x250.png",400,250,true],"et-pb-post-main-image-fullwidth":["https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/AI-in-action-featured-image-1080x675.png",1080,675,true],"et-pb-portfolio-image":["https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/AI-in-action-featured-image-400x284.png",400,284,true],"et-pb-portfolio-module-image":["https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/AI-in-action-featured-image-510x382.png",510,382,true],"et-pb-portfolio-image-single":["https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/AI-in-action-featured-image-1080x540.png",1080,540,true],"et-pb-gallery-module-image-portrait":["https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/AI-in-action-featured-image-400x516.png",400,516,true],"et-pb-post-main-image-fullwidth-large":["https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/AI-in-action-featured-image.png",2000,1000,false],"et-pb-image--responsive--desktop":["https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/AI-in-action-featured-image-1280x640.png",1280,640,true],"et-pb-image--responsive--tablet":["https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/AI-in-action-featured-image-980x490.png",980,490,true],"et-pb-image--responsive--phone":["https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/AI-in-action-featured-image-480x240.png",480,240,true],"crp_thumbnail":["https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/01\/AI-in-action-featured-image.png",150,75,false]},"pbg_author_info":{"display_name":"Gergana Petkova","author_link":"https:\/\/gws-sso-test.graphwise.ai\/de\/author\/petkovag\/","author_img":"<img alt='Radostin Nanov' src='https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2025\/11\/Radostin-Nanov-GW.jpg' srcset='https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2025\/11\/Radostin-Nanov-GW.jpg 2x' class='avatar avatar-128 photo avatar-default' height='128' width='128' decoding='async'\/>"},"pbg_comment_info":" No Comments","pbg_excerpt":"Read about how to integrate JDBC-enabled relational data with your RDF graphs and how to query them both with natural language","_links":{"self":[{"href":"https:\/\/gws-sso-test.graphwise.ai\/de\/wp-json\/wp\/v2\/blog-post\/249378","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gws-sso-test.graphwise.ai\/de\/wp-json\/wp\/v2\/blog-post"}],"about":[{"href":"https:\/\/gws-sso-test.graphwise.ai\/de\/wp-json\/wp\/v2\/types\/blog-post"}],"author":[{"embeddable":true,"href":"https:\/\/gws-sso-test.graphwise.ai\/de\/wp-json\/wp\/v2\/users\/10"}],"version-history":[{"count":16,"href":"https:\/\/gws-sso-test.graphwise.ai\/de\/wp-json\/wp\/v2\/blog-post\/249378\/revisions"}],"predecessor-version":[{"id":250313,"href":"https:\/\/gws-sso-test.graphwise.ai\/de\/wp-json\/wp\/v2\/blog-post\/249378\/revisions\/250313"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/gws-sso-test.graphwise.ai\/de\/wp-json\/wp\/v2\/media\/244618"}],"wp:attachment":[{"href":"https:\/\/gws-sso-test.graphwise.ai\/de\/wp-json\/wp\/v2\/media?parent=249378"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gws-sso-test.graphwise.ai\/de\/wp-json\/wp\/v2\/categories?post=249378"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gws-sso-test.graphwise.ai\/de\/wp-json\/wp\/v2\/tags?post=249378"},{"taxonomy":"persona","embeddable":true,"href":"https:\/\/gws-sso-test.graphwise.ai\/de\/wp-json\/wp\/v2\/persona?post=249378"},{"taxonomy":"resource-category","embeddable":true,"href":"https:\/\/gws-sso-test.graphwise.ai\/de\/wp-json\/wp\/v2\/resource-category?post=249378"},{"taxonomy":"blog-category","embeddable":true,"href":"https:\/\/gws-sso-test.graphwise.ai\/de\/wp-json\/wp\/v2\/blog-category?post=249378"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/gws-sso-test.graphwise.ai\/de\/wp-json\/wp\/v2\/ppma_author?post=249378"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}