在描述逻辑中,"someValuesFrom"和"allValuesFrom"之间有什么区别?换句话说,(有限存在量化)和(价值限制)之间的差异.
例如,考虑一下:
Δ= {a,b,c,d,e}
ext(B)= {<c,d>}
ext(R)= {<a,b>,<a,c>,<d,c>,< C,E>}
那么以下是什么区别?
ext(∃R.B)= ?
ext(∀R.B)= ?
有没有办法简化somevaluefrom和allvalues的概念?
我想构建一个本体来处理感染或未感染疾病的人:
<?xml version="1.0"?>
</rdf:RDF>
<owl:Class rdf:about="&person;Disease"/>
<owl:Class rdf:about="&person;HealthyPerson">
<rdfs:subClassOf rdf:resource="&person;Person"/>
<owl:disjointWith rdf:resource="&person;SickPerson"/>
</owl:Class>
<owl:Class rdf:about="&person;Person"/>
<owl:Class rdf:about="&person;SickPerson">
<rdfs:subClassOf rdf:resource="&person;Person"/>
</owl:Class>
</rdf:RDF>
Run Code Online (Sandbox Code Playgroud)
图形:

我怎样才能定义属性has_disease(人,病)以这样的方式该类型的个人Person相关的一些Disease由has_disease将被推断有型SickPerson,也?
我是Jena和Owl的新手,我获得了本体论.我可以用Protege 4.2打开它而没有任何问题但是当我尝试用Jena打开它时我得到了:
Exception in thread "main" org.apache.jena.riot.RiotException: {E201} Multiple children of property element.
我一直在我的Ontology中查看它可能是什么,我注意到一些元素在一种语言中有多个Label,例如:
<AnnotationAssertion>
<AnnotationProperty abbreviatedIRI="rdfs:label"/>
<AbbreviatedIRI>atc:A02BX02</AbbreviatedIRI>
<Literal xml:lang="no" datatypeIRI="&rdf;PlainLiteral">Sukralfat</Literal>
</AnnotationAssertion>
<AnnotationAssertion>
<AnnotationProperty abbreviatedIRI="rdfs:label"/>
<AbbreviatedIRI>atc:A02BX02</AbbreviatedIRI>
<Literal xml:lang="no" datatypeIRI="&rdf;PlainLiteral">antepsin</Literal>
</AnnotationAssertion>
<AnnotationAssertion>
<AnnotationProperty abbreviatedIRI="rdfs:label"/>
<AbbreviatedIRI>atc:A02BX02</AbbreviatedIRI>
<Literal datatypeIRI="&xsd;string">sucralfate</Literal>
</AnnotationAssertion>
<AnnotationAssertion>
<AnnotationProperty abbreviatedIRI="rdfs:label"/>
<AbbreviatedIRI>atc:A02BX02</AbbreviatedIRI>
<Literal xml:lang="no" datatypeIRI="&rdf;PlainLiteral">sukralfat</Literal>
</AnnotationAssertion>
Run Code Online (Sandbox Code Playgroud)
这会导致问题吗?我使用的所有代码都与其他本体一起工作,所以我认为它真的来自这个本体.你知道什么可能导致这个例外吗?
所以我得到了一个最小化的案例,仍然得到同样的错误:
<?xml version="1.0"?>
<!DOCTYPE Ontology [
<!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" >
<!ENTITY xml "http://www.w3.org/XML/1998/namespace" >
<!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" >
<!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
]>
<Ontology xmlns="http://www.w3.org/2002/07/owl#"
xml:base="http://www.ebi.ac.uk/Rebholz-srv/atc/public/ontologies/atc.owl"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:xml="http://www.w3.org/XML/1998/namespace"
ontologyIRI="http://www.ebi.ac.uk/Rebholz-srv/atc/public/ontologies/atc.owl">
<Prefix …Run Code Online (Sandbox Code Playgroud) 我正在使用这个基于数据的知识类,我试图弄清楚如何安装第一个OWL API.首先,我在Protege中创建一个.owl文件.我的老师告诉我们,我们必须编写一个小的Java程序来读取我们的.owl文件.他告诉我们要包含OWL API; 他没有给出任何关于OWL API的说明和任何讲座.你知道我如何安装OWL API是非常令人困惑的吗?如果有任何好的教程解释如何将.owl文件实现到Java程序中?
谢谢
请参阅本书"语义Web技术的基础",第130页中的本体代码.
(本书的精选页面可在Google Books上找到.)
<Person rdf:about="anton">
<likesToWorkWith rdf:resource="doris" />
<likesToWorkWith rdf:resource="dagmar" />
</Person>
<Person rdf:about="doris">
<likesToWorkWith rdf:resource="dagmar" />
<likesToWorkWith rdf:resource="bernd" />
</Person>
<Person rdf:about="gustav">
<likesToWorkWith rdf:resource="bernd" />
<likesToWorkWith rdf:resource="doris" />
<likesToWorkWith rdf:resource="desiree" />
</Person>
<Person rdf:about="charles" />
<owl:Class rdf:about="FemaleColleagues">
<owl:oneOf rdf:parseType="Collection">
<Person rdf:about="dagmar" />
<Person rdf:about="doris" />
<Person rdf:about="desiree" />
</owl:oneOf>
</owl:Class>
<owl:AllDifferent>
<owl:distinctMembers
rdf:parseType="Collection">
<Person rdf:about="anton" />
<Person rdf:about="bernd" />
<Person rdf:about="charles" />
<Person rdf:about="dagmar" />
<Person rdf:about="desiree" />
<Person rdf:about="doris" />
</owl:distinctMembers>
</owl:AllDifferent>
Run Code Online (Sandbox Code Playgroud)
现在,在同一本书的第132页中,Class2 …
是否可以在protege(因此在owl中)描述一个类,具体取决于它是否具有某些属性?
例如
我有一个类Home,我想说的是,每一个都有实例property1,并property2与property2被认为是类的实例?
我是Protégé的新手。我正在开发一个本体。我的本体类的一部分通过“具有”关系与其他类连接。例如:
Activity has Location
Household has Location
Intervention has CloseWork
Run Code Online (Sandbox Code Playgroud)
我在Protege中将活动,家庭,位置,干预和CloseWork声明为类。我声明“具有”为ObjectProperty。为了显示类之间的关系,我设置了“具有” ObjectProperty的域和范围。例如:为了显示“活动具有位置”,我将“活动”设置为域,并将“位置”设置为范围。我将本体保存为RDF / XML语法。文件显示了我的“具有”对象属性,如下所示:
<owl:ObjectProperty rdf:about="www.ndssl.vbi.vt.edu/epidl#has">
<rdfs:domain rdf:resource="www.ndssl.vbi.vt.edu/epidl#Activity"/>
<rdfs:domain rdf:resource="www.ndssl.vbi.vt.edu/epidl#Household"/>
<rdfs:range rdf:resource="www.ndssl.vbi.vt.edu/epidl#Location"/>
<rdfs:domain rdf:resource="www.ndssl.vbi.vt.edu/epidl#Intervention"/>
<rdfs:range rdf:resource="www.ndssl.vbi.vt.edu/epidl#CloseWork"/>
</owl:ObjectProperty>
Run Code Online (Sandbox Code Playgroud)
从上述RDF语句中,不可能找出哪个域连接到哪个范围(例如,活动具有位置)。请让我知道如何解决它。
这是我的查询:
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX rs: <http://www.welovethesemanticweb.com/rs#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
construct {
?subject0 rs:similarityValue ?similairty0.
?subject1 rs:similarityValue ?similairty1
}
WHERE {
{
?subject0 ?predicate0 ?object0.
rs:Impromptu_No._1 ?predicate0 ?object0.
?predicate0 rs:hasSimilarityValue ?similairty0Helper.
BIND(?similairty0Helper * (4/9) AS ?similairty0)
FILTER (?subject0 != rs:Impromptu_No)
}
union {
?subject1 ?predicate ?object.
?object ?predicate1 ?object1.
?predicate1 rs:hasSimilarityValue ?similairty1Helper.
rs:Impromptu_No._1 ?predicateHelper ?objectHelper.
?objectHelper ?predicate1 ?object1
BIND(?similairty1Helper * (1/9) AS ?similairty1)
FILTER (?subject1 != rs:Impromptu_No._1)
}
}
Run Code Online (Sandbox Code Playgroud)
结果是:
rs:5th_Symphony
rs:similarityValue
0.011111111111111112e0 .
rs:Polonaise_heroique
rs:similarityValue
0.011111111111111112e0 , 0.17777777777777778e0 , …Run Code Online (Sandbox Code Playgroud) 这是查询和结果:
如您所见,我正在过滤掉那些用户,bo:ania为什么他们仍然出现?
但是,如果我删除宽卡并仅选择用户?user,bo:ania则不会出现
我没有提供最小数据示例,因为这是关于过滤器和通配符如何工作的问题,而不是从数据集中提取某些数据的问题.但是,如果您需要最低限度的数据,我非常乐意提供.
我尝试将一个人插入我的本体,但得到错误:
Error 400: SPARQL Query: No 'query=' parameter
Fuseki - version 2.4.1 (Build date: 2016-11-04T18:59:20+0000)
Run Code Online (Sandbox Code Playgroud)
这是我的SPARQL INSERT查询#1:
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX oo: <http://www.test.com/test-ontology.owl#>
INSERT {
oo:cap_123 rdf:type oo:MyTours .
oo:cap_123 oo:active true .
oo:cap_123 oo:title 'Text text text' .
}
WHERE {
FILTER NOT EXISTS { oo:cap_123 rdf:type oo:MyTours .
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的INSERT查询#2:
INSERT DATA {
oo:cap_123 rdf:type oo:MyTours .
oo:cap_123 oo:active true .
oo:cap_123 oo:title 'Text text text' .
}
Run Code Online (Sandbox Code Playgroud)
如果我使用Protégé插入个体,那么它可以工作并保存结果,如下所示:
<owl:NamedIndividual rdf:about="http://www.test.com/test-ontology.owl#cap_123"> …Run Code Online (Sandbox Code Playgroud)