SEM_MATCH options




    In Oracle Spatial and Graph RDF Semantic Graph Developer's Guide (12c), documentation mentions a set of available options for SEM_MATCH function (1.6 Using the SEM_MATCH Table Function to Query Semantic Data).


    In chapter RDF Semantic Graph Support for Apache Jena, documentation says "Additional query options can be passed to a SEM_MATCH query including a line in the following form..." and shows a different set of options (some are in both chapters but most don't).


    I'm interested in using (at least testing) options like DOP=n, BEST_EFFORT_QUERY=t, TIMEOUT=n (all documented in Jena chapter). Are they supported directly in SEM_MATCH (we don't use Jena so far)? For example TIMEOUT=1 doesn't seem to work...

    How to check that the options were actually effective?

    Thank in advance


      • 1. Re: SEM_MATCH options

        Hi Fred,


        Jena Adapter query hints do not work with SEM_MATCH. Only the hints documented in Section 1.6 are supported for SEM_MATCH.


        Sorry about the confusion in the docs. Jena Adapter does effectively "push" those other hints to SEM_MATCH but the hints generated for SEM_MATCH use a different syntax than the Jena specification. The ones you specifically mention (DOP, BEST_EFFORT_QUERY, and TIMEOUT) do not have equivalent SEM_MATCH hints because these hints are used to control additional logic on the Jena Adapter side that influence SQL execution.


        You can influence DOP and ODS with a plain SQL hint in the SQL that contains SEM_MATCH. For example:


        SELECT /*+ parallel(8) dynamic_sampling(6) */ x

        FROM TABLE(SEM_MATCH(...));


        BEST_EFFORT_QUERY and TIMEOUT are not available, but there are a variety of ways to kill a long running query (e.g., with Ctrl-C or from Enterprise Manager).


        Hope that helps,


        1 位用户发现它有用
        • 2. Re: SEM_MATCH options

          Thank you for these details Matt.


          In Jena, BEST_EFFORT_QUERY=t, when used with the TIMEOUT=n option, is said to return all matches found in n seconds for the SPARQL query. It is not clear for me how to achieve the same behavior with a SEM_MATCH executed via oracle.jdbc.driver.OracleDriver (returning all matches already found and not only killing the query).


          Any idea?