我发现了一些关于两者的简短文章,对我而言,听起来两者都是通过逻辑来解决问题,类似于Prolog的工作原理.我必须补充一点,我是这个领域的新手,所以我可能错了.非常错误.
这是我第一次在这里写作,但我真的遇到了一个问题:是否有可能在No-SQL数据库上使用Jena推理器,比如Neo4J,已经充满了数据?
我有一个Neo4J的图表代表了一堆三元组,我想在它们上使用Jena API和Jena推理器.我考虑过使用Jena的SDB/TDB组件,但我不知道如何将数据实际加载到我的模型中,因为SDB组件似乎只适用于SQL数据库而且整个TDB javadoc似乎有点太多了.我是否应该为TDB模型定义某种配置文件?
非常感谢你的帮助.
假设我们有两个名为People和 的类Disease。这些类通过对象属性相关has。
:People :has :Disease
Run Code Online (Sandbox Code Playgroud)
People有子类(或个体)John,并且Disease有子类(或个体)Cancer。
:John a :People
:Cancer a :Disease
Run Code Online (Sandbox Code Playgroud)
如何通过推理得到这些子类之间的关系呢?
:John :has :Cancer
Run Code Online (Sandbox Code Playgroud) 我目前在Protégé4中创建了一个关于发明的本体论.
我宣布:
fulfillsInvention和Need仍然在Protégé,我的课程发明由以下断言定义:
Invention subClassOf fulfills exactly 1 Need
Run Code Online (Sandbox Code Playgroud)
这意味着我不希望任何类型的个体Invention不是fulfills一个Need或多个.
为了验证这一说法,我创建了一个名为类型发明的个人Boots和类型的极品两个人分别叫Move_faster和Eat_faster.
我断言,Boots fulfills Move_faster并且Boots fulfills Eat_faster,这应该打破我的一致性,因为发明应该只满足一个需要.
但是,当我推出HermiT推理器时,我的本体仍然是一致的,即使在以下情况下:
Boots满足什么Boots 满足任何不是的人 Need这是正常的吗?
谢谢
我对 GitHub 上 Matthew Horridge 的 owlexplanation 项目有疑问。
在README文件中有以下代码:
import org.semanticweb.owl.explanation.api.*;
import org.semanticweb.owlapi.model.*;
import org.semanticweb.owlapi.reasoner.OWLReasonerFactory;
OWLReasonerFactory rf = ; // Get hold of a reasoner factory
OWLOntology ont = ; // Reference to an OWLOntology
// Create the explanation generator factory which uses reasoners provided by the specified
// reasoner factory
ExplanationGeneratorFactory<OWLAxiom> genFac = ExplanationManager.createExplanationGeneratorFactory(rf);
// Now create the actual explanation generator for our ontology
ExplanationGenerator<OWLAxiom> gen = genFac.createExplanationGenerator(ont);
// Ask for explanations for some entailment
OWLAxiom entailment ; // …Run Code Online (Sandbox Code Playgroud) 我有一个严重的问题,让任何推理器运行起来.此外,文档中的示例:https://jena.apache.org/documentation/inference/ 在此处不起作用.我将示例转移到单元测试中,以便可以更容易地再现问题.
推理仅限于某些环境,如空间JDK等,或者我得到了错误?
谢谢
这里的示例代码(作为java单元测试):
import static org.junit.Assert.assertNotNull;
import java.io.PrintWriter;
import java.util.Iterator;
import org.junit.Before;
import org.junit.Test;
import com.hp.hpl.jena.rdf.model.InfModel;
import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.rdf.model.ModelFactory;
import com.hp.hpl.jena.rdf.model.Property;
import com.hp.hpl.jena.rdf.model.Resource;
import com.hp.hpl.jena.rdf.model.Statement;
import com.hp.hpl.jena.rdf.model.StmtIterator;
import com.hp.hpl.jena.reasoner.Derivation;
import com.hp.hpl.jena.reasoner.rulesys.GenericRuleReasoner;
import com.hp.hpl.jena.reasoner.rulesys.Rule;
import com.hp.hpl.jena.vocabulary.RDFS;
public class ReasonerTest {
String NS = "urn:x-hp-jena:eg/";
// Build a trivial example data set
Model model = ModelFactory.createDefaultModel();
InfModel inf;
Resource A = model.createResource(NS + "A");
Resource B = model.createResource(NS + "B");
Resource C = model.createResource(NS + "C"); …Run Code Online (Sandbox Code Playgroud)