Как сделать поиск концепции в СКОСе?

Я создал онтологию с использованием 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 |
-----------------------------------------------
Другие вопросы по тегам