Tag: sparql jena

将年龄(整数文字)添加到Jena RDF三元组,并使用SPARQL查询它们

我正在尝试学习使用Jena和RDF Triples的基础知识。 还使用Oracle数据库,因此按照他们的指南我运行了一些示例程序,例如Example7-18 SPARQL OPTIONAL Query 。 该示例在写入时工作正常。 它允许匹配查询,如 where {?s ?o} where { } 我想做的是给John,Mary和Jill一个年龄,以便我可以查询和过滤年龄,如SPARQL中所述:例如:备忘单 ,第10页: A . B . FILTER ( …expr… ) where {?s ?o . ?o ?a . filter ( ?a < 20 ) } 使用三元组的当前代码,我只能添加字符串/ URI节点,虽然我可以创建一个三元组,例如 ,但我无法过滤并与之比较,例如,那个年龄的<操作员,所以它不是很有用。 我一直在寻找一段时间,我怀疑这样做非常简单,但很难找到代码示例。

我如何编写在Java Code中使用相似性度量的SPARQL查询

我想知道在Java代码中编写此SPARQL查询的简单方法: select ?input ?string (strlen(?match)/strlen(?string) as ?percent) where { values ?string { “London” “Londn” “London Fog” “Lando” “Land Ho!” “concatenate” “catnap” “hat” “cat” “chat” “chart” “port” “part” } values (?input ?pattern ?replacement) { (“cat” “^x[^cat]*([c]?)[^at]*([a]?)[^t]*([t]?).*$” “$1$2$3”) (“Londn” “^x[^Londn]*([L]?)[^ondn]*([o]?)[^ndn]*([n]?)[^dn]*([d]?)[^n]*([n]?).*$” “$1$2$3$4$5”) } bind( replace( concat(‘x’,?string), ?pattern, ?replacement) as ?match ) } order by ?pattern desc(?percent) 此代码包含在讨论中使用iSPARQL使用相似性度量来比较值 。 […]

SPARQL(Jena)UPDATE可以通过文字集合(而不是文字)进行参数化吗?

我可以调用参数化的SPARQL UPDATE(如在Jena的ParameterizedSparqlString )将属性设置为几个例如文字值吗? 例如,我有: Set object = new HashSet(Arrays.asList(“literal1”, “literal2”)); 并希望使用SPARQL更新,例如: INSERT { [] property ?object } WHERE {} 构建这些RDF语句: _:SUBJECT property “literal1” . _:SUBJECT property “literal2” . Jena是支持这种类型还是参数化( ParameterizedSparqlString的签名建议不)或者我是否必须通过循环遍历集合和连接字符串来构建SPARQL UPDATE?

发送到virtuoso端点的CONSTRUCT查询与发送给Jena端点的查询之间是否存在差异?

