#sparql #wikidata
#sparql #викиданные
Вопрос:
Я использую приведенный ниже запрос для возврата сведений о Google.
SELECT
?property
?propertyLabel
?qval
(GROUP_CONCAT(DISTINCT ?val_Label; separator="; ") AS ?val_Label) WHERE {
?property a wikibase:Property; wikibase:claim ?p; wikibase:statementProperty ?ps; wikibase:qualifier ?pq.
?property rdfs:label ?propertyLabel . FILTER (LANG(?propertyLabel) = 'en' )
?company ?p ?statement . ?statement wikibase:rank ?rank .
FILTER (?rank IN (wikibase:NormalRank, wikibase:PreferredRank))
?statement ?ps ?value . # URI, literal or blank node
OPTIONAL {?value rdfs:label ?valueLabel . FILTER (LANG(?valueLabel) = 'en')}
BIND (COALESCE(?valueLabel, ?value) AS ?val_Label)
OPTIONAL { ?statement ?pq ?qval }
} GROUP BY ?property ?propertyLabel ?qval
VALUES (?company) {(wd:Q95)}
Я ожидаю, что квалификаторы будут возвращены, если есть какие-либо связанные с операторами, но они не возвращаются. Я не уверен, где происходит сбой.
Комментарии:
1. Свойства значения квалификатора не совпадают со свойствами, возвращаемыми
?pq
переменной.wikibase:qualifier
возвращает только представление определителя свойства, например, для того, чтобыwd:P169
оно возвращалоpq:P169
, но свойства определителя, используемые в инструкции, обычно отличаются. Например,pq:P580
(время начала) илиpq:P582
(время окончания)2. Или я неправильно понял ваш вопрос? Например, для заявления главного исполнительного директора вам нужны квалификаторы времени начала и окончания или нет?
3. Это верно, и, например, на фондовой бирже есть символ тикера, я бы тоже хотел его получить. Если у какого-либо свойства есть ссылки, я хотел бы также получить их.
4. Эти свойства просто прикреплены к самой инструкции. Вам пришлось бы отфильтровать свойства для тех, которые находятся в пространстве имен определителей. Но я все еще не понимаю, как должен выглядеть ваш конечный результат. Прямо сейчас у вас есть значения в виде объединенной строки.
5.
WHERE {?property a wikibase:Property; wikibase:claim ?p; wikibase:statementProperty ?ps.?property rdfs:label ?propertyLabel . FILTER (LANG(?propertyLabel) = 'en' ) ?company ?p ?statement . ?statement wikibase:rank ?rank . FILTER (?rank IN (wikibase:NormalRank, wikibase:PreferredRank)) optional{?statement ?pq ?qval filter(strstarts(str(?pq), str(pq:)) amp;amp; !strstarts(str(?pq), str(pqv:)))} ?statement ?ps ?value . # URI, literal or blank node OPTIONAL {?value rdfs:label ?valueLabel . FILTER (LANG(?valueLabel) = 'en')}BIND (COALESCE(?valueLabel, ?value) AS ?val_Label) }