标签: owl

推断使用耶拿

InfModel infmodel = ModelFactory.createInfModel(reasoner, m);
Resource vegetarian = infmodel.getResource(source + "Vegetarian");
Resource margherita = infmodel.getResource(source + "Example-Margherita");
if (infmodel.contains(margherita, RDF., vegetarian)) {
        System.out.println("Margherita is a memberOf Vegetarian pizza");
    }
Run Code Online (Sandbox Code Playgroud)

上面给出的例子是由正式的pizza.owl形成的.在这只猫头鹰中,Example-Margherita是Margherita类的一个人.所以,它已经写在owl文件中了.然而,问题在于推理者应该推断出margherita例子也应该是素食披萨.任何人都可以举个例子来说明如何找到像Protege这样的个体可能的推断类吗?(Protege正确地推断出Example-Margherita是一个素食比萨饼.但是,我不能以编程方式推断)

inference owl jena

6
推荐指数
1
解决办法
5869
查看次数

使用Jena获取对类的OWL限制

使用披萨本体,我希望能够查找American披萨的所有浇头.如果我在Protégé打开本体,我可以看到American披萨有以下限制:

hasTopping some MozerellaTopping
hasTopping some TomatoTopping
Run Code Online (Sandbox Code Playgroud)

如何通过Jena以编程方式获取相同的信息?

java rdf owl jena

6
推荐指数
1
解决办法
2421
查看次数

如何使用Java中的XPath访问OWL文档?

我有一个XML文件形式的OWL文档.我想从这个文档中提取元素.我的代码适用于简单的XML文档,但它不适用于OWL XML文档.

我实际上是想获得这个元素:/rdf:RDF/owl:Ontology/rdfs:label为此我做了这个:

 DocumentBuilder builder = builderfactory.newDocumentBuilder();
    Document xmlDocument = builder.parse(
            new File(XpathMain.class.getResource("person.xml").getFile()));

    XPathFactory factory = javax.xml.xpath.XPathFactory.newInstance();
    XPath xPath = factory.newXPath();
    XPathExpression xPathExpression = xPath.compile("/rdf:RDF/owl:Ontology/rdfs:label/text()");
    String nameOfTheBook = xPathExpression.evaluate(xmlDocument,XPathConstants.STRING).toString();
Run Code Online (Sandbox Code Playgroud)

我也试过这样只提取rdfs:label元素:

 XPathExpression xPathExpression = xPath.compile("//rdfs:label");        
 NodeList nodes = (NodeList) xPathExpression.evaluate(xmlDocument, XPathConstants.NODESET);
Run Code Online (Sandbox Code Playgroud)

但是这个节点列表是空的.

请让我知道我哪里出错了.我正在使用Java XPath API.

java xpath rdf owl

6
推荐指数
2
解决办法
1272
查看次数

如何在Protégé中扩展本体与其他标准本体?

我正在使用Protégé构建本体,但是想用其他标准本体扩展它,例如frbr,prov和org.是否有标准的方法将我们的本体与这些标准本体集成在一起,还是我们可以将这些本体相互合并?我想用Protégé完成这些任务.

rdf owl ontology protege4 semantics

6
推荐指数
1
解决办法
2110
查看次数

为什么OWL Full无法确定?

我一直在寻找为什么OWL Full无法确定的原因,但是我还没有找到一个易于理解的示例来使我理解它。

我发现有陈述解释这是由于“封闭性”引起的,并且还与OWL Full可以同时具有作为属性的类和也作为个人的类这一事实有关。

但是我不理解这些陈述之间的关系。

semantic-web owl description-logic decidable

6
推荐指数
2
解决办法
371
查看次数

rdf:type 上的属性链推理

我试图让 Pellet 将属性从类传播到属于这些类的个人。例如,如果我有一个带有属性 X 的类 A 和带有 rdf:type=Class A 的个人 B,我希望个人 B 在运行推理器后拥有属性 X。我正在使用OWL 2 新功能页面上引用的属性链包含技术。如果我在属性链中使用我自己的自定义属性,则此技术可以完美运行,但如果我尝试使用 rdf:type 本身,则它不起作用。以下是我的 RDF/XML 的一些相关片段。

本体类(由 Jena 生成;注意“传播”属性,因为这是我试图传播给类 Person 的个人的内容):

<rdf:Description rdf:about="http://family/person">
    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Thing"/>
    <owl:sameAs rdf:resource="http://family/person"/>
    <rdfs:subClassOf rdf:resource="http://www.w3.org/2002/07/owl#Thing"/>
    <owl:equivalentClass rdf:resource="http://family/person"/>
    <owl:disjointWith rdf:resource="http://www.w3.org/2002/07/owl#Nothing"/>
    <j.1:spread rdf:resource="http://spread/specificSpread"/>
    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
</rdf:Description>
Run Code Online (Sandbox Code Playgroud)

“Spread”属性本身(由我手动编写,不是用 Jena 生成的,因为 Jena 的 API 不支持对象属性链):

<rdf:Description rdf:about="http://spread/generalSpread">
    <owl:propertyChainAxiom rdf:parseType="Collection">
        <owl:ObjectProperty rdf:about="http://www.w3.org/1999/02/22-rdf-syntax-ns#type"/>
        <owl:ObjectProperty rdf:about="http://spread/generalSpread"/>
    </owl:propertyChainAxiom>
