Как сделать поиск концепции в СКОСе?
Я создал онтологию с использованием SKOS, и она включает в себя две концепции: concept1
а также concept2
, И я добавил один предпочтительный ярлык Temperature Sensor
и три альтернативных ярлыка Temperature@en
, Temp@en
а также T@en
в concept1
,
Я ожидаю, когда отправлю запрос на целевую концепцию, содержащую Temp
, T
или же Temperature
СКОС ответит той же концепцией Temperature Sensor
(которые определены в предпочтительной этикетке).
Как мне этого добиться? Можно ли добиться этого с помощью SKOS? Часть rdf
Файл показан ниже.
<skos:Concept rdf:about="TemperatureSensor">
<skos:altLabel xml:lang="en">T</skos:altLabel>
<skos:altLabel xml:lang="en">Temp</skos:altLabel>
<skos:altLabel xml:lang="en">Temperature</skos:altLabel>
<skos:prefLabel xml:lang="en">TemperatureSensor</skos:prefLabel>
<skos:inScheme rdf:resource="conceptSchemeSensors"/></skos:Concept>
1 ответ
Предоставленные вами данные не полны; в нем отсутствуют некоторые объявления префиксов, и он использует относительные IRI, но не определяет базовый IRI. Вот некоторые полные данные, которые мы можем использовать:
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:skos="http://www.w3.org/2004/02/skos/core#">
<skos:Concept rdf:about="http://stackru.com/q/27958866/1281433/TemperatureSensor">
<skos:altLabel xml:lang="en">T</skos:altLabel>
<skos:altLabel xml:lang="en">Temp</skos:altLabel>
<skos:altLabel xml:lang="en">Temperature</skos:altLabel>
<skos:prefLabel xml:lang="en">TemperatureSensor</skos:prefLabel>
<skos:inScheme rdf:resource="http://stackru.com/q/27958866/1281433/conceptSchemeSensors"/>
</skos:Concept>
</rdf:RDF>
Вот запрос SPARQL, который мы можем выполнить для тех же данных. Он извлекает все концепции, их предпочтительные метки и альтернативные метки. Затем он использует coalesce, чтобы взять любую из предпочтительных меток, и, если ее нет, любую из альтернативных меток для концепции.
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
prefix skos: <http://www.w3.org/2004/02/skos/core#>
prefix : <http://stackru.com/q/27958866/1281433/>
select ?concept (coalesce(sample(?prefLabel),sample(?altLabel)) as ?label) where {
?concept skos:altLabel ?altLabel ;
skos:prefLabel ?prefLabel .
}
group by ?concept
-----------------------------------------------
| concept | label |
===============================================
| :TemperatureSensor | "TemperatureSensor"@en |
-----------------------------------------------