[
https://issues.apache.org/jira/browse/JENA-1130?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Andy Seaborne resolved JENA-1130.
---------------------------------
Resolution: Not A Problem
Assignee: Andy Seaborne
> Query returns different results with Fuseki 2.3.0 than with 2.3.1
> -----------------------------------------------------------------
>
> Key: JENA-1130
> URL: https://issues.apache.org/jira/browse/JENA-1130
> Project: Apache Jena
> Issue Type: Bug
> Components: ARQ
> Affects Versions: Fuseki 2.3.1
> Environment: Mac OS X 10.11.2
> Reporter: Benjamin Geer
> Assignee: Andy Seaborne
> Labels: owl, sparql
>
> Here is a query that we think is returning correct results with Fuseki 2.3.0
> but not with Fuseki 2.3.1.
> Steps to reproduce:
> 1. Download and unpack this archive:
> https://dl.dropboxusercontent.com/u/99857297/fuseki-incorrect-query-results.tar.gz
> 2. Copy the contents of the resulting directory,
> {{fuseki-incorrect-query-results}}, into the {{apache-jena-fuseki-2.3.0}}
> directory created by unpacking the Fuseki 2.3.0 distribution.
> 3. Start Fuseki with {{./fuseki-server}}, then run the script
> {{./fuseki-load-test-data.sh}}.
> 4. Run this query in the Fuseki web app at
> http://localhost:3030/dataset.html?tab=query&ds=/knora-test :
> {noformat}
> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
> PREFIX owl: <http://www.w3.org/2002/07/owl#>
> PREFIX knora-base: <http://www.knora.org/ontology/knora-base#>
> SELECT ?s ?p ?o ?oProp ?oVal ?lang ?isCardinality ?isKnoraValueProp
> ?isLinkProp ?isLinkValueProp ?isFileValueProp
> WHERE {
> BIND(IRI("http://www.knora.org/ontology/incunabula#page") as ?s)
> ?s rdfs:subClassOf* ?class .
> ?class ?p ?o .
> OPTIONAL {
> ?o rdf:type ?oType .
> }
> FILTER((?class = ?s) || (?p = rdfs:subClassOf && ?oType =
> owl:Restriction))
> BIND(lang(?o) as ?lang)
> OPTIONAL {
> ?o a owl:Restriction .
> ?o owl:onProperty ?cardinalityProp .
> ?o ?oProp ?oVal .
> BIND(true as ?isCardinality)
> OPTIONAL {
> ?cardinalityProp rdfs:subPropertyOf+ knora-base:hasValue .
> BIND(true as ?isKnoraValueProp)
> }
> OPTIONAL {
> ?cardinalityProp rdfs:subPropertyOf* knora-base:hasLinkTo .
> BIND(true as ?isLinkProp)
> }
> OPTIONAL {
> ?cardinalityProp rdfs:subPropertyOf* knora-base:hasLinkToValue .
> BIND(true as ?isLinkValueProp)
> }
> OPTIONAL {
> ?cardinalityProp rdfs:subPropertyOf* knora-base:hasFileValue .
> BIND(true as ?isFileValueProp)
> }
> MINUS {
> ?otherClass rdfs:subClassOf+ ?class .
> ?s rdfs:subClassOf* ?otherClass .
> ?otherClass rdfs:subClassOf ?otherRestriction .
> ?otherRestriction a owl:Restriction .
> ?otherRestriction owl:onProperty ?otherProperty .
> ?otherProperty rdfs:subPropertyOf* ?cardinalityProp .
> }
> }
> }
> {noformat}
> You should get 85 entries, including many containing {{true}} in one or more
> of the columns {{isCardinality}}, {{isKnoraValueProp}}, {{isLinkProp}}, and
> {{isLinkValueProp}}. The query should execute in about 500 ms.
> 5. Stop the Fuseki server, and repeat steps 2-4 using the Fuseki 2.3.1
> distribution. You should get only 41 entries, none of which contain {{true}}
> in any of the columns {{isCardinality}}, {{isKnoraValueProp}},
> {{isLinkProp}}, or {{isLinkValueProp}}. The query is also much slower with
> Fuseki 2.3.1 (4.5 seconds).
> What this query is intended to do:
> The query gets information about an OWL class, in this example
> {{incunabula:page}}. It returns all predicates and objects of that class, all
> its cardinalities, and all the cardinalities of its superclasses. The idea
> here is that we treat an OWL class as inheriting the cardinalities of its
> superclasses.
> The nested {{OPTIONAL}} clauses that {{BIND}} boolean values are intended to
> flag cardinalities on certain types of properties that the application needs
> to handle in different ways.
> The {{MINUS}} clause allows a subclass to override a cardinality in a
> superclass. For example:
> * {{knora-base:Representation}} has a cardinality for
> {{knora-base:hasFileValue}}.
> * {{knora-base:StillImageRepresentation}} is a subclass of
> {{knora-base:Representation}} and has a cardinality for
> {{knora-base:hasStillImageFileValue}}, which is a subproperty of
> {{knora-base:hasFileValue}}.
> * {{incunabula:page}} is a subclass of
> {{knora-base:StillImageRepresentation}}.
> * Therefore, the cardinalities returned for {{incunabula:page}} should
> include {{knora-base:hasStillImageFileValue}}, but not
> {{knora-base:hasFileValue}}.
> This is implemented in the {{MINUS}} clause as follows: we were given {{?s}}
> ({{incunabula:page}}), and we are looking at one of its superclasses
> {{?class}} ({{knora-base:Representation}}). We find that {{?class}} has some
> {{?cardinalityProp}} ({{knora-base:hasFileValue}}). We then find that there
> exists {{?otherClass}} ({{knora-base:StillImageRepresentation}}), located
> somewhere between {{?s}} and {{?class}} in the class hierarchy, and that it
> has a cardinality for {{?otherProperty}}
> ({{knora-base:hasStillImageFileValue}}), which is a subproperty of
> {{?cardinalityProp}}. Therefore we exclude the cardinality on
> {{?cardinalityProp}} from the results.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)