【问题标题】:Does JENA API support OWL 2?JENA API 是否支持 OWL 2?
【发布时间】:2019-01-05 07:00:03
【问题描述】:

我可以知道 Apahe JENA 是否支持 Java 中的 OWL 2 语法?它确实提到在文档 (https://jena.apache.org/documentation/ontology/) 中它只提供有限的基数限制。我想从专家那里得到证实。

【问题讨论】:

  • 专家将是编写文档以确认您正在寻找的答案的人:)
  • 不,它不支持完整的 OWL 2。是的,我可以确认文档。它大多是最新的。顺便说一句,您仍然可以手动添加 RDF 三元组来构建 OWL 结构,只是在 Jena 中没有方便的 API 方法。或者你使用 OWL API,因为 OWL 是由公理而不是 RDF 三元组组成的。

标签: jena owl owl-api jena-rules


【解决方案1】:

Apache Jena 是否支持 OWL2,仅支持 OWL11 到 org.apache.jena.ontology.OntModel 接口。另见documentation

但您仍然可以使用一些基于耶拿的外部 API 和工具在耶拿中使用 OWL2,例如ONT-API,即OWL-API-api(v5) impl over Jena。

在 ONT-API 中有两个主要的 OWL2 数据视图,它们封装了相同的 RDF Graph:com.github.owlcs.ontapi.jena.model.OntModelcom.github.owlcs.ontapi.Ontology在旧版本中(ONT-API:v1.x.x) 这些类的名称分别为 ru.avicomp.ontapi.jena.model.OntGraphModelru.avicomp.ontapi.OntologyModel)。

com.github.owlcs.ontapi.jena.model.OntModel 视图完全类似于 Jena org.apache.jena.ontology.OntModel,它是处理三元组的工具。 com.github.owlcs.ontapi.Ontology 视图是 org.semanticweb.owlapi.model.OWLOntology 的扩展,用于处理公理数据的工具,由 com.github.owlcs.ontapi.jena.model.OntModel 视图支持,反之亦然。

例如下面的sn-p:

    String uri = "https://stackoverflow.com/questions/54049750";
    String ns = uri + "#";
    OntModel m = OntModelFactory.createModel()
            .setNsPrefixes(OntModelFactory.STANDARD).setNsPrefix("q", ns);
    m.setID(uri);
    OntClass c = m.createOntClass(ns + "c");
    OntObjectProperty p = m.createObjectProperty(ns + "p");
    OntIndividual i = c.createIndividual(ns + "i");
    m.createObjectComplementOf(m.createObjectUnionOf(c, m.getOWLThing(),
            m.createObjectSomeValuesFrom(p, m.createObjectOneOf(i))));
    m.write(System.out, "ttl");

将产生以下本体:

@prefix q:     <https://stackoverflow.com/questions/54049750#> .
@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 rdfs:  <http://www.w3.org/2000/01/rdf-schema#> .

<https://stackoverflow.com/questions/54049750>
        a       owl:Ontology .

q:c     a       owl:Class .

q:p     a       owl:ObjectProperty .

q:i     a       owl:NamedIndividual , q:c .

[ a                 owl:Class ;
  owl:complementOf  [ a            owl:Class ;
                      owl:unionOf  ( q:c owl:Thing
                                     [ a                   owl:Restriction ;
                                       owl:onProperty      q:p ;
                                       owl:someValuesFrom  [ a          owl:Class ;
                                                             owl:oneOf  ( q:i )
                                                           ]
                                     ]
                                   )
                    ]
] .

【讨论】:

  • 非常感谢您的冗长解释。对此,我真的非常感激。再次感谢您。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多