gpt4 book ai didi

java - 将 RDF-triple 添加到 owl 本体中 (OWL API 4.3.0)

转载 作者:行者123 更新时间:2023-11-30 06:40:06 29 4
gpt4 key购买 nike

我想使用 OWL API 将 xls 文件中的一些 RDF 三元组添加到 OWL RDF/XML 本体中。我关注这个topic并设法使用 OWL API v 3.4 做到这一点,但我无法使用 v4.3 做到这一点(并且我的程序的所有其余部分都使用 v4.3)。

以下是适用于 3.4 版本的上述主题的代码:

import java.io.Reader;

import org.coode.owlapi.rdfxml.parser.OWLRDFConsumer;
import org.semanticweb.owlapi.apibinding.OWLManager;
import org.semanticweb.owlapi.model.IRI;
import org.semanticweb.owlapi.model.OWLDataFactory;
import org.semanticweb.owlapi.model.OWLDataProperty;
import org.semanticweb.owlapi.model.OWLEntity;
import org.semanticweb.owlapi.model.OWLNamedIndividual;
import org.semanticweb.owlapi.model.OWLObjectProperty;
import org.semanticweb.owlapi.model.OWLOntology;
import org.semanticweb.owlapi.model.OWLOntologyCreationException;
import org.semanticweb.owlapi.model.OWLOntologyLoaderConfiguration;
import org.semanticweb.owlapi.model.OWLOntologyManager;
import org.semanticweb.owlapi.model.OWLOntologyStorageException;

import uk.ac.manchester.cs.owl.owlapi.turtle.parser.TurtleParser;


public class ExampleOWLRDFConsumer {
public static void main(String[] args) throws OWLOntologyCreationException, OWLOntologyStorageException {
// Create an ontology.
OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
OWLDataFactory factory = manager.getOWLDataFactory();
OWLOntology ontology = manager.createOntology();

// Create some named individuals and an object property.
String ns = "http://example.org/";
OWLNamedIndividual tom = factory.getOWLNamedIndividual(IRI.create(ns + "Tom"));
OWLObjectProperty likes = factory.getOWLObjectProperty(IRI.create(ns + "likes"));
OWLDataProperty age = factory.getOWLDataProperty(IRI.create(ns + "age"));
OWLNamedIndividual anna = factory.getOWLNamedIndividual(IRI.create(ns + "Anna"));

// Add the declarations axioms to the ontology so that the triples involving
// these are understood (otherwise the triples will be ignored).
for (OWLEntity entity : new OWLEntity[] {tom, likes, age, anna}) {
manager.addAxiom(ontology, factory.getOWLDeclarationAxiom(entity));
}

// Print the the ontology to see that the entities are declared.
// The important result is
// <NamedIndividual rdf:about="http://example.org/Tom"/>
// with no properties
manager.saveOntology(ontology, System.out);

// Create an OWLRDFConsumer for the ontology.
OWLRDFConsumer consumer = new OWLRDFConsumer(ontology, new TurtleParser((Reader) null), new OWLOntologyLoaderConfiguration());

// The consumer handles (IRI,IRI,IRI) and (IRI,IRI,OWLLiteral) triples.
consumer.handle(tom.getIRI(), likes.getIRI(), anna.getIRI());
consumer.handle(tom.getIRI(), age.getIRI(), factory.getOWLLiteral(35));

// Print the ontology to see the new object and data property assertions. The import contents is
// still Tom:
// <NamedIndividual rdf:about="http://example.org/Tom">
// <example:age rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">35</example:age>
// <example:likes rdf:resource="http://example.org/Anna"/>
// </NamedIndividual>
manager.saveOntology(ontology, System.out);
}
}

我知道有些Packages changed from v3.X to 4.X似乎 TurtleParser 不再是 AnonymousNodeChecker ?在此示例中,消费者不处理 v4.3 中的 2 个 RDF-Triple。如果有人设法运行这个示例并打印两个关系(OWLObjectProperty/OWLDataproperty),那就太好了 =)。我的依赖:

<parent>
<artifactId>owlapi-parent</artifactId>
<groupId>net.sourceforge.owlapi</groupId>
<version>4.3.0</version>
</parent>

<dependency>
<groupId>net.sourceforge.owlapi</groupId>
<artifactId>owlapi-compatibility</artifactId>
<version>4.3.0</version>
</dependency>

非常感谢。

附注:我是法国人,如果我的语法不完美,抱歉

最佳答案

OWLAPI 不是面向 RDF 的,因此 RDF 相关类仅用于其解析基础结构,而不是用于输入使用 - 这就是为什么接口(interface)和实现可以在没有警告的情况下更改。

在这种情况下,您可以仅使用 api 模块接口(interface)来解决该问题。您添加的三元组是对象和数据属性断言,可以通过 OWLDataFactory 实例创建。

manager.addAxiom(factory.getOWLObjectPropertyAssertionAxiom(likes, tom, anna);
manager.addAxiom(factory.getOWLDataPropertyAssertionAxiom(age, tom, factory.getOWLLiteral(35));

关于java - 将 RDF-triple 添加到 owl 本体中 (OWL API 4.3.0),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44505701/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com