Странное поведение Apache Jena ДОПОЛНИТЕЛЬНОЕ поведение

Я использую Jena (TDB 0.10.1, CORE / ARQ 2.10.1) из репозитория maven. Я импортировал этот файл:

tdbloader --graph=http://linkedgeodata.org --loc=$bsdStore $lgdData"supermarkets.ttl"

Теперь я пытаюсь запросить эту модель так:

PREFIX lgd: <http://linkedgeodata.org/ontology/> 
PREFIX wgs: <http://www.w3.org/2003/01/geo/wgs84_pos#>  
PREFIX geo: <http://geovocab.org/geometry#>  
PREFIX gis:     <http://www.opengis.net/ont/geosparql#>  
PREFIX rdfs:    <http://www.w3.org/2000/01/rdf-schema#>  

SELECT DISTINCT ?supermarket ?label ?latitude ?longitude ?points  
FROM <http://linkedgeodata.org>  
WHERE {  
    ?supermarket a lgd:Supermarket .  
    ?supermarket ?p ?o .  
    OPTIONAL { 
      ?supermarket rdfs:label ?label .  
      ?supermarket geo:geometry ?geo .  
      ?geo gis:asWKT ?points .  
      ?supermarket wgs:lat ?latitude .  
      ?supermarket wgs:long ?longitude .  
    }
} 

К сожалению, это возвращает пустой набор результатов. Если я теперь перенесу шаблоны wgs в отдельный ДОПОЛНИТЕЛЬНЫЙ вариант, я получу правильные результаты.

SELECT DISTINCT ?supermarket ?label ?latitude ?longitude ?points  
FROM <http://linkedgeodata.org>  
WHERE {  
    ?supermarket a lgd:Supermarket .  
    ?supermarket ?p ?o .  
    OPTIONAL { 
         ?supermarket rdfs:label ?label .  
         ?supermarket geo:geometry ?geo .  
         ?geo gis:asWKT ?points .  
    }
    OPTIONAL {
         ?supermarket wgs:lat ?latitude .  
         ?supermarket wgs:long ?longitude .  
    }
}     

Это ошибка в Йене или мой запрос неверен? Привет, Даниэль


person Daniel Gerber    schedule 23.08.2013    source источник
comment
Было бы полезно показать ответы, которые вы действительно получили на второй запрос. Кажется, этот вопрос касается того, как запрос соответствует данным.   -  person AndyS    schedule 23.08.2013
comment
весь ДОПОЛНИТЕЛЬНЫЙ шаблон либо совпадает, либо нет; он не делает каждый подшаблон в блоке независимо необязательным. Это возникло в недавнем вопросе, и ответ на него решает вашу проблему. Возможный дубликат Получение результатов dbpedia с дополнительными свойствами   -  person Joshua Taylor    schedule 23.08.2013


Ответы (1)


Весь блок OPTIONAL должен совпадать; он не делает каждый из тройных паттернов независимо необязательным. Это было бы:

WHERE {  
    ?supermarket a lgd:Supermarket .  
    ?supermarket ?p ?o .  
    OPTIONAL { ?supermarket rdfs:label ?label .  }
    OPTIONAL { ?supermarket geo:geometry ?geo .  }
    OPTIONAL {   ?geo gis:asWKT ?points .  }
    OPTIONAL {   ?supermarket wgs:lat ?latitude .  }
    OPTIONAL {   ?supermarket wgs:long ?longitude .  }
    }
}

поэтому, если у второго есть какие-то результаты, предположительно для какого-либо супермаркета, один из ДОПОЛНИТЕЛЬНЫХ результатов соответствует, а другой - нет.

person AndyS    schedule 23.08.2013