如何使用Jena命令行工具' sparql'?进行推理

时间:2014-06-30 14:01:03

标签: sparql jena

一个 | _P(P1,P2) | | _M(M1,M2) | 乙

我想得到A的所有实例。

我的查询是

SELECT ?x
    WHERE { 
            ?x rdf:type :A .} 

输出: A(P1,P2,M1,M2)

如何使用命令行工具'sparql'获得此结果?。意味着我想在这里得到推论。

我的OWL文件在这里:

<rdf:RDF xmlns="http://www.semanticweb.org/chetan/ontologies/2014/5/untitled-ontology-11#"
     xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
     xmlns:owl="http://www.w3.org/2002/07/owl#"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    <owl:Ontology rdf:about="http://www.semanticweb.org/chetan/ontologies/2014/5/untitled-ontology-11"/>

    <owl:Class rdf:about="http://www.semanticweb.org/chetan/ontologies/2014/5/untitled-ontology-11#A">
    <owl:Class rdf:about="http://www.semanticweb.org/chetan/ontologies/2014/5/untitled-ontology-11#B">
    <owl:Class rdf:about="http://www.semanticweb.org/chetan/ontologies/2014/5/untitled-ontology-11#M">
        <rdfs:subClassOf rdf:resource="http://www.semanticweb.org/chetan/ontologies/2014/5/untitled-ontology-11#P"/>
    </owl:Class>

    <owl:Class rdf:about="http://www.semanticweb.org/chetan/ontologies/2014/5/untitled-ontology-11#P">
        <rdfs:subClassOf rdf:resource="http://www.semanticweb.org/chetan/ontologies/2014/5/untitled-ontology-11#A"/>
    </owl:Class>

    <owl:NamedIndividual rdf:about="http://www.semanticweb.org/chetan/ontologies/2014/5/untitled-ontology-11#m1">
        <rdf:type rdf:resource="http://www.semanticweb.org/chetan/ontologies/2014/5/untitled-ontology-11#M"/>
    </owl:NamedIndividual>

    <owl:NamedIndividual rdf:about="http://www.semanticweb.org/chetan/ontologies/2014/5/untitled-ontology-11#m2">
        <rdf:type rdf:resource="http://www.semanticweb.org/chetan/ontologies/2014/5/untitled-ontology-11#M"/>
    </owl:NamedIndividual>

    <owl:NamedIndividual rdf:about="http://www.semanticweb.org/chetan/ontologies/2014/5/untitled-ontology-11#p1">
        <rdf:type rdf:resource="http://www.semanticweb.org/chetan/ontologies/2014/5/untitled-ontology-11#P"/>
    </owl:NamedIndividual>

    <owl:NamedIndividual rdf:about="http://www.semanticweb.org/chetan/ontologies/2014/5/untitled-ontology-11#p2">
        <rdf:type rdf:resource="http://www.semanticweb.org/chetan/ontologies/2014/5/untitled-ontology-11#P"/>
    </owl:NamedIndividual>
</rdf:RDF>

2 个答案:

答案 0 :(得分:2)

阅读您的问题不清楚您是否想为您的问题编写一些代码,或者您是否只想使用某种工具 - 我会尝试为替代方案提供答案&#34;编写代码&# 34;因为这最适合stackoverflow:

粗略地说,您必须使用Jena API中提供的一种方法将您的owl文件加载到Jena OntModel中。 (http://jena.apache.org/documentation/javadoc/jena/) 不要忘记指定您想要的推理类型。 然后,您可以使用ARQ API(http://jena.apache.org/documentation/javadoc/arq/)来执行针对OntModel的sparql查询。 Jena主页上也应该有一些代码示例。

如果你只想使用Jena提供的一些命令行工具,我不确定这是否允许指定一些推理。我将在Jena文档站点(http://jena.apache.org/tutorials/

上的教程中开始搜索

答案 1 :(得分:0)

对某些读者来说,这可能仍然有用。

Jena line命令接受assembler description files作为输入。 &#39; tarql&#39;支持the --desc option,因此应该可以描述由推理模型和数据支持的数据集,然后针对它运行查询。

另一种更通用且可应用于任何现有端点的替代方案可能是在您的数据之上运行Fuseki并启用推理(或任何其他三重存储)。然后是use the SPARQL syntax to do federated queries