什么:我正面临我所说的问题,但可能不是。对于某些需求,我正在通过 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));}
2 回答

隔江千里
TA贡献1906条经验 获得超10个赞
Owlapi 3.5.0 很古老。您看到的结果似乎是 RDF/XML 呈现中的一个问题。
尝试两件事:
改用函数式语法或 OWL/XML,看看这是否有帮助
使用较新的 owlapi 版本。您的代码应该使用 5.1.6 进行编译,并进行细微更改,其中大部分应该仅针对包名称。
编辑:如前所述,实际使用的版本是 5.1.6。看到的问题是一个错误,已在 5.1.7 版中修复。
添加回答
举报
0/150
提交
取消