Sparql查询以获取作为“a”的子类的所有类;物业类别“;
我需要通过向某些类添加属性来“注释”它们。我需要这样做,以便让我的应用程序的视图层提取正确的类 我所做的是: 创建一个名为uiProperty的对象属性,并编辑这些类,使其成为此类的子类:Sparql查询以获取作为“a”的子类的所有类;物业类别“;,sparql,semantic-web,owl,protege,Sparql,Semantic Web,Owl,Protege,我需要通过向某些类添加属性来“注释”它们。我需要这样做,以便让我的应用程序的视图层提取正确的类 我所做的是: 创建一个名为uiProperty的对象属性,并编辑这些类,使其成为此类的子类: uiProperty some 因此,我的类的最终OWL代码如下所示: rdfs:subClassOf owebs:RealEstate , [ rdf:type owl:Restriction ;
uiProperty some
因此,我的类的最终OWL代码如下所示:
rdfs:subClassOf owebs:RealEstate ,
[ rdf:type owl:Restriction ;
owl:onProperty owebs:uiProperty ;
owl:someValuesFrom owl:Thing
] ;
现在我想构建一个sparql查询来获取这些类。我做了以下工作:
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX owbes: <http://www.isep.org/desco/2015/>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
SELECT $uri $label WHERE {
$uri rdfs:subClassOf owbes:RealEstate.
$uri rdfs:subClassOf $x.
$x owl:onProperty owbes:uiProperty.
$uri rdfs:label $label
}
前缀rdfs:
前缀owbes:
前缀owl:
选择$uri$标签,其中{
$uri rdfs:owbes子类:不动产。
$uri rdfs:x的子类。
$x owl:onProperty owbes:uiProperty。
$uri rdfs:label$label
}
问题
该查询的结果是类太多。同一节课重复了很多次。例如:
我的问题
为什么会这样?
如何解决呢
我需要通过向某些类添加属性来“注释”它们。我需要
这样做是为了让我的应用程序的视图层提取
正确的班级
这实际上就是注释属性(如rdfs:label)的用途。您可以定义自己的注释属性,然后通过查询SPARQL更直接地检索这些类。例如,这里有一个具有三个特殊类的本体:
真的
真的
我需要通过向某些类添加属性来“注释”它们。我需要
这样做是为了让我的应用程序的视图层提取
正确的班级
这实际上就是注释属性(如rdfs:label)的用途。您可以定义自己的注释属性,然后通过查询SPARQL更直接地检索这些类。例如,这里有一个具有三个特殊类的本体:
真的
真的
如果选择distinct$uri$label WHERE…,会发生什么情况?结果有点奇怪。也许你使用的是推理机,推理机推断维拉属于那种类型或其他类型时,每种方式都会得到一个结果?@JoshuaTaylor使用distinct
确实解决了这个问题。我正在使用Fuseki sparql端点。然而,我想知道这些奇怪结果的原因。另外,可能我用错了子类
。如果没有看到您的数据,我不知道我们是否可以回答这个问题。如果选择distinct$uri$label WHERE…
,会发生什么情况?结果有点奇怪。也许你使用的是推理机,推理机推断维拉属于那种类型或其他类型时,每种方式都会得到一个结果?@JoshuaTaylor使用distinct
确实解决了这个问题。我正在使用Fuseki sparql端点。然而,我想知道这些奇怪结果的原因。另外,可能我用错了子类
。我不知道如果没有看到你的数据,我不知道我们能回答这个问题。请问为什么我有这些奇怪的副本?有什么解决方案而不是独特的吗?对不起,你的意思是我用错了uiProperty some
?我得走了,我一小时后回来,对不起,我希望一小时后我们可以继续hour@WilliamKinaan好吧,如果这只是为了确定一些类,那么你可能真的不想对它们做出合乎逻辑的断言。说“一个子类[some uiProperty]”意味着类A的每个实例都有一个属性uiProperty的值。这就是你想说的吗?那么我想我的答案就是你想要的。只需要像我一样定义一个新的注释属性,注释你的类,然后你就可以查询具有该属性的类。请问为什么我有这些奇怪的重复项?有什么解决方案而不是独特的吗?对不起,你的意思是我用错了uiProperty some
?我得走了,我一小时后回来,对不起,我希望一小时后我们可以继续hour@WilliamKinaan好吧,如果这只是为了确定一些类,那么你可能真的不想对它们做出合乎逻辑的断言。说“一个子类[some uiProperty]”意味着类A的每个实例都有一个属性uiProperty的值。这就是你想说的吗?那么我想我的答案就是你想要的。只需像我一样定义一个新的注释属性,注释类,然后就可以查询具有该属性的类。