Uploaded image for project: 'Apache Jena'
  1. Apache Jena
  2. JENA-1121

Performance regression in Jena 3.0.1 / Fuseki 2.3.1

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Critical
    • Resolution: Abandoned
    • Jena 3.0.1, Fuseki 2.3.1, Jena 3.1.0, Fuseki 2.4.0
    • None
    • Jena
    • Mac OS X 10.10.5, iMac, 3.4 GHz Intel Core i7, 32 GB RAM

    Description

      We seem to have encountered a severe performance regression in Jena 3.0.1 / Fuseki 2.3.1 as compared with Jena 3.0.0 / Fuseki 2.3.0. A number of our queries are running between 2 and 20 times slower. Here's one small example with configuration for Fuseki. With Fuseki 2.3.0, the query below takes about 200 milliseconds. With Fuseki 2.3.1, it takes 9 seconds. I've also tried it with the latest Fuseki snapshot (apache-jena-fuseki-2.4.0-20160117.183513-33.zip), and got the same result as with the 2.3.1 release.

      Here's the test data and configuration:

      https://www.dropbox.com/s/b9aepexij5e7noj/jena-performance-test.zip?dl=0

      Here's the query:

      prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
      prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
      prefix knora-base: <http://www.knora.org/ontology/knora-base#>
      
      SELECT DISTINCT
          ?resourceIri
          ?resourceLabel
          (SAMPLE(?anyMatch) AS ?match)
      
      WHERE {
          BIND(STR("de") AS ?preferredLanguage)
          BIND(STR("en") AS ?fallbackLanguage)
      
          ?s <http://jena.apache.org/text#query> 'Zeitglöcklein' .
      
          MINUS {
              ?s knora-base:isDeleted true .
          }
      
          OPTIONAL {
              ?s a ?valueObjectType .
              ?valueObjectType rdfs:subClassOf+ knora-base:Value .
              ?resIri ?resourceProperty ?s .
              ?s knora-base:valueHasString ?literal .
      
              OPTIONAL {
                  ?resourceProperty rdfs:label ?preferredLanguageResourcePropertyLabel .
                  FILTER (LANG(?preferredLanguageResourcePropertyLabel) = ?preferredLanguage) .
              }
      
              OPTIONAL {
                  ?resourceProperty rdfs:label ?fallbackLanguageResourcePropertyLabel .
                  FILTER (LANG(?fallbackLanguageResourcePropertyLabel) = ?fallbackLanguage) .
              }
      
              OPTIONAL {
                  ?resourceProperty rdfs:label ?anyLanguageResourcePropertyLabel .
              }
      
              BIND(COALESCE(str(?preferredLanguageResourcePropertyLabel), str(?fallbackLanguageResourcePropertyLabel), str(?anyLanguageResourcePropertyLabel)) AS ?propertyLabel)
      
              BIND(CONCAT(STR(?valueObjectType), "|", STR(?propertyLabel), "|", STR(?literal)) AS ?anyMatch)
      
              MINUS {
                  ?resIri knora-base:isDeleted true .
              }
          }
      
          BIND(COALESCE(?resIri, ?s) AS ?resourceIri)
      
          ?resourceIri a ?resourceClass .
          ?resourceClass rdfs:subClassOf+ knora-base:Resource .
          ?resourceIri rdfs:label ?resourceLabel .
      }
      
      GROUP BY
          ?resourceIri
          ?resourceLabel
      
      ORDER BY ?resourceIri
      

      Best regards,
      Benjamin Geer

      Attachments

        Activity

          People

            Unassigned Unassigned
            benjamingeer Benjamin Geer
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: