/** * Check whether this triple matches a pattern. A pattern is just a TripleString where each empty component means <em>any</em>. * @param pattern * @return */ public boolean match(TripleString pattern) { if (pattern.getSubject() == "" || pattern.getSubject().equals(this.subject)) { if (pattern.getPredicate() == "" || pattern.getPredicate().equals(this.predicate)) { if (pattern.getObject() == "" || pattern.getObject().equals(this.object)) { return true; } } } return false; }
@Override public void processTriple(TripleString triple, long pos) { triples.add(new TripleString(triple)); }
@Override public void addTriple(TripleString str) throws IOException { str.dumpNtriple(out); }
@Override public void remove(CharSequence subject, CharSequence predicate, CharSequence object) { TripleString pattern = new TripleString(subject.toString(), predicate.toString(), object.toString()); Iterator<TripleString> iter = triples.iterator(); while(iter.hasNext()) { TripleString next = iter.next(); if(next.match(pattern)) { iter.remove(); } } }
private void doParse(BufferedReader reader, String baseUri, RDFNotation notation, RDFCallback callback) throws ParserException { try { String line; long numLine = 1; TripleString triple = new TripleString(); while((line=reader.readLine())!=null) { line = line.trim().replaceAll("\\t"," "); if(!line.startsWith("#")) { triple.read(line); if(!triple.hasEmpty()) { //System.out.println(triple); callback.processTriple(triple, 0); } else { System.err.println("Warning: Could not parse triple at line "+numLine+", ignored and not processed.\n"+line); } } numLine++; } reader.close(); }catch(Exception e) { log.error("Unexpected exception.", e); throw new ParserException(e); } } }
TripleString triplePattern = new TripleString(); System.out.println("Query: |"+triplePattern.getSubject()+"| |"+triplePattern.getPredicate()+"| |" + triplePattern.getObject()+"|"); iterate(hdt,triplePattern.getSubject(),triplePattern.getPredicate(),triplePattern.getObject()); } catch (ParserException e) { System.err.println("Could not parse triple pattern: "+e.getMessage());
dest.clear(); dest.setSubject(UnicodeEscape.unescapeString(line.substring(posa, posb))); dest.setPredicate(UnicodeEscape.unescapeString(line.substring(posa, posb))); if(line.charAt(posb-1)==' ') posb--; dest.setObject(UnicodeEscape.unescapeString(line.substring(posa, posb)));
@Override public CharSequence getBaseURI() { IteratorTripleString it = search("", HeaderUtil.cleanURI(HDTVocabulary.RDF_TYPE), HeaderUtil.cleanURI(HDTVocabulary.HDT_DATASET)); if(it.hasNext()) { TripleString ts = it.next(); return ts.getSubject(); } return ""; } }
public static String getSubject(Header header, String predicate, String object) throws NotFoundException { IteratorTripleString it = header.search("", predicate, object); if(it.hasNext()) { TripleString ts = it.next(); return ts.getObject().toString(); } throw new NotFoundException(); }
this.clear(); if(line.charAt(posb-1)=='>') posb--; // Remove > this.setSubject(UnicodeEscape.unescapeString(line.substring(posa, posb))); if(posb>posa && line.charAt(posb-1)=='>') posb--; this.setPredicate(UnicodeEscape.unescapeString(line.substring(posa, posb))); this.setObject(UnicodeEscape.unescapeString(line.substring(posa, posb)));
IteratorTripleString it = header.search("", HDTVocabulary.RDF_TYPE, HDTVocabulary.HDT_DATASET); if(it.hasNext()) { this.baseUri = it.next().getSubject().toString();
public static String getProperty(Header header, String subject, String predicate) throws NotFoundException { IteratorTripleString it = header.search(cleanURI(subject), cleanURI(predicate), ""); if(it.hasNext()) { TripleString ts = it.next(); return ts.getObject().toString(); } throw new NotFoundException(); }
@Override public void addTriple(TripleString triple) throws IOException { triples.insert( dictionary.insert(triple.getSubject(), TripleComponentRole.SUBJECT), dictionary.insert(triple.getPredicate(), TripleComponentRole.PREDICATE), dictionary.insert(triple.getObject(), TripleComponentRole.OBJECT) ); num++; size+=triple.getSubject().length()+triple.getPredicate().length()+triple.getObject().length()+4; // Spaces and final dot }
@Override public IteratorTripleString search(CharSequence subject, CharSequence predicate, CharSequence object) { TripleString pattern = new TripleString(subject.toString(), predicate.toString(), object.toString()); return new PlainHeaderIterator(this, pattern); }
IteratorTripleString it = header.search("", HDTVocabulary.RDF_TYPE, HDTVocabulary.HDT_DATASET); if(it.hasNext()) { this.baseUri = it.next().getSubject().toString();
/** Convert TripleString to NTriple */ public CharSequence asNtriple() throws IOException { StringBuilder str = new StringBuilder(); this.dumpNtriple(str); return str; }
@Override public void processTriple(TripleString triple, long pos) { triples.insert( dict.insert(triple.getSubject(), TripleComponentRole.SUBJECT), dict.insert(triple.getPredicate(), TripleComponentRole.PREDICATE), dict.insert(triple.getObject(), TripleComponentRole.OBJECT) ); num++; size+=triple.getSubject().length()+triple.getPredicate().length()+triple.getObject().length()+4; // Spaces and final dot ListenerUtil.notifyCond(listener, "Loaded "+num+" triples", num, 0, 100); } }
@Override public void insert(CharSequence subject, CharSequence predicate, CharSequence object) { String objStr = object.toString(); if(objStr.charAt(0)=='<'|| objStr.charAt(0)=='"' || objStr.startsWith("http://")||objStr.startsWith("file://")) { triples.add(new TripleString(HeaderUtil.cleanURI(subject), HeaderUtil.cleanURI(predicate), object)); } else { triples.add(new TripleString(HeaderUtil.cleanURI(subject), HeaderUtil.cleanURI(predicate), '"'+objStr+'"')); } }
public void execute() throws Exception { PrintStream out = null; if (rdfOutput.equals("stdout")){ out = System.out; } else { out = new PrintStream(rdfOutput, "UTF-8"); } HDT hdt=HDTManager.mapHDT(hdtInput, this); try { IteratorTripleString it = hdt.search("","",""); StringBuilder build = new StringBuilder(1024); while(it.hasNext()) { TripleString triple = it.next(); build.delete(0, build.length()); triple.dumpNtriple(build); out.print(build); } if(!rdfOutput.equals("stdout")) { out.close(); } } finally { if(hdt!=null) hdt.close(); } }
@Override public int compare(TripleString o1, TripleString o2) { int result = CharSequenceComparator.getInstance().compare(o1.getSubject(), o2.getSubject()); if (result == 0) { result = CharSequenceComparator.getInstance().compare(o1.getPredicate(), o2.getPredicate()); if (result == 0) { // The third component is different? return CharSequenceComparator.getInstance().compare(o1.getObject(), o2.getObject()); } else { // the second component is different return result; } } else { // the first component is different return result; } } }