【问题标题】:list resources of qualifiedCardinality restriction with jena使用 jena 列出合格基数限制的资源
【发布时间】:2016-12-26 21:04:59
【问题描述】:

我是 jena 库的新手,想列出所有资源、属性、qualifiedCardinality 限制的数据类型。

我的限制:

...
<rdfs:subClassOf>
  <owl:Restriction>
    <owl:onProperty         rdf:resource="http://purl.oclc.org/NET/ssnx/ssn#sensingMethodUsed"/>
    <owl:onClass rdf:resource="http://purl.oclc.org/NET/ssnx/ssn#Sensing"/>
    <owl:qualifiedCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">1</owl:qualifiedCardinality>
  </owl:Restriction>
</rdfs:subClassOf>
<rdfs:subClassOf>
  <owl:Restriction>
    <owl:onProperty rdf:resource="http://purl.oclc.org/NET/ssnx/ssn#featureOfInterest"/>
    <owl:onClass rdf:resource="http://purl.oclc.org/NET/ssnx/ssn#FeatureOfInterest"/>
    <owl:qualifiedCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">1</owl:qualifiedCardinality>
  </owl:Restriction>
</rdfs:subClassOf>
...

所需的字符串输出:

qualcard sensingMethodUsed nonNegativeIteger 1 Sensing                        
qualcard featureOfInterest nonNegativeIteger 1 FeatureOfInterest

请有人帮帮我。

【问题讨论】:

    标签: java jena ontology


    【解决方案1】:

    sn-p 显示它是 OWL2 本体。 Jena 仅支持 OWL1(参见包 org.apache.jena.ontology)。 但作为一个选项,您可以使用来自ONT-APIcom.github.owlcs.ontapi.jena.model.OntModel,它完全类似于 org.apache.jena.ontology.OntModel,但适用于 OWL2 规范。 ONT-API 是一个基于 jena 的库。

    查看示例:

        // build the model with qualified exact cardinality object property restrictions:
        String ns = "http://purl.oclc.org/NET/ssnx/ssn#";
        OntModel m = OntModelFactory.createModel();
        m.setNsPrefixes(OntModelFactory.STANDARD);
        OntObjectProperty op1 = m.createObjectProperty(ns + "sensingMethodUsed");
        OntClass c1 = m.createOntClass(ns + "Sensing");
        OntObjectProperty op2 = m.createObjectProperty(ns + "featureOfInterest");
        OntClass c2 = m.createOntClass(ns + "FeatureOfInterest");
        m.createOntClass("http://example.com#clazz")
                .addSuperClass(m.createObjectCardinality(op1, 1, c1))
                .addSuperClass(m.createObjectCardinality(op2, 1, c2));
    
        // printing:
        m.write(System.out, "rdf/xml");
        System.out.println();
        // list all exact cardinality restrictions:
        m.ontObjects(OntClass.ObjectCardinality.class).forEach(c -> {
            int cardinality = c.getCardinality();
            OntClass onClass = c.getValue(); // cannot be null, owl:Thing if it is unqualified restriction
            OntObjectProperty onProperty = c.getProperty();
            OntDataRange dt = m.getDatatype(XSD.nonNegativeInteger); // only this DT is allowed
            System.out.printf("qualcard %s %s %d %s%n",
                    onProperty.getLocalName(), dt.getLocalName(), cardinality, onClass.getLocalName());
        });
    

    这个例子的输出是:

    <rdf:RDF
        xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
        xmlns:dc="http://purl.org/dc/elements/1.1/"
        xmlns:eg="http://www.example.org/"
        xmlns:vcard="http://www.w3.org/2001/vcard-rdf/3.0#"
        xmlns:owl="http://www.w3.org/2002/07/owl#"
        xmlns:ja="http://jena.hpl.hp.com/2005/11/Assembler#"
        xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
        xmlns:rss="http://purl.org/rss/1.0/"
        xmlns:xsd="http://www.w3.org/2001/XMLSchema#">
      <owl:Ontology/>
      <owl:Class rdf:about="http://purl.oclc.org/NET/ssnx/ssn#FeatureOfInterest"/>
      <owl:Class rdf:about="http://purl.oclc.org/NET/ssnx/ssn#Sensing"/>
      <owl:Class rdf:about="http://example.com#clazz">
        <rdfs:subClassOf>
          <owl:Restriction>
            <owl:onClass rdf:resource="http://purl.oclc.org/NET/ssnx/ssn#FeatureOfInterest"/>
            <owl:qualifiedCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger"
            >1</owl:qualifiedCardinality>
            <owl:onProperty>
              <owl:ObjectProperty rdf:about="http://purl.oclc.org/NET/ssnx/ssn#featureOfInterest"/>
            </owl:onProperty>
          </owl:Restriction>
        </rdfs:subClassOf>
        <rdfs:subClassOf>
          <owl:Restriction>
            <owl:onClass rdf:resource="http://purl.oclc.org/NET/ssnx/ssn#Sensing"/>
            <owl:qualifiedCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger"
            >1</owl:qualifiedCardinality>
            <owl:onProperty>
              <owl:ObjectProperty rdf:about="http://purl.oclc.org/NET/ssnx/ssn#sensingMethodUsed"/>
            </owl:onProperty>
          </owl:Restriction>
        </rdfs:subClassOf>
      </owl:Class>
    </rdf:RDF>
    
    qualcard featureOfInterest nonNegativeInteger 1 FeatureOfInterest
    qualcard sensingMethodUsed nonNegativeInteger 1 Sensing
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-11
      • 2015-06-20
      • 2018-08-27
      • 1970-01-01
      • 1970-01-01
      • 2011-04-10
      • 2021-10-24
      • 1970-01-01
      相关资源
      最近更新 更多