<?xml version="1.0" encoding="utf-8"?>

<!-- EngineVersion = Java version -->
<ApiConfig Name="Neo4j"
           Slug="neo4j-connector"
           Type="JDBC"
           Category="no-sql"
           Id="2b8c5f9a-7d3e-4b1c-9a0f-8e7d6c5b4a32"
           Version="2"
           EngineVersion="17"
           Desc="Query Neo4j graphs with SQL or Cypher from Power BI, SQL Server Linked Server via ZappySys Data Gateway, Crystal Reports, SSRS, Azure Data Factory, and other ODBC tools -- almost no coding required."
           Logo="https://cdn.zappysys.com/api/Images/logos/neo4j-connector.png"
           HelpLink="https://community.zappysys.com/search?q=neo4j">

    <VersionHistory>
      <Change Ver="2" Date="2026-09-15" Type="Modified">Auth Notes (numbered steps), documented params, Maven DriverDownloadLinks, extra SQL examples for ODBC apps.</Change>
      <Change Ver="1" Date="2025-05-23" Type="New">Initial version.</Change>
    </VersionHistory>
    <Template>
        <Param Name="DriverDownloadPageLink"
               Value="https://neo4j.com/docs/jdbc-manual/current/" />
        <Param Name="MvnRepositoryDriverDownloadLink"
               Value="https://mvnrepository.com/artifact/org.neo4j/neo4j-jdbc-full-bundle" />
        <Param Name="DriverDownloadLinks"
               Hidden="True"
               Value="neo4j-jdbc-full-bundle-6.3.1.jar=https://repo1.maven.org/maven2/org/neo4j/neo4j-jdbc-full-bundle/6.3.1/neo4j-jdbc-full-bundle-6.3.1.jar" />
    </Template>
    <Auths>
        <Auth Name="NonSslSql"
              Label="Non-SSL Connection (SQL queries)"
              ConnStr="jdbc:neo4j://[$HostName$]:[$Port$]?enableSQLTranslation=true"
              HelpLink="https://neo4j.com/docs/jdbc-manual/current/configuration/">
            <Params>
                <Param Name="DriverClass" Label="Driver class" Required="False" Value="org.neo4j.jdbc.Neo4jDriver" Desc="Optional. Leave blank to auto-detect from the JAR unless SPI is ambiguous (e.g. org.neo4j.jdbc.Neo4jDriver)." HelpLink="https://neo4j.com/docs/jdbc-manual/current/configuration/" />
                <Param Name="DriverFilePaths" Editor="FileOpen" Label="JDBC driver file(s)" Required="True" Value="{DownloadFolder}\neo4j-jdbc-full-bundle-6.3.1.jar" Desc="Filled by the wizard after download. Separate multiple JARs with a semicolon (e.g. C:\ZappySys\Jdbc\MyConnector\driver.jar)." HelpLink="https://neo4j.com/docs/jdbc-manual/current/configuration/" />
                <Param Name="HostName" Label="Host" Required="True" Value="MyHostName" Desc="JDBC host name or IP (e.g. MyHostName)." HelpLink="https://neo4j.com/docs/jdbc-manual/current/configuration/" />
                <Param Name="Port" Label="TCP port" Required="True" Value="7687" Desc="JDBC port (e.g. 7687)." HelpLink="https://neo4j.com/docs/jdbc-manual/current/configuration/" />
                <Param Name="UserName" Label="User name" Required="False" Desc="Neo4j user. Aura and most servers use neo4j unless you created another user." HelpLink="https://neo4j.com/docs/jdbc-manual/current/configuration/" />
                <Param Name="Password" Label="Password" Required="False" Secret="True" Desc="Database password. Leave empty if none." HelpLink="https://neo4j.com/docs/jdbc-manual/current/configuration/" />
            </Params>
            <Notes>
                <![CDATA[<p>Neo4j JDBC (full bundle) from Power BI, SQL Server Linked Server via ZappySys Data Gateway, Crystal Reports, SSRS, Azure Data Factory, and other ODBC tools.</p>
<ol>
<li>This Auth sets <code>enableSQLTranslation=true</code> so you can run SQL such as <code>SELECT * FROM Movie</code> from Power BI.</li><li>Create a database user in Neo4j Desktop, Aura console, or <code>CREATE USER</code>. Paste user and password.</li><li>After Finish, replace the host (e.g. MyHostName) on the DSN Main UI. Aura always uses TLS (<code>neo4j+s</code>).</li><li>Do not use a personal employee login for unattended Linked Server or Power BI refresh.</li>
<li>Finish the wizard. Then click <strong>Test Connection</strong> on the DSN Main UI (the wizard does not run Test Connection).</li><li>Done. You can query from C#, Python, PowerShell, and ODBC apps.</li>
</ol>]]>
            </Notes>
        </Auth>
        <Auth Name="NonSslCypher"
              Label="Non-SSL Connection (Cypher queries)"
              ConnStr="jdbc:neo4j://[$HostName$]:[$Port$]"
              HelpLink="https://neo4j.com/docs/jdbc-manual/current/configuration/">
            <Params>
                <Param Name="DriverClass" Label="Driver class" Required="False" Value="org.neo4j.jdbc.Neo4jDriver" Desc="Optional. Leave blank to auto-detect from the JAR unless SPI is ambiguous (e.g. org.neo4j.jdbc.Neo4jDriver)." HelpLink="https://neo4j.com/docs/jdbc-manual/current/configuration/" />
                <Param Name="DriverFilePaths" Editor="FileOpen" Label="JDBC driver file(s)" Required="True" Value="{DownloadFolder}\neo4j-jdbc-full-bundle-6.3.1.jar" Desc="Filled by the wizard after download. Separate multiple JARs with a semicolon (e.g. C:\ZappySys\Jdbc\MyConnector\driver.jar)." HelpLink="https://neo4j.com/docs/jdbc-manual/current/configuration/" />
                <Param Name="HostName" Label="Host" Required="True" Value="MyHostName" Desc="JDBC host name or IP (e.g. MyHostName)." HelpLink="https://neo4j.com/docs/jdbc-manual/current/configuration/" />
                <Param Name="Port" Label="TCP port" Required="True" Value="7687" Desc="JDBC port (e.g. 7687)." HelpLink="https://neo4j.com/docs/jdbc-manual/current/configuration/" />
                <Param Name="UserName" Label="User name" Required="False" Desc="Neo4j user. Aura and most servers use neo4j unless you created another user." HelpLink="https://neo4j.com/docs/jdbc-manual/current/configuration/" />
                <Param Name="Password" Label="Password" Required="False" Secret="True" Desc="Database password. Leave empty if none." HelpLink="https://neo4j.com/docs/jdbc-manual/current/configuration/" />
            </Params>
            <Notes>
                <![CDATA[<p>Neo4j JDBC (full bundle) from Power BI, SQL Server Linked Server via ZappySys Data Gateway, Crystal Reports, SSRS, Azure Data Factory, and other ODBC tools.</p>
<ol>
<li>This Auth omits SQL translation. Use Cypher (<code>MATCH ... RETURN</code>) from the DSN query window.</li><li>Create a database user in Neo4j Desktop, Aura console, or <code>CREATE USER</code>. Paste user and password.</li><li>After Finish, replace the host (e.g. MyHostName) on the DSN Main UI. Aura always uses TLS (<code>neo4j+s</code>).</li><li>Do not use a personal employee login for unattended Linked Server or Power BI refresh.</li>
<li>Finish the wizard. Then click <strong>Test Connection</strong> on the DSN Main UI (the wizard does not run Test Connection).</li><li>Done. You can query from C#, Python, PowerShell, and ODBC apps.</li>
</ol>]]>
            </Notes>
        </Auth>
        <Auth Name="SslSql"
              Label="SSL Connection (SQL queries)"
              ConnStr="jdbc:neo4j+s://[$HostName$]:[$Port$]?enableSQLTranslation=true"
              HelpLink="https://neo4j.com/docs/jdbc-manual/current/configuration/">
            <Params>
                <Param Name="DriverClass" Label="Driver class" Required="False" Value="org.neo4j.jdbc.Neo4jDriver" Desc="Optional. Leave blank to auto-detect from the JAR unless SPI is ambiguous (e.g. org.neo4j.jdbc.Neo4jDriver)." HelpLink="https://neo4j.com/docs/jdbc-manual/current/configuration/" />
                <Param Name="DriverFilePaths" Editor="FileOpen" Label="JDBC driver file(s)" Required="True" Value="{DownloadFolder}\neo4j-jdbc-full-bundle-6.3.1.jar" Desc="Filled by the wizard after download. Separate multiple JARs with a semicolon (e.g. C:\ZappySys\Jdbc\MyConnector\driver.jar)." HelpLink="https://neo4j.com/docs/jdbc-manual/current/configuration/" />
                <Param Name="HostName" Label="Host" Required="True" Value="MyHostName" Desc="JDBC host name or IP (e.g. MyHostName)." HelpLink="https://neo4j.com/docs/jdbc-manual/current/configuration/" />
                <Param Name="Port" Label="TCP port" Required="True" Value="7687" Desc="JDBC port (e.g. 7687)." HelpLink="https://neo4j.com/docs/jdbc-manual/current/configuration/" />
                <Param Name="UserName" Label="User name" Required="False" Desc="Neo4j user. Aura and most servers use neo4j unless you created another user." HelpLink="https://neo4j.com/docs/jdbc-manual/current/configuration/" />
                <Param Name="Password" Label="Password" Required="False" Secret="True" Desc="Database password. Leave empty if none." HelpLink="https://neo4j.com/docs/jdbc-manual/current/configuration/" />
            </Params>
            <Notes>
                <![CDATA[<p>Neo4j JDBC (full bundle) from Power BI, SQL Server Linked Server via ZappySys Data Gateway, Crystal Reports, SSRS, Azure Data Factory, and other ODBC tools.</p>
<ol>
<li>This Auth sets <code>enableSQLTranslation=true</code> so you can run SQL such as <code>SELECT * FROM Movie</code> from Power BI.</li><li>Create a database user in Neo4j Desktop, Aura console, or <code>CREATE USER</code>. Paste user and password.</li><li>After Finish, replace the host (e.g. MyHostName) on the DSN Main UI. Aura always uses TLS (<code>neo4j+s</code>).</li><li>Do not use a personal employee login for unattended Linked Server or Power BI refresh.</li>
<li>Finish the wizard. Then click <strong>Test Connection</strong> on the DSN Main UI (the wizard does not run Test Connection).</li><li>Done. You can query from C#, Python, PowerShell, and ODBC apps.</li>
</ol>]]>
            </Notes>
        </Auth>
        <Auth Name="SslCypher"
              Label="SSL Connection (Cypher queries)"
              ConnStr="jdbc:neo4j+s://[$HostName$]:[$Port$]"
              HelpLink="https://neo4j.com/docs/jdbc-manual/current/configuration/">
            <Params>
                <Param Name="DriverClass" Label="Driver class" Required="False" Value="org.neo4j.jdbc.Neo4jDriver" Desc="Optional. Leave blank to auto-detect from the JAR unless SPI is ambiguous (e.g. org.neo4j.jdbc.Neo4jDriver)." HelpLink="https://neo4j.com/docs/jdbc-manual/current/configuration/" />
                <Param Name="DriverFilePaths" Editor="FileOpen" Label="JDBC driver file(s)" Required="True" Value="{DownloadFolder}\neo4j-jdbc-full-bundle-6.3.1.jar" Desc="Filled by the wizard after download. Separate multiple JARs with a semicolon (e.g. C:\ZappySys\Jdbc\MyConnector\driver.jar)." HelpLink="https://neo4j.com/docs/jdbc-manual/current/configuration/" />
                <Param Name="HostName" Label="Host" Required="True" Value="MyHostName" Desc="JDBC host name or IP (e.g. MyHostName)." HelpLink="https://neo4j.com/docs/jdbc-manual/current/configuration/" />
                <Param Name="Port" Label="TCP port" Required="True" Value="7687" Desc="JDBC port (e.g. 7687)." HelpLink="https://neo4j.com/docs/jdbc-manual/current/configuration/" />
                <Param Name="UserName" Label="User name" Required="False" Desc="Neo4j user. Aura and most servers use neo4j unless you created another user." HelpLink="https://neo4j.com/docs/jdbc-manual/current/configuration/" />
                <Param Name="Password" Label="Password" Required="False" Secret="True" Desc="Database password. Leave empty if none." HelpLink="https://neo4j.com/docs/jdbc-manual/current/configuration/" />
            </Params>
            <Notes>
                <![CDATA[<p>Neo4j JDBC (full bundle) from Power BI, SQL Server Linked Server via ZappySys Data Gateway, Crystal Reports, SSRS, Azure Data Factory, and other ODBC tools.</p>
<ol>
<li>This Auth omits SQL translation. Use Cypher (<code>MATCH ... RETURN</code>) from the DSN query window.</li><li>Create a database user in Neo4j Desktop, Aura console, or <code>CREATE USER</code>. Paste user and password.</li><li>After Finish, replace the host (e.g. MyHostName) on the DSN Main UI. Aura always uses TLS (<code>neo4j+s</code>).</li><li>Do not use a personal employee login for unattended Linked Server or Power BI refresh.</li>
<li>Finish the wizard. Then click <strong>Test Connection</strong> on the DSN Main UI (the wizard does not run Test Connection).</li><li>Done. You can query from C#, Python, PowerShell, and ODBC apps.</li>
</ol>]]>
            </Notes>
        </Auth>
        <Auth Name="AuraDB"
              Label="Neo4j AuraDB Connection (SQL queries)"
              ConnStr="jdbc:neo4j+s://[$HostName$]?enableSQLTranslation=true"
              HelpLink="https://neo4j.com/docs/aura/managing-instances/instance-details/">
            <Params>
                <Param Name="DriverClass" Label="Driver class" Required="False" Value="org.neo4j.jdbc.Neo4jDriver" Desc="Optional. Leave blank to auto-detect from the JAR unless SPI is ambiguous (e.g. org.neo4j.jdbc.Neo4jDriver)." HelpLink="https://neo4j.com/docs/jdbc-manual/current/configuration/" />
                <Param Name="DriverFilePaths" Editor="FileOpen" Label="JDBC driver file(s)" Required="True" Value="{DownloadFolder}\neo4j-jdbc-full-bundle-6.3.1.jar" Desc="Filled by the wizard after download. Separate multiple JARs with a semicolon (e.g. C:\ZappySys\Jdbc\MyConnector\driver.jar)." HelpLink="https://neo4j.com/docs/jdbc-manual/current/configuration/" />
                <Param Name="HostName" Label="Host" Required="True" Value="MyHostName" Desc="JDBC host name or IP (e.g. MyHostName)." HelpLink="https://neo4j.com/docs/jdbc-manual/current/configuration/" />
                <Param Name="UserName" Label="User name" Required="True" Desc="Aura user (often neo4j). Copy from the Aura console." HelpLink="https://neo4j.com/docs/jdbc-manual/current/configuration/" />
                <Param Name="Password" Label="Password" Required="True" Secret="True" Desc="Aura instance password from the console. Do not check it into XML or TFVC." HelpLink="https://neo4j.com/docs/jdbc-manual/current/configuration/" />
            </Params>
            <Notes>
                <![CDATA[<p>Neo4j JDBC (full bundle) from Power BI, SQL Server Linked Server via ZappySys Data Gateway, Crystal Reports, SSRS, Azure Data Factory, and other ODBC tools.</p>
<ol>
<li>Copy the Aura connection URI host (something like <code>1234abcd.databases.neo4j.io</code>). This Auth uses <code>neo4j+s</code> plus SQL translation.</li><li>Create a database user in Neo4j Desktop, Aura console, or <code>CREATE USER</code>. Paste user and password.</li><li>After Finish, replace the host (e.g. MyHostName) on the DSN Main UI. Aura always uses TLS (<code>neo4j+s</code>).</li><li>Do not use a personal employee login for unattended Linked Server or Power BI refresh.</li>
<li>Finish the wizard. Then click <strong>Test Connection</strong> on the DSN Main UI (the wizard does not run Test Connection).</li><li>Done. You can query from C#, Python, PowerShell, and ODBC apps.</li>
</ol>]]>
            </Notes>
        </Auth>
        <Auth Name="Aura"
              Label="Neo4j Aura Connection (Cypher queries)"
              ConnStr="jdbc:neo4j+s://[$HostName$]"
              HelpLink="https://neo4j.com/docs/aura/managing-instances/instance-details/">
            <Params>
                <Param Name="DriverClass" Label="Driver class" Required="False" Value="org.neo4j.jdbc.Neo4jDriver" Desc="Optional. Leave blank to auto-detect from the JAR unless SPI is ambiguous (e.g. org.neo4j.jdbc.Neo4jDriver)." HelpLink="https://neo4j.com/docs/jdbc-manual/current/configuration/" />
                <Param Name="DriverFilePaths" Editor="FileOpen" Label="JDBC driver file(s)" Required="True" Value="{DownloadFolder}\neo4j-jdbc-full-bundle-6.3.1.jar" Desc="Filled by the wizard after download. Separate multiple JARs with a semicolon (e.g. C:\ZappySys\Jdbc\MyConnector\driver.jar)." HelpLink="https://neo4j.com/docs/jdbc-manual/current/configuration/" />
                <Param Name="HostName" Label="Host" Required="True" Value="MyHostName" Desc="JDBC host name or IP (e.g. MyHostName)." HelpLink="https://neo4j.com/docs/jdbc-manual/current/configuration/" />
                <Param Name="UserName" Label="User name" Required="True" Desc="Aura user (often neo4j). Copy from the Aura console." HelpLink="https://neo4j.com/docs/jdbc-manual/current/configuration/" />
                <Param Name="Password" Label="Password" Required="True" Secret="True" Desc="Aura instance password from the console. Do not check it into XML or TFVC." HelpLink="https://neo4j.com/docs/jdbc-manual/current/configuration/" />
            </Params>
            <Notes>
                <![CDATA[<p>Neo4j JDBC (full bundle) from Power BI, SQL Server Linked Server via ZappySys Data Gateway, Crystal Reports, SSRS, Azure Data Factory, and other ODBC tools.</p>
<ol>
<li>Same Aura host as SQL Auth, but Cypher only (no SQL translation).</li><li>Create a database user in Neo4j Desktop, Aura console, or <code>CREATE USER</code>. Paste user and password.</li><li>After Finish, replace the host (e.g. MyHostName) on the DSN Main UI. Aura always uses TLS (<code>neo4j+s</code>).</li><li>Do not use a personal employee login for unattended Linked Server or Power BI refresh.</li>
<li>Finish the wizard. Then click <strong>Test Connection</strong> on the DSN Main UI (the wizard does not run Test Connection).</li><li>Done. You can query from C#, Python, PowerShell, and ODBC apps.</li>
</ol>]]>
            </Notes>
        </Auth>
    </Auths>

    <Examples>
        <Example Default="True" Group="ODBC" Slug="read-all-nodes-with-label-sql" Label="Read all nodes with a specific label (SQL query)">
            <Desc><![CDATA[<p>Gets all nodes labeled <code>Movie</code> using SQL translation. Use in Power BI when you want a table-shaped extract.</p>]]></Desc>
            <Code>
                <![CDATA[SELECT * FROM Movie]]>
            </Code>
        </Example>

        <Example Group="ODBC" Slug="read-all-nodes-with-label-cypher" Label="Read all nodes with a specific label (Cypher query)">
            <Desc><![CDATA[<p>Gets Movie nodes with Cypher. Use the Cypher Auth (no <code>enableSQLTranslation</code>).</p>]]></Desc>
            <Code>
                <![CDATA[MATCH (m:Movie)
RETURN
    m.title AS Movie,
    m.released AS ReleaseYear,
    m.tagline AS Tagline,
    m {.*} AS AllProperties]]>
            </Code>
        </Example>

        <Example Group="ODBC" Slug="read-nodes-and-relationships-sql" Label="Read nodes and their relationships (SQL query)">
            <Desc><![CDATA[<p>Joins Person, ACTED_IN, and Movie. Relationship columns use the <code>v$</code> prefix.</p>]]></Desc>
            <Code>
                <![CDATA[SELECT
    p.name AS Actor,
    m.title AS Movie,
    r.roles[0] as FirstRole,
    r.roles[1] as SecondRole,
    r.roles AS AllRoles,
    p.*,
    m.*
FROM Person p
JOIN Person_ACTED_IN_Movie r
	ON p."v$id" = r."v$person_id"
JOIN Movie m
	ON m."v$id" = r."v$movie_id"]]>
            </Code>
        </Example>

        <Example Group="ODBC" Slug="read-nodes-and-relationships-cypher" Label="Read nodes and their relationships (Cypher query)">
            <Desc><![CDATA[<p>Matches <code>(Person)-[ACTED_IN]->(Movie)</code> and returns actor, title, and roles.</p>]]></Desc>
            <Code>
                <![CDATA[MATCH (p:Person)-[r:ACTED_IN]->(m:Movie)
RETURN
    p.name AS Actor,
    m.title AS Movie,
    r.roles[0] AS FirstRole,
    r.roles[1] AS SecondRole,
    r.roles AS AllRoles,
    p {.*} AS ActorAllFields,
    m {.*} AS MovieAllFields]]>
            </Code>
        </Example>

        <Example Group="ODBC" Slug="list-labels" Label="List node labels">
            <Desc><![CDATA[<p>Lists graph labels. Use this in a Linked Server to confirm the catalog before building reports.</p>]]></Desc>
            <Code>
                <![CDATA[CALL db.labels()]]>
            </Code>
        </Example>

        <Example Group="ODBC" Slug="count-movies" Label="Count Movie nodes">
            <Desc><![CDATA[<p>Returns how many Movie nodes exist. Works with SQL translation Auth.</p>]]></Desc>
            <Code>
                <![CDATA[SELECT COUNT(*) AS movie_count FROM Movie]]>
            </Code>
        </Example>

        <Example Group="ODBC" Slug="filter-movies-sql" Label="Filter movies with WHERE">
            <Desc><![CDATA[<p>Returns movies released in or after 2000. SQL translation Auth.</p>]]></Desc>
            <Code>
                <![CDATA[SELECT * FROM Movie
WHERE released >= 2000]]>
            </Code>
        </Example>

        <Example Group="ODBC" Slug="limit-movies" Label="Limit movies">
            <Desc><![CDATA[<p>Returns the first 100 Movie rows. Useful for Excel preview.</p>]]></Desc>
            <Code>
                <![CDATA[SELECT * FROM Movie
LIMIT 100]]>
            </Code>
        </Example>
    </Examples>
</ApiConfig>
