我正在尝试执行一个带有基数限制的查询。查询看起来像
A类和(roleA最小2类B)
但这返回一个空集。另一方面,当我执行查询时
更具体地说,我有类Team、Player和Position,以及对象属性employs(与Team和Player相关)和hasPosition(与Player和Positions相关)。我正在尝试进行查询
球队和雇用的最小2人(球员和拥有一些{striker**}**)
这应该返回有两个或更多前锋的球队,但很明显,因为OWL没有做出唯一名称的假设,它返回的是一个空集合。我试图声明我的一些个体是不同的,但当我在执行查询时,有不同的个体就位,它会导致Protégé崩溃。Protégé在没有不同个体的情况下运行查询时不会崩溃。
编辑:
这个问题中还没有足够的信息来确定为什么你没有得到你想要的结果,但是我们可以很好地再现这个场景来证明这是可以实现的。考虑一个包含三个类和一些个体的本体:
和公理
返回单个组1。(这也适用于“hasposition some{Striker}”,但对于一个值,我认为value关键字更合适。)
以下是本体论:
@prefix : <http://stackoverflow.com/q/22688901/1281433/competitions#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
<http://stackoverflow.com/q/22688901/1281433/competitions>
a owl:Ontology .
:Player a owl:Class .
:Position a owl:Class .
:Team a owl:Class .
:hasPosition a owl:ObjectProperty .
:Striker a owl:NamedIndividual , :Position .
:p1 a owl:NamedIndividual , :Player ;
:hasPosition :Striker .
:p2 a owl:NamedIndividual , :Player ;
:hasPosition :Striker .
[ a owl:AllDifferent ;
owl:distinctMembers ( :p1 :p2 )
] .
:team1 a owl:NamedIndividual , :Team ;
:employs :p1 , :p2 .
我想在Protégé中为类表达式语法使用双值,但我找不到任何示例。所有使用的都是整数值,而不是double。例如:http://protegeproject.github.io/protege/class-expression-syntax/ 例如,我想用米来表示一个人的身高: HasHeight值1.89 HasHeight最小值1.70 我怎么能这么做? 当前的工作(根据语法):“hasHei
我需要在Protégé中实现一个OWL-ontology,它包含两个类:和,这两个类都是类的实例。这两个类由连接类连接,该连接类包含属性。该财产必须根据下列法律取值: 欧米茄=1*S1。完成 我如何在Protégé中实现它,这样我就可以在将来的SWRL-rule中使用它了?
Hospitals和hasNameWithWords值“Center”^^字符串 这个查询返回给我的实例是,在Protege4.2中,使用FACT++reasoner和Hermit reasoner的医院名称中有“Center” 但当我在OWL-API的DL查询示例中输入相同的查询时,该示例可在以下网站获得:http://sourceforge.net/p/owlapi/code/ci/aef69
我使用Protégé“Open from URL”下载了dron本体。在它的.owl文件中只是一系列URL,Protégé使用这些URL从Internet加载它们。我正在保存这个项目,但是唯一保存的是原始文件(包含URL的文件),而且每次我都应该从互联网上获取所有的数据。我应该怎么做才能将完整的文件保存到我的计算机磁盘上呢?
在我看来,类的定义在Protégé5.2.0中不能正常工作。但愿这是我这边的误会。 事先谢谢你,
有什么办法解决这个问题吗?