当前位置: 首页 > 知识库问答 >
问题:

使用OWL API在Turtle中序列化装载本体

华阳秋
2023-03-14

Turtle中的本体如下所示。我用一个Jena模型来储存它。注意:下面的本体论不正确,如下面的答案所述

@prefix owl:   <http://www.w3.org/2002/07/owl#> .
@prefix rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xsd:   <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs:  <http://www.w3.org/2000/01/rdf-schema#> .

<http://example.com/minimalDecoupling>
        a           "http://www.w3.org/2002/07/owl#DatatypeProperty" ;
        rdfs:label  "minimal decoupling" .

<http://example.com/frequency>
        a           "http://www.w3.org/2002/07/owl#DatatypeProperty" ;
        rdfs:label  "frequency" .

<http://example.com/voltage>
        a           "http://www.w3.org/2002/07/owl#DatatypeProperty" ;
        rdfs:label  "Voltage" .

<http://example.com/powerConsumed>
        a           "http://www.w3.org/2002/07/owl#DatatypeProperty" ;
        rdfs:label  "power consumed" .

<http://example.com/installation>
        a           "http://www.w3.org/2002/07/owl#DatatypeProperty" ;
        rdfs:label  "installation" .

<http://example.com/Device>
        a           "http://www.w3.org/2002/07/owl#Class" ;
        rdfs:label  "device" .

<http://example.com/dimension>
        a           "http://www.w3.org/2002/07/owl#DatatypeProperty" ;
        rdfs:label  "dimension" .

<http://example.com/>
        a       "http://www.w3.org/2002/07/owl#Ontology" .

假设上面的本体存储在Jena模型ontologygraph中,我正在使用下面的代码将Jena模型作为OWL本体加载。

OWLOntology ontology = ontologyManager.
                loadOntologyFromOntologyDocument
                        (new ByteArrayInputStream(Ontology.toTurtle(ontologyGraph).getBytes()));

toturtle方法如下所示:

public static String toTurtle(Model ontologyGraph){
        StringWriter out = new StringWriter();
        ontologyGraph.write(out,"TTL");
        return out.toString();
    } 

我的问题是:

  1. 为什么所有的公理都以注释的形式出现?
  2. 是否可以使用OWL API直接加载Jena模型作为OWL本体,而不必通过Turtle?

共有1个答案

葛阳
2023-03-14

为什么所有的公理都以注释的形式出现?

输入模型中的类型是字符串文字,但需要是IRI。比如这个:

<http://example.com/Device>
    a "http://www.w3.org/2002/07/owl#Class" ;

应该是:

<http://example.com/Device>
    a <http://www.w3.org/2002/07/owl#Class> ;
<http://example.com/Device>
    a owl:Class ;
 类似资料:
  • OWLAPI用于序列化SWRL规则的OWL-XML序列化格式在哪里指定?例如。通过使用Protege(据我所知,它使用OWLAPI)序列化一个简单的规则,我得到以下代码: 这与SWRL规范[1]: 谢谢你![1]https://www.w3.org/submission/swrl/[2]http://dl.acm.org/citation.cfm?id=2890050

  • 我正在开发一个maven插件来使用OWL-APIV3.4.3和HermiT 1.3.8.4验证OWL本体。一些OWL本体是专有的,因此在Web上不可用。 查看文档,我正在使用加载OWL文件以执行验证: 当本体不导入任何专有本体,但否则返回error时,此操作很好。我见过有人使用在本体URI和定义实体的物理文件之间创建链接,但我认为这在我的情况下行不通(主要是因为文件名未知)。 有没有办法告诉OWL

  • applyChange()方法总是返回“unsuccessful”,我找不到任何关于注释删除不起作用的文档。 注:在http://sourceforge.net/p/owlapi/mailman/message/28203984/here似乎起作用

  • 我有一个用户对象,它被发送到服务器和从服务器发送。当我发出user对象时,我不想将散列密码发送给客户端。因此,我在password属性中添加了,但这也阻止了它反序列化为密码,这使得用户在没有密码时很难注册。 如何才能只让应用于序列化而不应用于反序列化?我使用的是Spring JSONView,所以我对没有太多的控制权。 将添加到属性 仅在getter方法上添加

  • 问题内容: 我有一个发送到服务器或从服务器发送的用户对象。发送用户对象时,我不想将哈希密码发送给客户端。因此,我添加了password属性,但这也阻止了将其反序列化为密码,这使得在没有密码的情况下很难注册用户。 我怎样才能只应用序列化而不是反序列化?我使用的是Spring JSONView,因此对的控制不多。 我尝试过的事情: 添加到属性 仅添加getter方法 问题答案: 确切的操作方法取决于你

  • 我试图使用Google的Gson库在Java中序列化和反序列化一个HashMap。我希望序列化这里所示的hashmap,将其保存到一个文件中,然后在以后的阶段从一个文件中读取并反序列化它。 HashMap如下所示 反序列化类的反序列化逻辑,以及我目前基于Web上找到的示例实现的对象类。IS: 下面是在test函数中调用的序列化和反序列化代码。测试函数序列化上面HashMap的一个对象,创建一个字符