rdf jena api比较主谓宾语

rdf jena api比较主谓宾语,api,rdf,sparql,jena,arq,Api,Rdf,Sparql,Jena,Arq,我创建了一个扩展sparql的函数!如何将rdf文件的主题、对象和proopriété与函数的参数(主题、属性、对象)进行比较 这是我的函数,但它不显示任何结果 import static com.sun.org.apache.xalan.internal.xsltc.compiler.util.Type.String; 导入java。*; 导入java.io.***强文本** 导入java.util.HashMap; 导入java.util.Map; 导入java.util.logging.L

我创建了一个扩展sparql的函数!如何将rdf文件的主题、对象和proopriété与函数的参数(主题、属性、对象)进行比较

这是我的函数,但它不显示任何结果

import static com.sun.org.apache.xalan.internal.xsltc.compiler.util.Type.String;
导入java。*;
导入java.io.***强文本**
导入java.util.HashMap;
导入java.util.Map;
导入java.util.logging.Level;
导入java.util.logging.Logger;
导入org.apache.jena.datatypes.xsd.XSDDatatype;
导入org.apache.jena.rdf.model.model;
导入org.apache.jena.rdf.model.ModelFactory;
导入org.apache.jena.rdf.model.Property;
导入org.apache.jena.rdf.model.RDFNode;
导入org.apache.jena.rdf.model.Resource;
导入org.apache.jena.rdf.model.Statement;
导入org.apache.jena.rdf.model.StmtIterator;
导入org.apache.jena.sparql.expr.NodeValue;
导入org.apache.jena.sparql.function.function;
导入org.apache.jena.sparql.function.FunctionBase2;
导入org.apache.jena.sparql.function.FunctionFactory;
导入静态org.apache.jena.词汇表.RDF.Nodes.object;
导入静态org.apache.jena.词汇表.RDF.Nodes.predicate;
导入静态org.apache.jena.词汇表.RDF.Nodes.subject;
公共类haschild扩展FunctionBase2实现FunctionFactory{
私有映射缓存;
公共儿童
{
_cache=newhashmap();
}
@凌驾
公共节点值执行器(节点值v1,节点值v2){
字符串值=v2.asString();
字符串值2=v1.asString();
模型模型=ModelFactory.createDefaultModel();
InputStream=null;
试一试{
is=新的BufferedInputStream(
新文件输入流(“C:\\\\fichier rdf/journal.webscience.org vivo.rdf”);
}捕获(FileNotFoundException ex){
Logger.getLogger(haschild.class.getName()).log(Level.SEVERE,null,ex);
}
model.read(新的InputStreamReader(is),“”);
stmtiter=model.listStatements();
//声明、声明和声明
while(iter.hasNext()){
语句stmt=iter.nextStatement();//obtenir la prochaine déclaration
Resource subject=stmt.getSubject();//obtenir le sujet
属性谓词=stmt.getPredicate();//obtenir le prédicate
RDFNode object=stmt.getObject();//obtenir l'objet
如果((value2.equals(subject.toString())&&(object.toString().equals(value))&&(predicate.toString().equals)()http://www.w3.org/2000/01/rdf-schema#HasChild")))
返回NodeValue.TRUE;
返回NodeValue.FALSE;}
返回null;
}
@凌驾
公共函数创建(字符串uri){
抛出新的UnsupportedOperationException(“尚未受支持”);//若要更改生成的方法体,请选择“工具”|模板。}
}

比较支持各种项目的节点,并将它们相等

请参见
NodeValue#asNode
RDFNode.asNode

如果希望值相等(例如1等于+1.0e0),请将
RDFNode.asNode
转换为
NodeValue
并使用
NodeValue.sameAs


NodeValue.asString
返回该值的SPARQL语法版本。不用于比较。

使用RDFDataMgr读取文件。请注意,即使使用相同的参数,函数也可以在单个查询执行中多次调用(假定调用这些函数非常便宜)。