如何使用耶拿命令行工具"sparql"进行推理?



A|_P(p1,p2(||_M(m1,m2(|B

我想得到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>

阅读您的问题时,不清楚您是想为问题编写一些代码,还是只想使用一些工具-我会尝试给出另一种"编写代码"的答案,因为这最适合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/)

也许这对某些读者仍然有用。

Jena行命令接受汇编程序描述文件作为输入tarql通过--desc选项支持这一点,因此应该可以描述由推理模型和数据支持的数据集,然后对其运行查询

另一种更通用的选择,可以应用于任何现有的端点,可能是在数据之上运行Fuseki,并启用推理(或任何其他三重存储(。然后使用SPARQL语法进行联合查询。

最新更新