我正面临我所说的问题,但可能不是。
对于某些需求,我正在通过 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));
}
隔江千里
相关分类