- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想查询尼古丁(产品)的所有子类。
结果必须是(鼻形尼古丁,来自ni ..(4项)的口咽..如图所示)
我尝试通过rdfs:subClassOf +和owl:equivalentClass +进行查询,但是没有用
从this example尝试
这里的代码相同。
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT * WHERE
{
?s owl:equivalentClass+ ?o . # and try ?s rdfs:subClassOf ?o
filter(?s=<http://snomed.info/id/323283001>)
}
<owl:Class rdf:about="http://snomed.info/id/323283001">
<rdfs:label xml:lang="en">Nicotine (product)</rdfs:label>
<rdfs:subClassOf>
<owl:Class>
<owl:intersectionOf rdf:parseType="Collection">
<rdf:Description rdf:about="http://snomed.info/id/420383004"/>
<rdf:Description rdf:about="http://snomed.info/id/425288007"/>
<owl:Restriction>
<owl:onProperty rdf:resource="http://snomed.info/id/127489000"/>
<owl:someValuesFrom rdf:resource="http://snomed.info/id/68540007"/>
</owl:Restriction>
</owl:intersectionOf>
</owl:Class>
</rdfs:subClassOf>
</owl:Class>
最佳答案
首先,按顺序安排了有关SPARQL查询的几个注意事项。第一个考虑属性路径中*
和+
之间的差异,第二个考虑使用filter
和values
。然后,我们可以看看如何从数据中查询不同类型的子类/超类关系。这里的诀窍是,我们正在寻找的某些关系是我们通常会使用OWL推理程序的关系,但是我们正在尝试使用SPARQL进行一些OWL推理
有关原始查询的一些注意事项
属性路径,+
和*
请注意,在链接到的另一个问题中,属性路径使用*
运算符,这表示长度为零或更大的路径。长度为零或更大的路径可能非常重要,因为如果您的表单数据中没有显式三元组
:MyClass owl:equivalentClass :MyClass
?myClass owl:equivalentClass+ :MyClass
:MyClass
)的结果
?myClass owl:equivalentClass* :MyClass
owl:equivalentClass
是对称属性(即从
a owl:equivalentClass b
我们可以推断出
b owl:equivalentClass a
),三元组也可能仅在数据的一个方向上出现,因此我们实际上需要
?myClass (owl:equivalentClass|^owl:equivalentClass)* :MyClass
values
代替
filter
filter
:
filter(?s=<http://snomed.info/id/323283001>)
values
轻松实现,如
values ?superclass { <http://snomed.info/id/323283001> }
?subclass (rdfs:subClassOf|owl:equivalentClass)* ?superclass
rdfs:subClassOf
和
owl:equivalentClass
的层次结构中查找子类关系,则可以使用如下模式:
?subclass (rdfs:subClassOf|owl:equivalentClass|^owl:equivalentClass)* ?superclass
|
用法保留为二进制格式,因此在这种情况下应进行实际编写:
?subclass (rdfs:subClassOf|(owl:equivalentClass|^owl:equivalentClass))* ?superclass
A subClassOf (B and C)
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:owl="http://www.w3.org/2002/07/owl#"
xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns="https://stackoverflow.com/q/21092246/1281433/data.owl#">
<owl:Ontology rdf:about="https://stackoverflow.com/q/21092246/1281433/data.owl"/>
<owl:Class rdf:about="https://stackoverflow.com/q/21092246/1281433/data.owl#C"/>
<owl:Class rdf:about="https://stackoverflow.com/q/21092246/1281433/data.owl#B"/>
<owl:Class rdf:about="https://stackoverflow.com/q/21092246/1281433/data.owl#A">
<rdfs:subClassOf>
<owl:Class>
<owl:intersectionOf rdf:parseType="Collection">
<owl:Class rdf:about="https://stackoverflow.com/q/21092246/1281433/data.owl#B"/>
<owl:Class rdf:about="https://stackoverflow.com/q/21092246/1281433/data.owl#C"/>
<owl:Restriction>
<owl:onProperty>
<owl:ObjectProperty rdf:about="https://stackoverflow.com/q/21092246/1281433/data.owl#p"/>
</owl:onProperty>
<owl:someValuesFrom>
<owl:Class rdf:about="https://stackoverflow.com/q/21092246/1281433/data.owl#D"/>
</owl:someValuesFrom>
</owl:Restriction>
</owl:intersectionOf>
</owl:Class>
</rdfs:subClassOf>
</owl:Class>
</rdf:RDF>
prefix : <https://stackoverflow.com/q/21092246/1281433/data.owl#>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
prefix owl: <http://www.w3.org/2002/07/owl#>
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
select ?superclass where {
:A (rdfs:subClassOf|(owl:intersectionOf/rdf:rest*/rdf:first))* ?superclass .
}
--------------
| superclass |
==============
| :A |
| _:b0 |
| :B |
| :C |
| _:b1 |
--------------
prefix : <https://stackoverflow.com/q/21092246/1281433/data.owl#>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
prefix owl: <http://www.w3.org/2002/07/owl#>
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
select ?superclass where {
:A (rdfs:subClassOf|(owl:intersectionOf/rdf:rest*/rdf:first))* ?superclass .
filter(!isBlank(?superclass))
}
--------------
| superclass |
==============
| :A |
| :B |
| :C |
--------------
^owl:equivalentClass|owl:equivalentClass
添加到该属性路径中。
filter
并获得一些有用的输出):
关于rdf - Sparql查询子类或EquivalentTo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21092246/
我正在使用 SPARQL,我想知道是否可以在 in 子句中放入 sparql?更具体地说,我需要获取对此 sparql 查询具有特定条件的实体(s1,s2)[s1 在某个字段上的聚合值大于 5] se
我们有办法在 SPARQL 中做一个不减少的累加和吗? 例如, SELECT ?p WHERE { VALUES ?p { 1 1 2 } } ORDER BY ?p 将导致 1 2 4, - 而
在这个小片段中,第二行的 a 是做什么的? CONSTRUCT { ?uri a skos:Concept ; skos:prefLabel ?prefLabel ; 我确
我写了一个 Sparql 查询。 PREFIX table: SELECT ?name ?color FROM WHERE { ?element table:group ?group. ?gro
下面的两个查询有什么区别吗? select distinct ?i where{ ?i rdf:type . FILTER EXISTS { ?i ?b.
我不太明白为什么在SPARQL中他们没有实现基本的逻辑运算符。然而,在大多数情况下,可以通过多种方式获得相同的结果。 这个问题的目的是快速引用可以替代“or”语句的可能方式。 这是我能想到的: 1)联
我的问题很简单:我有一个源my:g1,其中包含: my:a1 my:b "literal 1" 然后我有第二个源my:g2,其中包含: my:a2 my:b my:c. my:c rdfs:label
我在处理数字数据类型时遇到 SPARQL 问题。 我有一个本体 ( http://cabas.ugr.es/ontology/ugr ),我在其中定义了一对属性,表示特定性别的学生人数:
我有以下 SPARQL 查询: PREFIX rdfs: PREFIX type: PREFIX prop: SELECT * WHERE { ?person a foaf:Per
我想知道如何在sparql中表达以下问题: “请告诉我每个 child 都上麻省理工学院的 parent ” 更一般地说,我想知道查询 sparql 的限制是什么?请问数据库中有哪些类型的答案不能
我正在尝试编写一个优雅的 SPARQL,为多个可能的查询提供一个解决方案。我有多个主语和多个谓词,我想接收一个对象。单一解决方案的存在非常不确定,因此我给出了多种选择。如果我没记错的话,这可以通过以下
这是一个关于 Sparql 和 Wikidata 的问题。我想制定一个返回实例类型关系的查询,但如果它不可用,则返回其子类。我尝试过: SELECT DISTINCT ?ent_type WHER
我想做一些类似的事情 { SELECT ?page, "A" AS ?type WHERE { ?s rdfs:label "Microsoft"@en;
我正在尝试进行 SPARQL 查询,该查询返回一个变量,其中包含两个单词,由某些内容分隔。实际上,我尝试获取一个变量,如 ?πληθυσμός_population(希腊语和英语)。但是,我更喜欢与“
我想知道 SPARQL 默认情况下是否采用开放世界假设,或者这是否取决于执行 SPARQL 查询的三元组存储。 这个假设在查询中的含义是什么。 致以诚挚的问候。 最佳答案 嗯.... 我想知道这对于这
我在处理数字数据类型时遇到 SPARQL 问题。 我有一个本体 ( http://cabas.ugr.es/ontology/ugr ),我在其中定义了一对属性,表示特定性别的学生人数:
我正在玩DBPedia . 通过这个查询,我得到了所有出生在伦敦的人: SELECT ?person WHERE { ?person dbo:birthPlace :London } 但
我需要处理 SPARQL 查询。有没有人有很好的链接来学习 SPARQL 查询?我正在寻找有关 SPARQL 查询和示例语法的好文章,以便我可以快速学习。 最佳答案 Lee Feigenbaum 的
我有一个 SPARQL 查询,它在 Virtuoso SPARQL 查询编辑器中运行时提供结果,但相同的查询在 SPARQL 查询验证器中给出语法错误。问题是什么?为什么显示语法错误? PREFIX
我正在运行 sparql 查询 PREFIX rdfs: PREFIX rdfs: SELECT DISTINCT(?film_link) ?film_name ?wiki
我是一名优秀的程序员,十分优秀!