Отдельный счетчик строк SPARQL не возвращает правильный номер

У меня есть следующий запрос SPARQL. Обратите внимание на количество строк в предикате выбора и предложение group by в конце запроса.

Я хочу, чтобы запрос возвращал правильное количество строк в каждой записи, я заметил, что количество возвращаемых строк неверно, что означает, что если есть одна запись, я получаю 1 или иногда 2, и если есть более 2 записей, я по-прежнему получаю 2, в основном кажется, что он возвращает случайное значение.

Я знаю, что это из-за какой-то проблемы с моим запросом, может кто-нибудь, пожалуйста, дайте мне знать, что я могу делать неправильно? Я использую Апач Джена.

PREFIX  rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX  pf:   <http://jena.hpl.hp.com/ARQ/property#>
PREFIX  d:    <http://data-vocabulary.org/>
PREFIX  foaf: <http://xmlns.com/foaf/0.1/>
PREFIX  s:    <http://schema.org/>
PREFIX  xsd:  <http://www.w3.org/2001/XMLSchema#>
PREFIX  gr:   <http://purl.org/goodrelations/v1#>

SELECT DISTINCT  (count(*) AS ?rowCount) ?productName ?offerImage ?offerName ?productCategory ?salePrice ?suggestedRetailPrice ?productImage ?productThumbNail ?productUrl (GROUP_CONCAT(DISTINCT ?productdescription) AS ?productdescriptions) ?productBrand ?productId ?productSku ?productModel ?productMPN ?productManufacturer ?productGtin13 ?productGtin14 ?productGtin8 ?productAvailable ?productUnAvailable ?productUsedCondition ?productNewCondition ?productColor ?productAggregateRatingValue ?productReviewCount
WHERE
  {         

        ?p2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> d:Product .
        ?p2 <http://data-vocabulary.org/Product/offerDetails> ?schOffer .
        ?schOffer <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> d:Offer .
        ?schOffer <http://data-vocabulary.org/Offer/price> ?salePrice
        OPTIONAL
          { ?schOffer <http://data-vocabulary.org/Offer/name> ?offerName }
        OPTIONAL
          { ?p2 <http://data-vocabulary.org/Product/name> ?productName }
        OPTIONAL
          { ?schOffer <http://data-vocabulary.org/Offer/image> ?offerImage }
        OPTIONAL
          { ?p2 <http://data-vocabulary.org/Product/url> ?productUrl }
        OPTIONAL
          { ?p2 <http://data-vocabulary.org/Product/image> ?productImage }
        OPTIONAL
          { ?schOffer <http://data-vocabulary.org/Offer/category> ?productCategory }
        OPTIONAL
          { ?p2 <http://data-vocabulary.org/Product/description> ?productdescription }
        OPTIONAL
          { ?p2 <http://data-vocabulary.org/Product/brand> ?pBrandNode
            OPTIONAL
              { ?pBrandNode <http://data-vocabulary.org/Brand/name> ?brandNodeName }
            OPTIONAL
              { ?pBrandNode <http://data-vocabulary.org/Organization/name> ?brandNodeName }
            BIND(str(coalesce(?brandNodeName, ?pBrandNode)) AS ?productBrand)
          }
        OPTIONAL
          { ?p2 <http://data-vocabulary.org/Product/manufacturer> ?pManufacturerNode
            OPTIONAL
              { ?pManufacturerNode <http://data-vocabulary.org/manufacturer/name> ?manufacturerNodeName }
            BIND(str(coalesce(?manufacturerNodeName, ?pManufacturerNode)) AS ?productManufacturer)
          }
        OPTIONAL
          { ?p2 <http://schema.org/Product/aggregateRating> ?pAggregateRating
            OPTIONAL
              { ?pAggregateRating <http://schema.org/AggregateRating/ratingValue> ?productAggregateRatingValue }
            OPTIONAL
              { ?pAggregateRating <http://schema.org/AggregateRating/reviewCount> ?productReviewCount }
          }
        OPTIONAL
          { ?p2 <http://data-vocabulary.org/Product/productID> ?productId }
        OPTIONAL
          { ?p2 <http://data-vocabulary.org/Product/sku> ?productSku }
        OPTIONAL
          { ?p2 <http://data-vocabulary.org/Product/itemCondition> ?productNewCondition .
            ?productNewCondition <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> s:NewCondition
          }
        OPTIONAL
          { ?p2 <http://data-vocabulary.org/Product/itemCondition> ?productUsedCondition .
            ?productUsedCondition <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> s:UsedCondition
          }
        OPTIONAL
          { ?p2 <http://data-vocabulary.org/Product/gtin13> ?productGtin13 }
        OPTIONAL
          { ?p2 <http://data-vocabulary.org/Product/gtin14> ?productGtin14 }
        OPTIONAL
          { ?p2 <http://data-vocabulary.org/Product/gtin8> ?productGtin8 }
        OPTIONAL
          { ?schOffer <http://data-vocabulary.org/Offer/availability> ?productAvailable
            FILTER ( ?productAvailable = s:InStock )
          }
        OPTIONAL
          { ?schOffer <http://data-vocabulary.org/Offer/availability> ?productUnAvailable
            FILTER ( ?productUnAvailable = s:OutOfStock )
          }
        OPTIONAL
          { ?p2 <http://data-vocabulary.org/Product/model> ?productModel }
        OPTIONAL
          { ?p2 <http://data-vocabulary.org/Product/mpn> ?productMPN }
        OPTIONAL
          { ?p2 <http://data-vocabulary.org/Product/color> ?productColor }

  }
GROUP BY ?productName ?offerImage ?offerName ?productCategory ?salePrice ?suggestedRetailPrice ?productImage ?productThumbNail ?productUrl ?productBrand ?productId ?productSku ?productModel ?productMPN ?productManufacturer ?productGtin13 ?productGtin14 ?productGtin8 ?productAvailable ?productUnAvailable ?productUsedCondition ?productNewCondition ?productColor ?productAggregateRatingValue ?productReviewCount

person user1965449    schedule 12.03.2015    source источник


Ответы (1)


Это говорит о том, что в шаблоне у вас есть более одного элемента в группе. Попробуйте запустить без подсчета и группировки и посмотрите на результаты, где вы получите 2.

person AndyS    schedule 13.03.2015