例如,给定xsd:string
,我希望获得相应的枚举常量owl2datatype.xsd_string。
我通过以下几种方式进行了尝试:
- OWL2Datatype strDT = OWL2Datatype.valueOf("xsd:string")
- OWL2Datatype strDT = OWL2Datatype.valueOf("string")
- OWL2Datatype owl2dt = OWL2Datatype.valueOf(OWL2Datatype.XSD_STRING.getIRI().toString());
但它们都失败了,抛出了一个异常:
对于第1个问题,签名具有误导性:虽然看起来valueof()
是由owl2datatype
定义的,但实际上它是为enum
定义的-所有java枚举都得到它,对其参数起作用的字符串是“xsd_string”
,即枚举中变量的实际名称。
对于问题2,问题是xsd是一个众所周知的名称空间缩写,但它仍然是任意的--为了转换为数据类型的完整IRI,您需要一个ShortFormProvider来反转映射。我可以看到这将是一个有用的功能,但我不确定它是提供了目前。我会提出一个问题。
这已经添加到OWLAPI中,现在有两种方法可以完成您所需的操作,在本测试中进行了说明:
@Test
public void shouldParseXSDSTRING() {
// given
OWLDataFactory df = OWLManager.getOWLDataFactory();
String s = "xsd:string";
// when
XSDVocabulary v = XSDVocabulary.parseShortName(s);
// then
assertEquals(XSDVocabulary.STRING, v);
assertEquals(OWL2Datatype.XSD_STRING.getDatatype(df),
df.getOWLDatatype(v.getIRI()));
}
因此,一种方法是通过OWL2Datatype和OWLDataFactory:
OWLDatatype string = OWL2Datatype.XSD_STRING.getDatatype(df)
另一个是使用XSDV词汇表和OWLDataFactory:
OWLDatatype string = df.getOWLDatatype(XSDVocabulary.parseShortName("xsd:string"));
有一种方法可以找到类的所有命名子类,而不需要为(OWLClass子类:reasoner.GetSubclasses(clazz,true).GetFlatened())使用推理器
我有2个本体论(通过蛋白质生成)。 本体(A.owl):- 本体论 我已经导入了里面的。当我用本体论运行赫敏推理器时。它抛出和
这是我的OWL文件的一部分: 如何仅从属性中获取
这将打印ObjectProperty的名称,例如http://purl.obolibrary.org/obo/bfo0000050。 我想知道如何获得rdfs:label,例如,part of
我试图通过OWL-API3.5.0从数据模型以编程方式构建一个OWL文件。 通常,模型遵循A->B的形式,其中关系(“->”)可以是一个子类,也可以是一个属性。 我想我有子类工作,但我不确定如何添加以下内容。 null 例如,对于,我有一个数据属性,还有一个。我当前的流程是: