如何在 SKOS 中进行概念搜索?
How to do the concept search in SKOS?
我使用 SKOS 创建了一个 ontology,它包含两个概念,concept1
和 concept2
。我在 concept1
.
中添加了一个首选标签 Temperature Sensor
和三个备选标签 Temperature@en
、Temp@en
和 T@en
我期望的是,当我向包含 Temp
、T
或 Temperature
的目标概念发送请求时,SKOS 将以相同的概念响应 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>
您提供的数据不完整;它缺少一些前缀声明,它使用相对 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="">
<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=""/>
</skos:Concept>
</rdf:RDF>
这是一个 SPARQL 查询,我们可以 运行 处理相同的数据。它检索所有概念、它们的首选标签和它们的替代标签。然后它使用 coalesce 来获取任何首选标签,如果有 none 个,则使用该概念的任何替代标签。
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
prefix skos: <http://www.w3.org/2004/02/skos/core#>
prefix : <
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 |
-----------------------------------------------
我使用 SKOS 创建了一个 ontology,它包含两个概念,concept1
和 concept2
。我在 concept1
.
Temperature Sensor
和三个备选标签 Temperature@en
、Temp@en
和 T@en
我期望的是,当我向包含 Temp
、T
或 Temperature
的目标概念发送请求时,SKOS 将以相同的概念响应 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>
您提供的数据不完整;它缺少一些前缀声明,它使用相对 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="">
<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=""/>
</skos:Concept>
</rdf:RDF>
这是一个 SPARQL 查询,我们可以 运行 处理相同的数据。它检索所有概念、它们的首选标签和它们的替代标签。然后它使用 coalesce 来获取任何首选标签,如果有 none 个,则使用该概念的任何替代标签。
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
prefix skos: <http://www.w3.org/2004/02/skos/core#>
prefix : <
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 |
-----------------------------------------------