我试图根据以下CONSTRUCT查询推断一些新的三元组: PREFIX rdf: PREFIX dc: PREFIX dcterms: PREFIX gpml: PREFIX wp: PREFIX xsd: CONSTRUCT { ?line rdf:type wp:DirectedInteraction . } WHERE { ?pathway dc:identifier ?wpIdentifier .{ SELECT DISTINCT * WHERE { ?datanode2 dc:identifier ?dn2Identifier . ?datanode2 rdf:type gpml:DataNode . ?datanode2 dcterms:isPartOf ?pathway . ?datanode2 gpml:graphid ?dn2GraphId . ?line gpml:graphref ?dn2GraphId . FILTER (?datanode2 != ?datanode1) […]

SPARQL:返回由指定或等效类完成的所有交叉点

如果我将ABC和CDE类定义为A,B,C,D,E类的交叉点,如下所示: 如何查询SPARQL中给定输入类集满足其限制的所有交集类? 例如,如果我将A,B,C,D,E,F,G输入此查询,我希望能够回来 ABC A B C CDE C D E 另外两个皱纹:如果我查询A,Z,C,其中Z是B的等价类,那么这应该匹配并理想地返回 ABC A Z C 其次,结果应该只返回最大匹配; 因此,如果存在ABCD类并且我在A,B,C,D之间进行查询,则它将返回ABCD而不是ABC。 提前致谢! 更新: 为了澄清,除非所有组成类都在提供的输入列表中,否则我不希望与交集类匹配。 例如,如果我向查询提供A,B,我不想让ABC回来。 如果我提供A,B,C,D,我确实希望得到ABC。 我的用例是这样的:我有一组数据点,在每个数据点中我都识别出一些任意的基本概念A,B,C,D等等,每个都具有不同的可能性。 我想问一下本体“这个列表包含哪些更高级别的概念(即交叉点)?” 目前,我的查询看起来像这样(考虑到我在上面概述的本体中的限制和onProperty): SELECT DISTINCT ?intclass ?inputclasses WHERE { ?intclass owl:equivalentClass / owl:intersectionOf / rdf:rest*/rdf:first / owl:someValuesFrom ?inputclasses } ORDER BY ?intclass BINDINGS ?inputclasses { (:A) (:B) (:C) (:D) } 不幸的是,这回馈了我的本体中包含任何输入类的每个交集。 我认为这是因为rest […]

匹配至少有一个共同字的字符串

我正在进行查询以获取具有特定标题的文档的URI。 我的查询是: PREFIX rdf: PREFIX dc: SELECT ?document WHERE { ?document dc:title ?title. FILTER (?title = “…” ). } 其中”…”实际上是this.getTitle()的值,因为查询字符串是由以下生成的: String queryString = “PREFIX rdf: ” + “PREFIX dc: SELECT ?document WHERE { ” + “?document dc:title ?title.” + “FILTER (?title = \”” + this.getTitle() + “\” ). }”; 通过上面的查询,我只得到标题与this.getTitle()完全相同的文档。 想象一下this.getTitle由超过1个单词组成。 即使只有一个单词形成this.getTitle出现在文档标题上(例如),我也想获取文档。 我怎么能这样做?

使用JENA进行参数化SPARQL查询

我正在尝试使用Jena框架,JSP和JAVA构建一个小型语义Web应用程序。 我有一个远程SPARQL端点,我已经写了一个简单的查询工作正常,但现在我需要使用一些参数。 这是我到目前为止的代码: final static String serviceEndpoint = “http://fishdelish.cs.man.ac.uk/sparql/”; String comNameQuery = “PREFIX fd: ” + “SELECT ?name ?language ?type” + “WHERE { ?nameID fd:comnames_ComName ?name ;” + “fd:comnames_Language ?language ;” + “fd:comnames_NameType ?type .” + “}”; Query query = QueryFactory.create(comNameQuery); QueryExecution qe = QueryExecutionFactory.sparqlService(serviceEndpoint,query); try { ResultSet rs = qe.execSelect(); if ( rs.hasNext() ) […]

Virtuoso Jena API中的SPARQL查询“COUNT” – QueryParseException

相同的查询适用于DBpedia Endpoint( http://ko.dbpedia.org/sparql ),但不适用于我的Java代码。 我只是想用“COUNT”函数提取频率。 VirtGraph set = new VirtGraph(“http://ko.dbpedia.org”, HOST, USERNAME, PASSWORD); Query freqsparql = QueryFactory.create(“SELECT ?class count(distinct ?s) as ?count where{?s ?o. ?sa ?class.} order by DESC(?count)”); VirtuosoQueryExecution freqvqe = VirtuosoQueryExecutionFactory.create(freqsparql, set); ResultSet freqresults = freqvqe.execSelect(); 错误如下。 Exception in thread “main” com.hp.hpl.jena.query.QueryParseException: Encountered ” “count” “count “” at line 1, column 15. Was […]

如何使用Fuseki和Jena TDB

我有一个问题问你。 我有一个三重存储“Jena TDB”,我读过我可以为本地存储的RDF数据设置SPARQL端点。 特别是,我在文献中看到,与耶拿TDB一起使用的是Fuseki。 我以这种方式在Jena TDB中加载了我的文件rdf: public void store(){ String directory = “C:\\tdb”; String source = “C:\\file1.rdf”; String source1 = “C:\\file2.rdf”; Dataset dataset = openTDB(directory); Model tdb = loadModel(source, dataset); dataset.addNamedModel(“File1”, tdb); Model tdb1 = loadModel(source1, dataset); dataset.addNamedModel(“File2”, tdb1); tdb.close(); tdb1.close(); dataset.close(); } public Dataset openTDB(String directory){ // open TDB dataset Dataset dataset = TDBFactory.createDataset(directory); […]

通过Java代码插入一些数据时,Sparql查询不会更新

我正在尝试通过我的java代码将数据插入到加载到Fuseki服务器的owl文件中。 更新查询不会给出任何错误消息。 但是owl文件没有更新。我正在使用jena库并使用java代码实现。 我的代码有什么问题? public boolean addLecturerTriples(String fName, String lName, String id, String module) { try{ ArrayList subject = new ArrayList(); ArrayList predicate = new ArrayList(); ArrayList object = new ArrayList(); subject.add(“”); predicate.add(“”); object.add(“”); for(int i = 0; i < subject.size(); i++){ String qry = "INSERT DATA"+ "{"+ subject.get(i)+"\n"+ predicate.get(i)+"\n"+ object.get(i)+"\n"+ "}"; UpdateRequest update = […]