📄 rdfmtinferencer.java
字号:
if (! _checkRule[Rdfs10]) { return 0; } int nofInferred = 0; StatementIterator iter = new MemStatementIterator(_newThisIteration, null, _repository.RDF_TYPE_NODE, _repository.RDFS_CLASS_NODE); while (iter.hasNext()) { Statement st = iter.next(); ResourceNode xxx = (ResourceNode)st.getSubject(); boolean added = _addInferredStatement(xxx, _repository.RDFS_SUBCLASSOF_NODE, xxx); if (added) { nofInferred++; } } iter.close(); _updateTriggers(Rdfs10, nofInferred); return nofInferred; } /* rdfs11. * 11_1. xxx rdfs:subClassOf yyy && (nt) * yyy rdfs:subClassOf zzz --> (t1) * xxx rdfs:subClassOf zzz (t2) */ private int _applyRuleRdfs11_1() { if (! _checkRule[Rdfs11_1]) { return 0; } int nofInferred = 0; StatementIterator ntIter = new MemStatementIterator(_newThisIteration, null, _repository.RDFS_SUBCLASSOF_NODE, null); while (ntIter.hasNext()) { Statement nt = ntIter.next(); ResourceNode xxx = (ResourceNode)nt.getSubject(); ValueNode yyy = (ValueNode)nt.getObject(); if (yyy instanceof ResourceNode) { StatementIterator t1Iter = _repository.getStatements( (ResourceNode)yyy, _repository.RDFS_SUBCLASSOF_NODE, null, false); while (t1Iter.hasNext()) { Statement t1 = t1Iter.next(); ValueNode zzz = (ValueNode)t1.getObject(); if (zzz instanceof ResourceNode) { boolean added = _addInferredStatement(xxx, _repository.RDFS_SUBCLASSOF_NODE, zzz); if (added) { nofInferred++; } } } t1Iter.close(); } } ntIter.close(); _updateTriggers(Rdfs11_1, nofInferred); return nofInferred; } /* rdfs11. * 11_2. yyy rdfs:subClassOf zzz && (nt) * xxx rdfs:subClassOf yyy --> (t1) * xxx rdfs:subClassOf zzz (t2) */ private int _applyRuleRdfs11_2() { if (! _checkRule[Rdfs11_2]) { return 0; } int nofInferred = 0; StatementIterator ntIter = new MemStatementIterator(_newThisIteration, null, _repository.RDFS_SUBCLASSOF_NODE, null); while (ntIter.hasNext()) { Statement nt = ntIter.next(); ResourceNode yyy = (ResourceNode)nt.getSubject(); ValueNode zzz = (ValueNode)nt.getObject(); if (zzz instanceof ResourceNode) { StatementIterator t1Iter = _repository.getStatements(null, _repository.RDFS_SUBCLASSOF_NODE, yyy); while (t1Iter.hasNext()) { Statement t1 = t1Iter.next(); ResourceNode xxx = (ResourceNode)t1.getSubject(); boolean added = _addInferredStatement(xxx, _repository.RDFS_SUBCLASSOF_NODE, zzz); if (added) { nofInferred++; } } t1Iter.close(); } } ntIter.close(); _updateTriggers(Rdfs11_2, nofInferred); return nofInferred; } /* rdfs9. * 9_1. xxx rdfs:subClassOf yyy && (nt) * aaa rdf:type xxx --> (t1) * aaa rdf:type yyy (t2) */ private int _applyRuleRdfs9_1() { if (! _checkRule[Rdfs9_1]) { return 0; } int nofInferred = 0; StatementIterator ntIter = new MemStatementIterator(_newThisIteration, null, _repository.RDFS_SUBCLASSOF_NODE, null); while (ntIter.hasNext()) { Statement nt = ntIter.next(); ResourceNode xxx = (ResourceNode)nt.getSubject(); ValueNode yyy = (ValueNode)nt.getObject(); if (yyy instanceof ResourceNode) { StatementIterator t1Iter = _repository.getStatements(null, _repository.RDF_TYPE_NODE, xxx, false); while (t1Iter.hasNext()) { Statement t1 = t1Iter.next(); ResourceNode aaa = (ResourceNode)t1.getSubject(); boolean added = _addInferredStatement(aaa, _repository.RDF_TYPE_NODE, yyy); if (added) { nofInferred++; } } t1Iter.close(); } } ntIter.close(); _updateTriggers(Rdfs9_1, nofInferred); return nofInferred; } /* rdfs9. * 9_2. aaa rdf:type xxx && (nt) * xxx rdfs:subClassOf yyy --> (t1) * aaa rdf:type yyy (t2) */ private int _applyRuleRdfs9_2() { if (! _checkRule[Rdfs9_2]) { return 0; } int nofInferred = 0; StatementIterator ntIter = new MemStatementIterator(_newThisIteration, null, _repository.RDF_TYPE_NODE, null); while (ntIter.hasNext()) { Statement nt = ntIter.next(); ResourceNode aaa = (ResourceNode)nt.getSubject(); ValueNode xxx = (ValueNode)nt.getObject(); if (xxx instanceof ResourceNode) { StatementIterator t1Iter = _repository.getStatements( (ResourceNode)xxx, _repository.RDFS_SUBCLASSOF_NODE, null); while (t1Iter.hasNext()) { Statement t1 = t1Iter.next(); ValueNode yyy = (ValueNode)t1.getObject(); if (yyy instanceof ResourceNode) { boolean added = _addInferredStatement(aaa, _repository.RDF_TYPE_NODE, yyy); if (added) { nofInferred++; } } } t1Iter.close(); } } ntIter.close(); _updateTriggers(Rdfs9_2, nofInferred); return nofInferred; } /* rdfs12. * xxx rdf:type rdfs:ContainerMembershipProperty --> * xxx rdfs:subPropertyOf rdfs:member */ private int _applyRuleRdfs12() { if (! _checkRule[Rdfs12]) { return 0; } int nofInferred = 0; StatementIterator iter = new MemStatementIterator(_newThisIteration, null, _repository.RDF_TYPE_NODE, _repository.RDFS_CONTAINERMEMBERSHIPPROPERTY_NODE); while (iter.hasNext()) { Statement st = iter.next(); ResourceNode xxx = (ResourceNode)st.getSubject(); boolean added = _addInferredStatement(xxx, _repository.RDFS_SUBPROPERTYOF_NODE, _repository.RDFS_MEMBER_NODE); if (added) { nofInferred++; } } iter.close(); _updateTriggers(Rdfs12, nofInferred); return nofInferred; } /* rdfs13. * xxx rdf:type rdfs:Datatype --> xxx rdfs:subClassOf rdfs:Literal */ private int _applyRuleRdfs13() { if (! _checkRule[Rdfs13]) { return 0; } int nofInferred = 0; StatementIterator iter = new MemStatementIterator(_newThisIteration, null, _repository.RDF_TYPE_NODE, _repository.RDFS_DATATYPE_NODE); while (iter.hasNext()) { Statement st = iter.next(); ResourceNode xxx = (ResourceNode)st.getSubject(); boolean added = _addInferredStatement(xxx, _repository.RDFS_SUBCLASSOF_NODE, _repository.RDFS_LITERAL_NODE); if (added) { nofInferred++; } } iter.close(); _updateTriggers(Rdfs13, nofInferred); return nofInferred; } /* X1. xxx rdf:_* yyy --> * rdf:_* rdf:type rdfs:ContainerMembershipProperty * * This is an extra rule for list membership properties (_1, _2, _3, * ...). The RDF MT does not specificy a production for this. */ private int _applyRuleX1() { if (! _checkRule[RX1]) { return 0; } int nofInferred = 0; StatementIterator iter = new MemStatementIterator(_newThisIteration); while (iter.hasNext()) { Statement st = iter.next(); URINode predNode = (URINode)st.getPredicate(); if (predNode.getNamespace().equals(RDF.NAMESPACE) && predNode.getLocalName().startsWith("_")) { boolean added = _addInferredStatement( predNode, _repository.RDF_TYPE_NODE, _repository.RDFS_CONTAINERMEMBERSHIPPROPERTY_NODE); if (added) { nofInferred++; } } } iter.close(); _updateTriggers(RX1, nofInferred); return nofInferred; } private void _addAxiomStatements() { // RDF axiomatic triples (from RDF Semantics, section 3.1): _addInferredStatement(_repository.RDF_TYPE_NODE, _repository.RDF_TYPE_NODE, _repository.RDF_PROPERTY_NODE); _addInferredStatement(_repository.RDF_SUBJECT_NODE, _repository.RDF_TYPE_NODE, _repository.RDF_PROPERTY_NODE); _addInferredStatement(_repository.RDF_PREDICATE_NODE, _repository.RDF_TYPE_NODE, _repository.RDF_PROPERTY_NODE); _addInferredStatement(_repository.RDF_OBJECT_NODE, _repository.RDF_TYPE_NODE, _repository.RDF_PROPERTY_NODE); _addInferredStatement(_repository.RDF_FIRST_NODE, _repository.RDF_TYPE_NODE, _repository.RDF_PROPERTY_NODE); _addInferredStatement(_repository.RDF_REST_NODE, _repository.RDF_TYPE_NODE, _repository.RDF_PROPERTY_NODE); _addInferredStatement(_repository.RDF_VALUE_NODE, _repository.RDF_TYPE_NODE, _repository.RDF_PROPERTY_NODE); _addInferredStatement(_repository.RDF_NIL_NODE, _repository.RDF_TYPE_NODE, _repository.RDF_LIST_NODE); // RDFS axiomatic triples (from RDF Semantics, section 4.1): _addInferredStatement(_repository.RDF_TYPE_NODE, _repository.RDFS_DOMAIN_NODE, _repository.RDFS_RESOURCE_NODE); _addInferredStatement(_repository.RDFS_DOMAIN_NODE, _repository.RDFS_DOMAIN_NODE, _repository.RDF_PROPERTY_NODE); _addInferredStatement(_repository.RDFS_RANGE_NODE, _repository.RDFS_DOMAIN_NODE, _repository.RDF_PROPERTY_NODE); _addInferredStatement(_repository.RDFS_SUBPROPERTYOF_NODE, _repository.RDFS_DOMAIN_NODE, _repository.RDF_PROPERTY_NODE); _addInferredStatement(_repository.RDFS_SUBCLASSOF_NODE, _repository.RDFS_DOMAIN_NODE, _repository.RDFS_CLASS_NODE); _addInferredStatement(_repository.RDF_SUBJECT_NODE, _repository.RDFS_DOMAIN_NODE, _repository.RDF_STATEMENT_NODE); _addInferredStatement(_repository.RDF_PREDICATE_NODE, _repository.RDFS_DOMAIN_NODE, _repository.RDF_STATEMENT_NODE); _addInferredStatement(_repository.RDF_OBJECT_NODE, _repository.RDFS_DOMAIN_NODE, _repository.RDF_STATEMENT_NODE); _addInferredStatement(_repository.RDFS_MEMBER_NODE, _repository.RDFS_DOMAIN_NODE, _repository.RDFS_RESOURCE_NODE); _addInferredStatement(_repository.RDF_FIRST_NODE, _repository.RDFS_DOMAIN_NODE, _repository.RDF_LIST_NODE); _addInferredStatement(_repository.RDF_REST_NODE, _repository.RDFS_DOMAIN_NODE, _repository.RDF_LIST_NODE); _addInferredStatement(_repository.RDFS_SEEALSO_NODE, _repository.RDFS_DOMAIN_NODE, _repository.RDFS_RESOURCE_NODE); _addInferredStatement(_repository.RDFS_ISDEFINEDBY_NODE, _repository.RDFS_DOMAIN_NODE, _repository.RDFS_RESOURCE_NODE); _addInferredStatement(_repository.RDFS_COMMENT_NODE, _repository.RDFS_DOMAIN_NODE, _repository.RDFS_RESOURCE_NODE); _addInferredStatement(_repository.RDFS_LABEL_NODE, _repository.RDFS_DOMAIN_NODE, _repository.RDFS_RESOURCE_NODE); _addInferredStatement(_repository.RDF_VALUE_NODE, _repository.RDFS_DOMAIN_NODE, _repository.RDFS_RESOURCE_NODE); _addInferredStatement(_repository.RDF_TYPE_NODE, _repository.RDFS_RANGE_NODE, _repository.RDFS_CLASS_NODE); _addInferredStatement(_repository.RDFS_DOMAIN_NODE, _repository.RDFS_RANGE_NODE, _repository.RDFS_CLASS_NODE); _addInferredStatement(_repository.RDFS_RANGE_NODE, _repository.RDFS_RANGE_NODE, _repository.RDFS_CLASS_NODE); _addInferredStatement(_repository.RDFS_SUBPROPERTYOF_NODE, _repository.RDFS_RANGE_NODE, _repository.RDF_PROPERTY_NODE); _addInferredStatement(_repository.RDFS_SUBCLASSOF_NODE, _repository.RDFS_RANGE_NODE, _repository.RDFS_CLASS_NODE); _addInferredStatement(_repository.RDF_SUBJECT_NODE, _repository.RDFS_RANGE_NODE, _repository.RDFS_RESOURCE_NODE); _addInferredStatement(_repository.RDF_PREDICATE_NODE, _repository.RDFS_RANGE_NODE, _repository.RDFS_RESOURCE_NODE); _addInferredStatement(_repository.RDF_OBJECT_NODE, _repository.RDFS_RANGE_NODE, _repository.RDFS_RESOURCE_NODE); _addInferredStatement(_repository.RDFS_MEMBER_NODE, _repository.RDFS_RANGE_NODE, _repository.RDFS_RESOURCE_NODE); _addInferredStatement(_repository.RDF_FIRST_NODE, _repository.RDFS_RANGE_NODE, _repository.RDFS_RESOURCE_NODE); _addInferredStatement(_repository.RDF_REST_NODE, _repository.RDFS_RANGE_NODE, _repository.RDF_LIST_NODE); _addInferredStatement(_repository.RDFS_SEEALSO_NODE, _repository.RDFS_RANGE_NODE, _repository.RDFS_RESOURCE_NODE); _addInferredStatement(_repository.RDFS_ISDEFINEDBY_NODE, _repository.RDFS_RANGE_NODE, _repository.RDFS_RESOURCE_NODE); _addInferredStatement(_repository.RDFS_COMMENT_NODE, _repository.RDFS_RANGE_NODE, _repository.RDFS_LITERAL_NODE); _addInferredStatement(_repository.RDFS_LABEL_NODE, _repository.RDFS_RANGE_NODE, _repository.RDFS_LITERAL_NODE); _addInferredStatement(_repository.RDF_VALUE_NODE, _repository.RDFS_RANGE_NODE, _repository.RDFS_RESOURCE_NODE); _addInferredStatement(_repository.RDF_ALT_NODE, _repository.RDFS_SUBCLASSOF_NODE, _repository.RDFS_CONTAINER_NODE); _addInferredStatement(_repository.RDF_BAG_NODE, _repository.RDFS_SUBCLASSOF_NODE, _repository.RDFS_CONTAINER_NODE); _addInferredStatement(_repository.RDF_SEQ_NODE, _repository.RDFS_SUBCLASSOF_NODE, _repository.RDFS_CONTAINER_NODE); _addInferredStatement(_repository.RDFS_CONTAINERMEMBERSHIPPROPERTY_NODE, _repository.RDFS_SUBCLASSOF_NODE, _repository.RDF_PROPERTY_NODE); _addInferredStatement(_repository.RDFS_ISDEFINEDBY_NODE, _repository.RDFS_SUBPROPERTYOF_NODE, _repository.RDFS_SEEALSO_NODE); _addInferredStatement(_repository.RDF_XMLLITERAL_NODE, _repository.RDF_TYPE_NODE, _repository.RDFS_DATATYPE_NODE); _addInferredStatement(_repository.RDF_XMLLITERAL_NODE, _repository.RDFS_SUBCLASSOF_NODE, _repository.RDFS_LITERAL_NODE); _addInferredStatement(_repository.RDFS_DATATYPE_NODE, _repository.RDFS_SUBCLASSOF_NODE, _repository.RDFS_CLASS_NODE); } private boolean _addInferredStatement(ResourceNode subjNode, URINode predNode, ValueNode objNode) { // Check if the inferred statement is already known if (_repository.hasStatement(subjNode, predNode, objNode)) { return false; } // This is a new inferred statement, add it and mark it inferred MemStatement newStatement = _repository._addStatement(subjNode, predNode, objNode); newStatement.setExplicit(false); // notify the inferencer of this new statement notifyNewStatement(newStatement); return true; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -