Details

    • Type: Sub-task
    • Status: Done
    • Priority: Highest
    • Resolution: Done
    • Affects Version/s: BLAZEGRAPH_RELEASE_1_5_1
    • Fix Version/s: BLAZEGRAPH_2_1_0
    • Component/s: Query Plan Generator
    • Labels:
      None

      Description

      SPARQL* is not being parsed in the SPARQL UPDATE QUADS_DATA blocks.

        Issue Links

          Activity

          Hide
          beebs Brad Bebee added a comment -

          mikepersonick Can you confirm that this looks good from your side?

          Show
          beebs Brad Bebee added a comment - mikepersonick Can you confirm that this looks good from your side?
          Hide
          Olaf Hartig Olaf Hartig added a comment -

          Regarding the question of whether this approach looks good to me, I must admit that I am not really familiar with this part of the Blazegraph code base. Hence, I cannot really provide an informed assessment here.

          Show
          Olaf Hartig Olaf Hartig added a comment - Regarding the question of whether this approach looks good to me, I must admit that I am not really familiar with this part of the Blazegraph code base. Hence, I cannot really provide an informed assessment here.
          Hide
          bryanthompson bryanthompson added a comment -

          Looks good overall. Please make the changes below.

          • Enable and then fix TestReificationDoneRightParser.test_update_insert_data_RDR() and add a test for DELETE DATA using SPARQL* as well.
          • Add tests of the parser for nested SPARQL* constructions for INSERT DATA / DELETE DATA.
          Show
          bryanthompson bryanthompson added a comment - Looks good overall. Please make the changes below. Enable and then fix TestReificationDoneRightParser.test_update_insert_data_RDR() and add a test for DELETE DATA using SPARQL* as well. Add tests of the parser for nested SPARQL* constructions for INSERT DATA / DELETE DATA.
          Hide
          bryanthompson bryanthompson added a comment -

          The core functionality was implemented in PR https://github.com/SYSTAP/bigdata/pull/220. This is clean in CI. It can be merged into a *2.1* branch, but not into master since we are past the code freeze.

          I am re-opening the ticket since there were two comments on the PR that were not yet addressed:

          • Enable and then fix TestReificationDoneRightParser.test_update_insert_data_RDR() and add a test for DELETE DATA using SPARQL* as well.
          • Add tests of the parser for nested SPARQL* constructions for INSERT DATA / DELETE DATA.

          mikepersonick
          bradbebee
          michaelschmidt

          I have changed this ticket to 2.1.

          Show
          bryanthompson bryanthompson added a comment - The core functionality was implemented in PR https://github.com/SYSTAP/bigdata/pull/220 . This is clean in CI. It can be merged into a * 2.1 * branch, but not into master since we are past the code freeze. I am re-opening the ticket since there were two comments on the PR that were not yet addressed: Enable and then fix TestReificationDoneRightParser.test_update_insert_data_RDR() and add a test for DELETE DATA using SPARQL* as well. Add tests of the parser for nested SPARQL* constructions for INSERT DATA / DELETE DATA. mikepersonick bradbebee michaelschmidt I have changed this ticket to 2.1.
          Hide
          igorkim igorkim added a comment -

          It seems, that support for INSERT/DELETE blocks was also broken while moving to openrdf 2.7.x. SPARQL grammar does not support SPARQL* in INSERT/DELETE update queries. Also, it will require more than SPARQL grammar change to support these features.

          queryString
          prefix x: <http://example.com>
          INSERT

          { x:testSubj x:testPred "TestValue" . <<x:testSubj x:testPred "TestValue">> x:infoSource x:Source1 . }

          WHERE {}

          Is parsed as:
          parseTree
          UpdateSequence
          UpdateContainer
          PrefixDecl (prefix=x)
          IRI (http://example.com)
          Modify
          InsertClause
          TriplesSameSubject
          IRI (http://example.comtestSubj)
          PropertyList
          IRI (http://example.comtestPred)
          ObjectList
          RDFLiteral
          String (TestValue)
          TriplesSameSubject
          TRefPattern
          IRI (http://example.comtestSubj)
          IRI (http://example.comtestPred)
          RDFLiteral
          String (TestValue)
          PropertyList
          IRI (http://example.cominfoSource)
          ObjectList
          IRI (http://example.comSource1)
          GraphPatternGroup
          originalAST DeleteInsert
          INSERT

          QUADS

          { StatementPatternNode(ConstantNode(TermId(0U)[http://example.comtestSubj]), ConstantNode(TermId(0U)[http://example.comtestPred]), ConstantNode(TermId(0L)[TestValue])) [scope=DEFAULT_CONTEXTS] StatementPatternNode(ConstantNode(TermId(0U)[http://example.comtestSubj]), ConstantNode(TermId(0U)[http://example.comtestPred]), ConstantNode(TermId(0L)[TestValue])) [sid=VarNode(-sid-1)] [scope=DEFAULT_CONTEXTS] StatementPatternNode(VarNode(-sid-1), ConstantNode(TermId(0U)[http://example.cominfoSource]), ConstantNode(TermId(0U)[http://example.comSource1])) [scope=DEFAULT_CONTEXTS] }

          WHERE
          JoinGroupNode {
          }

          But after execution of this query, only one statement is created in the store:
          #1 <http://example.comtestSubj, http://example.comtestPred, "TestValue"> : Explicit (TermId(2U),TermId(1U),TermId(3L),null)

          Show
          igorkim igorkim added a comment - It seems, that support for INSERT/DELETE blocks was also broken while moving to openrdf 2.7.x. SPARQL grammar does not support SPARQL* in INSERT/DELETE update queries. Also, it will require more than SPARQL grammar change to support these features. queryString prefix x: < http://example.com > INSERT { x:testSubj x:testPred "TestValue" . <<x:testSubj x:testPred "TestValue">> x:infoSource x:Source1 . } WHERE {} Is parsed as: parseTree UpdateSequence UpdateContainer PrefixDecl (prefix=x) IRI ( http://example.com ) Modify InsertClause TriplesSameSubject IRI ( http://example.comtestSubj ) PropertyList IRI ( http://example.comtestPred ) ObjectList RDFLiteral String (TestValue) TriplesSameSubject TRefPattern IRI ( http://example.comtestSubj ) IRI ( http://example.comtestPred ) RDFLiteral String (TestValue) PropertyList IRI ( http://example.cominfoSource ) ObjectList IRI ( http://example.comSource1 ) GraphPatternGroup originalAST DeleteInsert INSERT QUADS { StatementPatternNode(ConstantNode(TermId(0U)[http://example.comtestSubj]), ConstantNode(TermId(0U)[http://example.comtestPred]), ConstantNode(TermId(0L)[TestValue])) [scope=DEFAULT_CONTEXTS] StatementPatternNode(ConstantNode(TermId(0U)[http://example.comtestSubj]), ConstantNode(TermId(0U)[http://example.comtestPred]), ConstantNode(TermId(0L)[TestValue])) [sid=VarNode(-sid-1)] [scope=DEFAULT_CONTEXTS] StatementPatternNode(VarNode(-sid-1), ConstantNode(TermId(0U)[http://example.cominfoSource]), ConstantNode(TermId(0U)[http://example.comSource1])) [scope=DEFAULT_CONTEXTS] } WHERE JoinGroupNode { } But after execution of this query, only one statement is created in the store: #1 < http://example.comtestSubj , http://example.comtestPred , "TestValue"> : Explicit (TermId(2U),TermId(1U),TermId(3L),null)

            People

            • Assignee:
              igorkim igorkim
              Reporter:
              bryanthompson bryanthompson
            • Votes:
              0 Vote for this issue
              Watchers:
              7 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: