⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rdfmtinferencer.java

📁 这是外国一个开源推理机
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
		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 + -