Skip to Main Content

DevOps, CI/CD and Automation

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Is it possible to impose required constraint at value level?

Rajneesh S-OracleFeb 24 2020 — edited Feb 25 2020

Hello All,

Is it possible to impose required constraint at value level?

for example in below xml, I wnt to make sure value for alias1, coli1 and operator is always populated in condition element within where element.

functionalView name="CLAIMS_FV"  description="Learning Purpose">

  <columns>

    <column name="CLAI.CODE"   columnAlias="CODE"  description="The code of the claim" />

    <column name="CLLI.CODE"   columnAlias="LINE_CODE"  description="The code of the claim line" />

    <column name="PROC.CODE"   columnAlias="PROC_CODE"  description="The code of the claim line procedure" />

  </columns>

  <fromviews>

    <fromview name="CLAIMS_V" alias="CLAI" />

    <fromview name="LINES_V" alias="CLLI" />

    <fromview name="PROC_V" alias="PROC" />

    <fromview name="PROV_V" alias="PROV" />

    <fromview name="FORMS_V" alias="CLFO"/>

    <fromview name="FORMTYPES_V" alias="CFTY"/>

  </fromviews>

  <joins>

    <join  alias1="CLLI" col1="CLAI_ID" condition="="  alias2="CLAI" col2="ID"/>

    <join  alias1="CLFO" col1="ID" condition="="  alias2="CFTY" col2="CLFO_ID"/>

    <join  alias1="CFTY" col1="ID" condition="="  alias2="PROC" col2="CFTY_ID"/>

    <leftouterjoin  alias1="PROV" col1="ID" condition="="  alias2="CLAI" col2="PROVIDER_ID"/>

  </joins>

  <where>

    <condition alias1="CFTY" col1="CODE"  operator="="  string=""   number="" date= ""    />

  </where>

</functionalView>

Below is respective XSD for reference:

<?xml version="1.0" encoding="UTF-8"?>

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:element name="functionalView" >

    <xs:complexType>

      <xs:sequence>

        <xs:element name="columns">

          <xs:complexType>

            <xs:sequence>

              <xs:element name="column" maxOccurs="unbounded" minOccurs="1">

                <xs:complexType>

                  <xs:simpleContent>

                    <xs:extension base="xs:string">

                      <xs:attribute type="xs:string" name="name" use="required"/>

                      <xs:attribute type="xs:string" name="columnAlias" use="required"/>

                      <xs:attribute type="xs:string" name="description" use="required"/>

                    </xs:extension>

                  </xs:simpleContent>

                </xs:complexType>

              </xs:element>

            </xs:sequence>

          </xs:complexType>

        </xs:element>

        <xs:element name="fromviews" maxOccurs="1" minOccurs="1">

          <xs:complexType>

            <xs:sequence>

              <xs:element name="fromview" maxOccurs="unbounded" minOccurs="2">

                <xs:complexType>

                  <xs:simpleContent>

                    <xs:extension base="xs:string">

                      <xs:attribute type="xs:string" name="name" use="required"/>

                      <xs:attribute type="xs:string" name="alias" use="required"/>

                    </xs:extension>

                  </xs:simpleContent>

                </xs:complexType>

              </xs:element>

            </xs:sequence>

          </xs:complexType>

        </xs:element>

        <xs:element name="joins" maxOccurs="1" minOccurs="1">

          <xs:complexType>

            <xs:choice maxOccurs="unbounded" minOccurs="1">

              <xs:element name="join" maxOccurs="unbounded" minOccurs="0">

                <xs:complexType>

                  <xs:simpleContent>

                    <xs:extension base="xs:string">

                      <xs:attribute type="xs:string" name="alias1" use="required"/>

                      <xs:attribute type="xs:string" name="col1" use="required"/>

                      <xs:attribute type="xs:string" name="condition" use="required"/>

                      <xs:attribute type="xs:string" name="alias2" use="required"/>

                      <xs:attribute type="xs:string" name="col2" use="required"/>

                    </xs:extension>

                  </xs:simpleContent>

                </xs:complexType>

              </xs:element>

              <xs:element name="leftouterjoin" maxOccurs="unbounded" minOccurs="0">

                <xs:complexType>

                  <xs:simpleContent>

                    <xs:extension base="xs:string">

                      <xs:attribute type="xs:string" name="alias1" use="required"/>

                      <xs:attribute type="xs:string" name="col1" use="required"/>

                      <xs:attribute type="xs:string" name="condition" use="required"/>

                      <xs:attribute type="xs:string" name="alias2" use="required"/>

                      <xs:attribute type="xs:string" name="col2" use="required"/>

                    </xs:extension>

                  </xs:simpleContent>

                </xs:complexType>

              </xs:element>

            </xs:choice>

          </xs:complexType>

        </xs:element>

        <xs:element name="where" maxOccurs="1" minOccurs="0">

          <xs:complexType>

            <xs:sequence>

              <xs:element name="condition" maxOccurs="unbounded" minOccurs="1">

                <xs:complexType>

                  <xs:simpleContent>

                    <xs:extension base="xs:string">

                      <xs:attribute type="xs:string" name="alias1" use="required"/>

                      <xs:attribute type="xs:string" name="col1" use="required"/>

                      <xs:attribute type="xs:string" name="operator" use="required"/>

                      <xs:attribute type="xs:string" name="string" use="optional"/>

                      <xs:attribute type="xs:string" name="number" use="optional"/>

                      <xs:attribute type="xs:string" name="date" use="optional"/>

                    </xs:extension>

                  </xs:simpleContent>

                </xs:complexType>

              </xs:element>

            </xs:sequence>

          </xs:complexType>

        </xs:element>

      </xs:sequence>

      <xs:attribute type="xs:string" name="name"/>

      <xs:attribute type="xs:string" name="description"/>

    </xs:complexType>

  </xs:element>

</xs:schema>

Thanks,

Rajneesh

This post has been answered by odie_63 on Feb 25 2020
Jump to Answer

Comments

alwu-Oracle
What is your DB version and what version of Jena Adaptor are you using?

Thanks,

Zhe Wu
Ram Krishna
The oracle database is v11.1.0.7 and we are using the new Jena adaptor (rel 3) that we got from our metalink site.

ram
alwu-Oracle
Hi,

It seems that the new version of Jena Adaptor is doing the right job to convert the whole SPARQL into a single SEM_MATCH based query. Now the problem is that 11.1.0.7 database has this known server side bug (table function related) when the query is too big. You did not see this problem with Jena Adaptor v2 because ARQ breaks the query into many small pieces.

To fix this problem, there are a few choices:

1) upgrade to database 11.2, or
2) shorten your query, or
3) file a tar with Oracle support.

We are working on an optimization in Jena Adaptor to convert a SPARQL (with just a base BGP and a number of parallel OPTIONAL clauses) into a plain SQL. This may solve your problem even if you continue use 11.1.0.7.

Cheers,

Zhe Wu
Ram Krishna
Thanks Zhe- that is helpful. We will use one of the workarounds before we switch to 11.2.

ram
1 - 4

Post Details

Added on Feb 24 2020
8 comments
123 views