OWL-API 5.1.6 SWRL 规则生成和 RDFXMLDocumentFormat

什么:

我正面临我所说的问题,但可能不是。

对于某些需求,我正在通过 OWL API 创建一系列 swrl 规则,这些规则在序列化后将通过简单的文件上传添加到 stardog 存储库中。

例如,我修改了我的代码以生成两个非常简单的 swrl 规则公理:对于给定的术语列表,如果一个项目具有所有术语,则必须将其分类为参数中的分类类。

在这里,我选择了

  • 番茄 -> 关于蔬菜

  • 猴子,驴 -> 关于动物

如何:

我使用这个版本:

[根据伊格纳齐奥的提示进行编辑]

compile group: 'net.sourceforge.owlapi', name: 'owlapi-distribution', version: '5.1.6'

所以我有类似的东西来产生 swrl 规则公理:

import org.semanticweb.owlapi.apibinding.OWLManager;

import org.semanticweb.owlapi.formats.RDFXMLDocumentFormat;

import org.semanticweb.owlapi.model.*;


import java.io.File;

import java.util.Arrays;

import java.util.HashSet;

import java.util.List;

import java.util.Set;


public class StackOverflowExemple {


private final static String BASE_IRI          = "http://foo.bar/exemple.owl";

private final static String CLASS_ITEM        = BASE_IRI + "#Item";

private final static String CLASS_TERM        = BASE_IRI + "#Term";

private final static String PROP_ISCLASSIFIED = BASE_IRI + "#isClassified";

private final static String PROP_HASTERM      = BASE_IRI + "#hasTerm";

private final static String IND_IT            = BASE_IRI + "#it";


public static void main(String[] args) throws Exception {

   OWLOntologyManager manager = OWLManager.createOWLOntologyManager();

   OWLOntology onto = manager.createOntology();


   SWRLRule rule1 = createRule(manager, Arrays.asList(new String[]{"tomato"}), BASE_IRI + "#aboutVegetables");

   manager.applyChange(new AddAxiom(onto, rule1));


   SWRLRule rule2 = createRule(manager, Arrays.asList(new String[]{"monkey", "donkey"}), BASE_IRI + "#aboutAnimals");

   manager.applyChange(new AddAxiom(onto, rule2));


   File output = new File("foo.rdf");

   OWLDocumentFormat format = new RDFXMLDocumentFormat();

   manager.saveOntology(onto, format, IRI.create(output));

}



青春有我
浏览 320回答 2
2回答

隔江千里

Owlapi 3.5.0 很古老。您看到的结果似乎是 RDF/XML 呈现中的一个问题。尝试两件事:改用函数式语法或 OWL/XML,看看这是否有帮助使用较新的 owlapi 版本。您的代码应该使用 5.1.6 进行编译,并进行细微更改,其中大部分应该仅针对包名称。编辑:如前所述,实际使用的版本是 5.1.6。看到的问题是一个错误,已在 5.1.7 版中修复。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java