java - 耶拿多个 rdfs :label

标签 java jena ontology owl rdfs

我是 Jena 和 Owl 的新手,他们给了我一个本体。我可以使用 Protege 4.2 打开它,没有任何问题,但是当我尝试使用 Jena 打开它时,我得到: 线程“main”org.apache.jena.riot.RiotException中出现异常:{E201}属性元素的多个子元素

我一直在本体论中研究它可能是什么,我注意到某些元素在一种语言中具有多个标签,例如:

<AnnotationAssertion>
    <AnnotationProperty abbreviatedIRI="rdfs:label"/>
    <AbbreviatedIRI>atc:A02BX02</AbbreviatedIRI>
    <Literal xml:lang="no" datatypeIRI="&rdf;PlainLiteral">Sukralfat</Literal>
</AnnotationAssertion>
<AnnotationAssertion>
    <AnnotationProperty abbreviatedIRI="rdfs:label"/>
    <AbbreviatedIRI>atc:A02BX02</AbbreviatedIRI>
    <Literal xml:lang="no" datatypeIRI="&rdf;PlainLiteral">antepsin</Literal>
</AnnotationAssertion>
<AnnotationAssertion>
    <AnnotationProperty abbreviatedIRI="rdfs:label"/>
    <AbbreviatedIRI>atc:A02BX02</AbbreviatedIRI>
    <Literal datatypeIRI="&xsd;string">sucralfate</Literal>
</AnnotationAssertion>
<AnnotationAssertion>
    <AnnotationProperty abbreviatedIRI="rdfs:label"/>
    <AbbreviatedIRI>atc:A02BX02</AbbreviatedIRI>
    <Literal xml:lang="no" datatypeIRI="&rdf;PlainLiteral">sukralfat</Literal>
</AnnotationAssertion>

这会导致问题吗?我使用的所有代码都可以与其他本体一起使用,所以我认为它确实来自这个本体。 您知道什么可能导致此异常吗?

编辑

所以我把情况降到最低,但仍然遇到同样的错误:

<?xml version="1.0"?>

<!DOCTYPE Ontology [
    <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" >
    <!ENTITY xml "http://www.w3.org/XML/1998/namespace" >
    <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" >
    <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
]>


<Ontology xmlns="http://www.w3.org/2002/07/owl#"
     xml:base="http://www.ebi.ac.uk/Rebholz-srv/atc/public/ontologies/atc.owl"
     xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
     xmlns:xml="http://www.w3.org/XML/1998/namespace"
     ontologyIRI="http://www.ebi.ac.uk/Rebholz-srv/atc/public/ontologies/atc.owl">
    <Prefix name="" IRI="http://www.ebi.ac.uk/Rebholz-srv/atc/public/ontologies/atc.owl#"/>
    <Prefix name="atc" IRI="http://www.legemiddelverket.no/Legemiddelsoek/Sider/Default.aspx#"/>
    <Prefix name="owl" IRI="http://www.w3.org/2002/07/owl#"/>
    <Prefix name="rdf" IRI="http://www.w3.org/1999/02/22-rdf-syntax-ns#"/>
    <Prefix name="xml" IRI="http://www.w3.org/XML/1998/namespace"/>
    <Prefix name="xsd" IRI="http://www.w3.org/2001/XMLSchema#"/>
    <Prefix name="rdfs" IRI="http://www.w3.org/2000/01/rdf-schema#"/>
    <Declaration>
        <Class abbreviatedIRI="atc:J"/>
    </Declaration>
    <AnnotationAssertion>
        <AnnotationProperty abbreviatedIRI="rdfs:label"/>
        <AbbreviatedIRI>atc:J</AbbreviatedIRI>
        <Literal datatypeIRI="&xsd;string">ANTIINFECTIVES FOR SYSTEMIC USE</Literal>
    </AnnotationAssertion>
</Ontology>

这是java代码:

InputStream in = FileManager.get().open(filename);
if (in == null) {
    throw new IllegalArgumentException("File: " + filename + " not found");
}
model = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM);
model.read(in, null);
try {
    in.close();
} catch (IOException e) {
    System.err.println("Couldn't close the inputStream");
}

这有帮助吗?我真的不知道了...

最佳答案

这是一个 OWL2 XML格式化文件。 Jena 不支持该格式,但它支持 RDF/XML 中的 OWL。

换句话说,它期待错误的 XML 风格并感到困惑。

尝试以其他格式保存。

关于java - 耶拿多个 rdfs :label,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16089692/

相关文章:

java - 使用 Java 读取包含特殊字符(&、- 等)的 XML 文档节点

java - GridBagLayout 创建非常小的面板

java - 通过 Java 代码插入一些数据时,Sparql 查询不会更新

rdf - 猫头鹰 rdfs :langString and restricting its allowed languages

plugins - Protege OntoGraf 插件无法工作

android - 在 Android 上使用 Protege owl 本体

java - 如何在java中扫描 ':'分隔整数输入?

java - 在 Scala 中使用私有(private)构造函数和工厂类?

java - Model.listSubjectsWithProperty(Property p, String o) 不列出具有相同字符串值的类型文字的资源

java - Stardog 自定义聚合函数在耶拿不可用