标签: ontology

从 OWL 本体获取基本命名空间

有没有一种方法可以从 OWL 本体文件中获取基本名称空间,而不使用 DOM 或类似的东西,而只使用 Jena 的 API?例如,来自 OWL 文件:

<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:protege="http://protege.stanford.edu/plugins/owl/protege#"
    xmlns="http://www.owl-ontologies.com/Ontology1254827934.owl#"
    xmlns:xsp="http://www.owl-ontologies.com/2005/08/07/xsp.owl#"
    xmlns:owl="http://www.w3.org/2002/07/owl#"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
    xmlns:swrl="http://www.w3.org/2003/11/swrl#"
    xmlns:swrlb="http://www.w3.org/2003/11/swrlb#"
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
  xml:base="http://www.owl-ontologies.com/Ontology1254827934.owl">
Run Code Online (Sandbox Code Playgroud)

我怎样才能http://www.owl-ontologies.com/Ontology1254827934.owl在运行时得到?

rdf owl ontology jena

2
推荐指数
1
解决办法
4094
查看次数

从文件加载本体时如何覆盖默认前缀?

我用RDFS创建了一个本体,使用相对URIrefs来保存击键.现在,我想用Jena加载本体并使用它来构建我的数据.但是,当我读入文件m.read("file:flow-schema.rdf");并显示它时m.write(System.out, "RDF/XML-ABBREV", "http://flowschema/#");,相对URIrefs的前缀是file:flow-schema.rdf,而不是http://flowschema/#.如何更改从文件加载的本体的默认前缀?

这是我的本体文件:

<?xml version="1.0" ?>
<!DOCTYPE rdf:RDF [<!ENTITY xsd "http://www.w3.org/2001/XMLSchema#">]>
<rdf:RDF
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"  
  xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
  xmlns:base="http://flowschema/#">

<rdfs:Class rdf:ID="Flow" />
<rdf:Property rdf:ID="srcIP">
    <rdfs:domain rdf:resource="#Flow" />
    <rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Literal" />
</rdf:Property>
<rdf:Property rdf:ID="dstIP">
    <rdfs:domain rdf:resource="#Flow" />
    <rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Literal" />
</rdf:Property>

</rdf:RDF>
Run Code Online (Sandbox Code Playgroud)

这是从文件中读取本体的Java代码:

OntModel m = ModelFactory.createOntologyModel(OntModelSpec.RDFS_MEM);
m.read("file:flow-schema.rdf");
m.write(System.out, "RDF/XML-ABBREV", "http://flowschema/#");
Run Code Online (Sandbox Code Playgroud)

rdf ontology jena

2
推荐指数
1
解决办法
1134
查看次数

如何将类的每个实例与另一个类的每个实例相关联?

一般问题

我正在使用Protégé4.3创建一个简单的本体,并尝试创建一个模型,以使C类的每个实例对于给定的属性p都具有特定的值v,它是V类的实例。我可以使用公理来得到这个推论

C subClassOf(p v)

但我想我希望能够按照

C subClassOf(p 一些 V)

因为我实际上希望C的每个实例都与V的每个实例相关。

一个具体的例子

我的示例是汽车和动作-我想为汽车创建一组动作。当我创建汽车的新实例时,我希望每个实例都有一套动作。如果我添加了新的动作实例,我希望所有汽车实例都能反映出它们所有相关的动作。

为了进一步说明,我定义了Auto类和两个子类:CarTruck。我还定义了一个Action类和一个子类TruckAction。我定义了具有域自动和范围动作hasAction属性,以关联自动和动作。我进一步创建了几个不同类型的人:

  • 汽车
    • 卡车{F150}
    • 车{ChevyMalibu}
  • 动作{加速}
    • TruckAction {LoadCargo}

当我将Car 设为(hasAction值Accelerate)的子类时,我可以看到ChevyMalibu具有推断的对象属性hasAction Accelerate,但这似乎类似于对对象属性断言进行硬编码。我想为ChevyMalibu推断所有的汽车动作,以及为F150推断所有的 TruckActions 。我不太确定为什么做类似使Car成为(hasAction和Action的子类)之类的事情不会使我到那里。

我认为对 …

semantic-web owl ontology protege description-logic

2
推荐指数
1
解决办法
1146
查看次数

Sparql查询没有显示结果

我有一个本体(dgo.owl)和一个简单的程序(SparqlQuery.java)来查询相同的本体.在运行查询时,我没有得到任何结果.经过长时间的调试后,我认为将它放入社区是件好事.

查询脚本如下:

OntModel ontmodque = ModelFactory.createOntologyModel(OntModelSpec.OWL_DL_MEM);
        InputStream in=FileManager.get().open("ontologies/dgo.owl");
        if (ontmodque.isEmpty())
        {
        ontmodque.read(in,"RDF/XML");
        }
        String qr= "PREFIX ssn: <http://purl.oclc.org/NET/ssnx/ssn#>\n" +
                   "PREFIX dgo: <http://www.iiitd.edu.in/~haroonr/ontologies/DGO#>\n" +
                 "SELECT \n"+
                   "?property  \n"+ 
                    "WHERE\n"+
                    "{ \n"+
                    "dgo:DiningRoom ssn:hasProperty ?property .\n " +
                    "}";

        Query qy = QueryFactory.create(qr);
        QueryExecution qe = QueryExecutionFactory.create(qy,ontmodque);
        ResultSet rs= qe.execSelect();
        ResultSetFormatter.out(System.out, rs, qy) ;
        ontmodque.close();
        qe.close();
Run Code Online (Sandbox Code Playgroud)

获得的输出是:


在此输入图像描述

我知道hasProperty对象关系存在于所述本体中.此外,DiningRoom的可能属性应返回Illuminance,Temperature,Co2Content,AbsoluteHumidity.

rdf owl ontology sparql jena

2
推荐指数
1
解决办法
79
查看次数

我们能否从他们的限制中推断出两个阶级的关系?

我不确定我们是否可以从他们的限制中推断两个类的关系...如果我们有两个类:

owl:class1 rdfs:subClassOf [restriction1...], [restriction2...], [restriction3].

owl:class2 rdfs:subClassOf [restriction1...], [restriction2...].
Run Code Online (Sandbox Code Playgroud)

我们可以从这些知识中得出什么推论?看起来owl:class2比广泛owl:class1.我们能推断owl:class1 rdfs:subClassOf owl:class2.一下吗?

semantic-web inference owl ontology sparql

2
推荐指数
1
解决办法
52
查看次数

如何在Protégé中定义多个域和范围连接?

我是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语句中,不可能找出哪个域连接到哪个范围(例如,活动具有位置)。请让我知道如何解决它。

rdf owl ontology protege4 protege

2
推荐指数
1
解决办法
706
查看次数

sparql 检查属性是否存在并给出零答案

这是我的最低数据:

@prefix : <http://example.org/rs#>

:item :hasContext [:weight 0.1 ; :doNotRecommend true] , [:weight 0.2 ] .

:anotherItem :hasContext [:weight 0.4] , [ :weight 0.5 ] .
Run Code Online (Sandbox Code Playgroud)

如您所见,每个item都有一个或多个 hasContext,它的对象hasContext是一个可以doNotRecommed谓词的实例。

我想要的是,如果这些实例之一(hasContext 的对象)包含 donNotRecommed,我希望总和为零。** 和总和我的意思是权重的总和**,所以换句话说,如果该属性存在,忽略所有权重(无论它们是否存在),只需将其设为零

我的查询

select ?item (SUM(?finalWeight) as ?summedFinalWeight) {
 ?item :hasContext ?context .
  optional 
  {
    ?context :doNotRecommend true .
    bind( 0 as ?cutWeight) 
  }
  optional
  {
    ?context :weight ?weight .
  } 
  bind ( if(bound(?cutWeight), ?cutWeight , if(bound(?weight), ?weight, 0.1) ) …
Run Code Online (Sandbox Code Playgroud)

rdf semantic-web owl ontology sparql

2
推荐指数
1
解决办法
2573
查看次数

任何人都可以帮助我使用 RDF/OWL 可视化工具吗?

我尝试在互联网上搜索,但找不到合适的工具,所以如果有人可以为我提供指向该工具的链接,该工具可以解析和显示 RDF 和 OWL 本体的图形。

rdf semantic-web owl ontology graph-visualization

2
推荐指数
1
解决办法
2178
查看次数

保护的自反财产

是我用protege 5创建的本体论.

如果我做cl1cl2不相交,那么本体就是不一致的,但是如果我取消is_friend_of反复,那么本体就不再是不一致了.什么是我的本体错误?

我只希望cl1班上的人拥有is_friend_of财产.

semantic-web owl ontology protege

2
推荐指数
1
解决办法
715
查看次数

如何使用 SPARQL 获取 Wikidata 实体的*所有*超类?

我对可视化维基数据类层次结构感兴趣,以创建像 向量空间实体超类的有向图

我知道如何获得维基数据实体的直接超类。为此,我使用 SPARQL 代码,例如:

SELECT ?item ?itemLabel 
WHERE 
{
    wd:Q125977 wdt:P279 ?item.
    SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
Run Code Online (Sandbox Code Playgroud)

其中wdt:P279表示subclass of- 属性。

但是,这种直接方法需要对 Wikidata API 进行多次单一请求。

如何通过单个 SPARQL 查询获得相同的信息?

(请注意,上面的示例图仅显示了一个缩略版本。所有超类的最终所需图为 13 层深,有 69 个节点,这意味着 68 个单个请求,如果有兴趣,请参阅此 jupyter notebook。)

semantic-web ontology sparql superclass wikidata

2
推荐指数
1
解决办法
190
查看次数