</rdf:Description>
Run Code Online (Sandbox Code Playgroud)

在推理之前,俄狄浦斯人长这样:

<rdf:Description rdf:about="http://family/Oedipus">
    <rdf:type rdf:resource="http://family/person"/>
</rdf:Description>
Run Code Online (Sandbox Code Playgroud)

这个想法是,经过推理,它看起来像这样:

<rdf:Description rdf:about="http://family/Oedipus">
    <rdf:type rdf:resource="http://family/person"/>
    <j.1:spread rdf:resource="http://spread/specificSpread"/>
</rdf:Description>
Run Code Online (Sandbox Code Playgroud)

我有一种感觉,将 rdf:type 称为 rdf:resource 可能是事情变得棘手的地方,因为我很确定它不是资源。但我不确定如何解决它。我也通过 …

rdf semantic-web owl pellet

5
推荐指数
1
解决办法
1748
查看次数

猫头鹰 - 保护不正确?如何准确定义一个"素食"类?

我已经被困了两天,现在试图理解为什么下面的场景不起作用:

截图:http://dl.dropbox.com/u/4677548/screenshots.html

我有一个VegetarianFood类(Food的子类)相当于"Food and(Eggs or MilkAndDerivates或VeganFood)",你可以在屏幕截图中看到1

反过来,VeganFood课程相当于其他课程(NutsAndSeeds,谷物,水果等...)截图2

你可以看到有两个人(切达奶酪和腰果)创建为MilkAndDerivates和NutsAndSeeds截图3,他们被正确推断为VegetarianFood和VeganFood成员

然后我创建了两个人作为食谱,一个只有腰果(PastaVega)和一个同时有切达干酪和腰果(PastaVege),使用对象属性hasIngredient截图4和5

他们已经推断为配方......但没有落入VegatarianRecipe和VeganRecipe的类别,定义如下截图6和7

我没有线索,为什么他们不被推断为VegetarianRecipe(或素食主义者)?我错过了什么?

编辑:

如果我改变VegetarianRecipe(或素食主义者)从"食谱和(只有素食者食物)"

"食谱和(有一些素食食品)"

截图8

接受个人展示,但当然这不是我想要做的,因为这将包括混合肉和素食食谱的食谱.那么如何定义一个素食和纯素食品类,以便推理员在食谱素食或素食时正确推断????

rdf semantic-web owl ontology protege

5
推荐指数
1
解决办法
1390
查看次数

从rdf模型将本体读入GraphX

我正在尝试通过利用 owl/RDF 格式使用 Spark (GraphX) 构建基于图形的 uniprot 数据视图。我正在尝试使用 apache jena 解析数据,但我无法理解 rdf 文件的结构。为了更好地说明,这里有一个我正在尝试处理的文件类型的示例。 http://pastebin.com/iSeGs0RZ

为了我的需要,我必须存储/操作例如
通过我需要保存令牌“seeAlso”和?predicate?“ http://purl.uniprot.org/string/9606.ENSP00000418960 ”尝试在 java/scala 中加载模型时 print(model) 显示大部分信息,但我找不到从文件中提取所有内容的方法.

这是我用来在模型中读取的内容: object runner { val inputFileName = "dataset/test2.xml"

  def main(args: Array[String]) {
    val model = ModelFactory.createDefaultModel()

    // use the FileManager to find the input file
    val in = FileManager.get().open(inputFileName)
    if (in == null) {
      throw new IllegalArgumentException(
        "File: " + inputFileName + " not found")
    }
    model.read(in, "RDF/XML")
    val items = model.listObjects()
    var count = 0
    while (items.hasNext) …
Run Code Online (Sandbox Code Playgroud)

java rdf scala owl jena

5
推荐指数
0
解决办法
678
查看次数

OWLAPI:具有导入功能的负载本体如何工作?

我有本体论,其中有另一个本体论.我想知道如何OWLOntologyManagerloadOntologyFromOntologyDocument(OWLOntologyDocumentSource documentSource, OWLOntologyLoaderConfiguration config)内部工作原理.我已经使用OWLOntologyLoaderConfiguration类来处理Missing Imports(想知道在MissingImportListener类的帮助下哪个导入失败).

我能听到丢失的进口.但是,如果我的任何本体文件导入了WEB资源,则上面的方法从其位置获取它.有什么方法可以限制对WEB资源的调用,并要求加载我在系统中的副本吗?

例如,如果BBC的运动本体加载方法在内部加载本体:

  1. http://purl.org/NET/c4dm/event.owl
  2. FOAF(http://xmlns.com/foaf/0.1/)
  3. 时间(http://www.w3.org/2006/time)

就像在Protege中打开BBC的运动本体一样.

java owl ontology protege owl-api

5
推荐指数
1
解决办法
602
查看次数

如何在Neo4j中进行推理或推断?

我在Neo4j中创建了一个语义图。是否可以在Neo4j中使用OWL推理机?还是任何推理引擎?

虽然这里已经提到,但是我找不到任何解决方案或API。

感谢您的任何建议!

owl neo4j graph-databases inference-engine reasoner

5
推荐指数
1
解决办法
1858
查看次数