我的目标如下:
#IndividualSimpleSubType
#SimpleSubType
添加到此个体(#SimpleSubType
是#SimpleType
的子类)#PropertyValue1
#HasProperty1
#PropertyValue2
#HasProperty2
本体中已经存在以下信息:
OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
try {
OWLOntology ontology = manager.loadOntologyFromOntologyDocument(new File("ontology.owl"));
IRI ontologyIRI = ontology.getOntologyID().getOntologyIRI();
PrefixManager prefixManager = new DefaultPrefixManager(ontologyIRI.toString().concat("#"));
OWLDataFactory dataFactory = manager.getOWLDataFactory();
OWLReasonerFactory reasonerFactory = new StructuralReasonerFactory();
OWLReasoner reasoner = reasonerFactory.createReasoner(ontology);
reasoner.precomputeInferences();
// Get all subclasses of SimpleType stored within the loaded ontology.
OWLClassNodeSet clsSimpleSubTypes = new OWLClassNodeSet();
OWLClass simpleTypeClass = dataFactory.getOWLClass(":SimpleType", prefixManager);
clsSimpleSubTypes.addDifferentEntities(reasoner.getSubClasses(simpleTypeClass, true).getFlattened());
// Get two object properties stored within the loaded ontology.
OWLObjectPropertyExpression objProperty1 = dataFactory.getOWLObjectProperty(IRI.create(ontologyIRI + "#hasProperty1"));
OWLObjectPropertyExpression objProperty2 = dataFactory.getOWLObjectProperty(IRI.create(ontologyIRI + "#hasProperty2"));
// Get two property values stored within the loaded ontology.
OWLNamedIndividual propertyValue1 = dataFactory.getOWLNamedIndividual(IRI.create(ontologyIRI + "#PropertyValue1"));
OWLNamedIndividual propertyValue2 = dataFactory.getOWLNamedIndividual(IRI.create(ontologyIRI + "#PropertyValue2"));
for (OWLClass cls : clsSimpleSubTypes.getFlattened())
{
if (cls.getIRI().toString().endsWith("#SimpleSubType")) {
// Create the new individual
OWLNamedIndividual po = factory.getOWLNamedIndividual(IRI.create(ontologyIRI + "#individualSimpleSubType"));
// individualSimpleSubType is of type SimpleSubType
OWLClassAssertionAxiom assertion = dataFactory.getOWLClassAssertionAxiom(cls, po);
manager.addAxiom(ontology, assertion);
// individualSimpleSubType has object property PropertyValue1
OWLObjectPropertyAssertionAxiom objProperty1Axiom = dataFactory.getOWLObjectPropertyAssertionAxiom(objProperty1, po, propertyValue1);
manager.addAxiom(ontology, objProperty1Axiom);
// individualSimpleSubType has object property PropertyValue2
OWLObjectPropertyAssertionAxiom objProperty2Axiom = dataFactory.getOWLObjectPropertyAssertionAxiom(objProperty2, po, propertyValue2);
manager.addAxiom(ontology, objProperty2Axiom);
break;
}
}
//File destinationFile = new File("ontology-new-data.owl");
//OWLOntologyFormat format = manager.getOntologyFormat(ontology);
//manager.saveOntology(ontology, format, IRI.create(destinationFile.toURI()));
manager.saveOntology(ontology);
} catch (OWLOntologyCreationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (OWLOntologyStorageException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
<!-- http://www.semanticweb.org/vincenzo/ontologies/2015/7/ontology.owl#individualSimpleSubType -->
<owl:NamedIndividual rdf:about="http://www.semantichtml" target="_blank">web.org/vincenzo/ontologies/2015/7/ontology.owl#individualSimpleSubType">
<rdf:type rdf:resource="http://www.semanticweb.org/vincenzo/ontologies/2015/7/ontology.owl#SimpleSubType"/>
<hasProperty1 rdf:resource="http://www.semanticweb.org/vincenzo/ontologies/2015/7/ontology.owl#PropertyValue1"/>
<hasProperty2 rdf:resource="http://www.semanticweb.org/vincenzo/ontologies/2015/7/ontology.owl#PropertyValue2"/>
</owl:NamedIndividual>
但是,如果我使用上面的Java代码,保存ontology还涉及到对其他行的修改:在文件中添加与上面相同的XML行,但也修改其他行,如下所示。
folliwing行写在上面的Java代码保存的OWL文件的开头(但当我在执行相同的修改后使用Protégé保存本体时,这些行不是写的)。
<!DOCTYPE rdf:RDF [
<!ENTITY terms "http://purl.org/dc/terms/" >
<!ENTITY owl "http://www.w3.org/2002/07/owl#" >
<!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" >
<!ENTITY skos "http://www.w3.org/2004/02/skos/core#" >
<!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" >
<!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
]>
然后,在一些标签的属性中添加了一定的前缀,所以:
这种怪异行为的原因是什么?
在我的Eclipse项目中,我导入了与OWL API 3.4.2相关的jar文件,该文件与Protegé4.3.0中集成的版本相同。
问题是当从文件中读取原始本体时,它的前缀没有被保留。这在OWL API的最新版本中得到了修正。3.5.2和4.0.2(4.1.0尚未发布)应该允许您找到本体格式对象中设置的前缀。
为了保证这些前缀也用于实体(例如,用于&rdf;
),您应该调用
XmlWriterPreferences.GetInstance().SetUseNamespaceEntities(true);
我需要在另一个相关实体更新后对一个实体执行更新。 我有两个实体:和,关系为1:N。两者都有字段。状态取决于所有子状态字段。因此,如果更新了一个,我需要重新计算的新状态并持久化/更新它。 我实现了一个监听器: 监听器在中进行了注释,并且正在正确调用它。但是,在流程完成后,仍然保持旧状态,即使使用正确的新状态调用。
我正在使用齐柏林飞艇0.6.2和火花2.0。 我尝试在循环中执行查询,但效果不是很好。 我需要循环一个数据帧的每一行,大约5000行,并执行一个查询,这将在另一个数据帧中增加一个值。 以下是我的尝试: 我试着从两个数据帧中提取一小部分,但仍然很慢。我觉得我做得不对。 知道如何快速更新数据帧吗?
接口说明 将数据整合到一个地方进行查询,Wish3DEarth团队新增了添加场景的接口,来进行数据的整合操作 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 POST /api/scene/1.0.0/add 是否需要登录 是 请求字段说明 参数 类型 请求类型 是否必须 说明 title string form 是 场景名称 descrip
如何更新一个 monorepo仓库中的某个依赖? 就是比如 monorepo中有个依赖叫 lodash 如何集体更新之,而不是一个一个改版本
问题内容: 我正在寻找@ font-face CSS规则的MDC页面,但我一无所获。我分别使用粗体 , 斜体 和 粗体+斜体文件 。如何将所有三个文件嵌入一条规则?例如,如果我有: 浏览器将不知道用于粗体显示的字体(因为该文件是DejaVuSansBold.ttf),因此它将默认为我可能不想要的字体。我如何才能告诉浏览器某种字体的所有不同变体? 问题答案: 解决方案似乎是添加多个规则,例如: 顺便
问题内容: 我正在NHibernate中对单个属性执行标准更新。但是,在提交事务时,sql更新似乎设置了我映射到表上的所有字段,即使它们没有更改。当然这不是Nhibernate中的正常行为吗?难道我做错了什么?谢谢 问题答案: 这是正常现象。您可以尝试添加到类定义中以覆盖此行为。