From: <jen...@us...> - 2008-09-24 08:49:38
|
Revision: 1248 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1248&view=rev Author: jenslehmann Date: 2008-09-24 08:49:29 +0000 (Wed, 24 Sep 2008) Log Message: ----------- removed all warnings reported by Javadoc tool (closes #2052984) Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/algorithms/gp/GP.java trunk/src/dl-learner/org/dllearner/algorithms/gp/Program.java trunk/src/dl-learner/org/dllearner/cli/Start.java trunk/src/dl-learner/org/dllearner/core/ComponentManager.java trunk/src/dl-learner/org/dllearner/core/ComponentPool.java trunk/src/dl-learner/org/dllearner/core/ReasonerComponent.java trunk/src/dl-learner/org/dllearner/core/config/ConfigOption.java trunk/src/dl-learner/org/dllearner/core/owl/DatatypeQuantorRestriction.java trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java trunk/src/dl-learner/org/dllearner/kb/sparql/SPARQLTasks.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertRDFS.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java trunk/src/dl-learner/org/dllearner/learningproblems/PosNegDefinitionLP.java trunk/src/dl-learner/org/dllearner/learningproblems/PosNegInclusionLP.java trunk/src/dl-learner/org/dllearner/refinementoperators/Utility.java trunk/src/dl-learner/org/dllearner/scripts/CloseOntology.java trunk/src/dl-learner/org/dllearner/scripts/PaperStatistics.java trunk/src/dl-learner/org/dllearner/scripts/RDF2NT.java trunk/src/dl-learner/org/dllearner/scripts/improveWikipedia/ConceptSPARQLReEvaluator.java trunk/src/dl-learner/org/dllearner/scripts/improveWikipedia/WikipediaCategoryTasks.java trunk/src/dl-learner/org/dllearner/server/ClientState.java trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifier.java trunk/src/dl-learner/org/dllearner/tools/ore/RepairPanelDescriptor.java trunk/src/dl-learner/org/dllearner/utilities/Helper.java trunk/src/dl-learner/org/dllearner/utilities/StringFormatter.java trunk/src/dl-learner/org/dllearner/utilities/datastructures/Datastructures.java trunk/src/dl-learner/org/dllearner/utilities/datastructures/SetManipulation.java trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticNegativeExampleFinderOWL.java trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticNegativeExampleFinderSPARQL.java trunk/src/dl-learner/org/dllearner/utilities/owl/OntologyCloserOWLAPI.java trunk/src/dl-learner/org/dllearner/utilities/statistics/Stat.java Modified: trunk/src/dl-learner/org/dllearner/algorithms/gp/GP.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/gp/GP.java 2008-09-24 08:45:14 UTC (rev 1247) +++ trunk/src/dl-learner/org/dllearner/algorithms/gp/GP.java 2008-09-24 08:49:29 UTC (rev 1248) @@ -77,8 +77,6 @@ * In this type of algorithm offspring is produced by a number of indivuals. * The offspring then replaces the weakest individuals of the previous * generation. - * - * @see #setNumberOfSelectedIndividuals(int) */ STEADY_STATE}; Modified: trunk/src/dl-learner/org/dllearner/algorithms/gp/Program.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/gp/Program.java 2008-09-24 08:45:14 UTC (rev 1247) +++ trunk/src/dl-learner/org/dllearner/algorithms/gp/Program.java 2008-09-24 08:49:29 UTC (rev 1248) @@ -50,8 +50,6 @@ /** * Create a new program. * - * @param concept - * The program tree. */ public Program(Score score, Description hypothesis) { this(score, hypothesis, null); Modified: trunk/src/dl-learner/org/dllearner/cli/Start.java =================================================================== --- trunk/src/dl-learner/org/dllearner/cli/Start.java 2008-09-24 08:45:14 UTC (rev 1247) +++ trunk/src/dl-learner/org/dllearner/cli/Start.java 2008-09-24 08:49:29 UTC (rev 1248) @@ -836,7 +836,7 @@ /** * @deprecated See ConfMapper. * @param componentSuperClass - * @return + * @return String. */ @Deprecated public static String getCLIMapping(String componentSuperClass){ Modified: trunk/src/dl-learner/org/dllearner/core/ComponentManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/ComponentManager.java 2008-09-24 08:45:14 UTC (rev 1247) +++ trunk/src/dl-learner/org/dllearner/core/ComponentManager.java 2008-09-24 08:49:29 UTC (rev 1248) @@ -691,7 +691,7 @@ /** * Retuns a list of all instanciated and registered Components - * @return + * @return Currently active components. */ public List<Component> getLiveComponents(){ return pool.getComponents(); @@ -699,7 +699,7 @@ /** * Retuns a list of all instanciated and registered LearningAlgorithm - * @return + * @return Currently active learning algorithms. */ public List<LearningAlgorithm> getLiveLearningAlgorithms(){ List<LearningAlgorithm> list = new ArrayList<LearningAlgorithm>(); @@ -714,7 +714,7 @@ /** * Retuns a list of all instanciated and registered KnowledgeSource - * @return + * @return Currently active knowledge sources. */ public List<KnowledgeSource> getLiveKnowledgeSources(){ List<KnowledgeSource> list = new ArrayList<KnowledgeSource>(); Modified: trunk/src/dl-learner/org/dllearner/core/ComponentPool.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/ComponentPool.java 2008-09-24 08:45:14 UTC (rev 1247) +++ trunk/src/dl-learner/org/dllearner/core/ComponentPool.java 2008-09-24 08:49:29 UTC (rev 1248) @@ -115,7 +115,7 @@ } /** - * @return + * @return The components in this pool. */ public List<Component> getComponents(){ return components; Modified: trunk/src/dl-learner/org/dllearner/core/ReasonerComponent.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/ReasonerComponent.java 2008-09-24 08:45:14 UTC (rev 1247) +++ trunk/src/dl-learner/org/dllearner/core/ReasonerComponent.java 2008-09-24 08:49:29 UTC (rev 1248) @@ -66,7 +66,7 @@ * Implementations, which do not only use the provided sources * class variable, must make sure that a call to this method * indeed changes them. - * @param The new knowledge sources. + * @param sources The new knowledge sources. */ public void changeSources(Set<KnowledgeSource> sources) { this.sources = sources; Modified: trunk/src/dl-learner/org/dllearner/core/config/ConfigOption.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/config/ConfigOption.java 2008-09-24 08:45:14 UTC (rev 1247) +++ trunk/src/dl-learner/org/dllearner/core/config/ConfigOption.java 2008-09-24 08:49:29 UTC (rev 1248) @@ -156,7 +156,7 @@ * TODO Method should be removed and a mapping table in ConfigJavaGenerator * created instead. * gets java imports - * @return + * @return Java imports. */ public SortedSet<String> getJavaImports() { return new TreeSet<String>(); Modified: trunk/src/dl-learner/org/dllearner/core/owl/DatatypeQuantorRestriction.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/owl/DatatypeQuantorRestriction.java 2008-09-24 08:45:14 UTC (rev 1247) +++ trunk/src/dl-learner/org/dllearner/core/owl/DatatypeQuantorRestriction.java 2008-09-24 08:49:29 UTC (rev 1248) @@ -32,7 +32,7 @@ /** * Creates a <code>DatatypeQuantorRestriction</code> along the * given property. - * @param propertyExpression The datatype property along which this restriction acts. + * @param datatypeProperty The datatype property along which this restriction acts. */ public DatatypeQuantorRestriction(DatatypeProperty datatypeProperty) { super(datatypeProperty); Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java 2008-09-24 08:45:14 UTC (rev 1247) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java 2008-09-24 08:49:29 UTC (rev 1248) @@ -67,10 +67,7 @@ * most important function expands one example * CAVE: the recursion is not a * recursion anymore, it was transformed to an iteration - * - * @param uri - * @param typedSparqlQuery - * @return + * */ public Node expandNode(String uri, TupleAquisitor tupleAquisitor) { Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java 2008-09-24 08:45:14 UTC (rev 1247) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java 2008-09-24 08:49:29 UTC (rev 1248) @@ -50,7 +50,6 @@ * Nodes are expanded with a certain context, given by the typedSparqlQuery * and the manipulator * - * @param typedSparqlQuery * @param manipulator * @return Vector<Node> all Nodes that are new because of expansion */ @@ -60,9 +59,7 @@ /** * gets type defs for properties like rdf:type SymmetricProperties * - * @param typedSparqlQuery * @param manipulator - * @return Vector<Node> */ public abstract void expandProperties( TupleAquisitor TupelAquisitor, Manipulator manipulator); Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SPARQLTasks.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SPARQLTasks.java 2008-09-24 08:45:14 UTC (rev 1247) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SPARQLTasks.java 2008-09-24 08:49:29 UTC (rev 1248) @@ -144,7 +144,8 @@ /** * gets a SortedSet of all subclasses up to a certain depth * - * @see conceptRewrite(String descriptionKBSyntax, SparqlEndpoint se, Cache + * TODO the mentioned method does not exist + * conceptRewrite(String descriptionKBSyntax, SparqlEndpoint se, Cache * c, boolean simple ) * @param classURI An URI string with no quotes * @param maxDepth @@ -276,7 +277,6 @@ * An URI string with no quotes * @param sparqlResultLimit * Limits the ResultSet size - * @return */ public SortedSet<String> getClassesForInstance(String instance, int sparqlResultLimit) { @@ -454,7 +454,6 @@ * The query * @param variable * The single variable used in the query - * @return */ public SortedSet<String> queryAsSet(String sparqlQueryString, String variable) { @@ -487,7 +486,6 @@ * * @param sparqlQueryString * The query - * @return */ public String query(String sparqlQueryString) { String jsonString; Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-09-24 08:45:14 UTC (rev 1247) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-09-24 08:49:29 UTC (rev 1248) @@ -128,9 +128,10 @@ .getLogger(SparqlKnowledgeSource.class); /** - * sets the ConfigOptions for this KnowledgeSource. + * Specifies the configuration options for this knowledge source. * - * @return + * @see org.dllearner.core.Component#createConfigOptions() + * @return Options of this component. */ public static Collection<ConfigOption<?>> createConfigOptions() { Collection<ConfigOption<?>> options = new LinkedList<ConfigOption<?>>(); Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertRDFS.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertRDFS.java 2008-09-24 08:45:14 UTC (rev 1247) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertRDFS.java 2008-09-24 08:49:29 UTC (rev 1248) @@ -47,10 +47,6 @@ * ((a OR b OR c) AND (b OR a)) * * @param descriptionKBSyntax - * @param se - * @param c - * a cache object, makes only sense if you use this function - * often * @param maxDepth * determines the depth of retrieval, if 1 classes are replaced by direct subclasses only, * 1 is HIGHLY RECOMMENDED FOR LARGE HIERARCHIES) Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java 2008-09-24 08:45:14 UTC (rev 1247) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java 2008-09-24 08:49:29 UTC (rev 1248) @@ -151,14 +151,12 @@ /** * COMMENT: write some more * includes subclasses, costly function, because subclasses have to be received first. - * @see conceptRewrite(String descriptionKBSyntax, SparqlEndpoint se, Cache c, + * TODO mentioned method cannot be found by Javadoc tool + * conceptRewrite(String descriptionKBSyntax, SparqlEndpoint se, Cache c, boolean simple) - * @param descriptionKBSyntax @see getSparqlQuery(Description description, int limit) - * @param limit @see getSparqlQuery(Description description, int limit) - * @param se - * @param c + * @param descriptionKBSyntax @see #getSparqlQuery(Description description, int limit) + * @param resultLimit @see #getSparqlQuery(Description description, int limit) * @param maxDepth - * @return * @throws ParseException */ public static String getSparqlQueryIncludingSubclasses(String descriptionKBSyntax, int resultLimit, SPARQLTasks st, int maxDepth) throws ParseException Modified: trunk/src/dl-learner/org/dllearner/learningproblems/PosNegDefinitionLP.java =================================================================== --- trunk/src/dl-learner/org/dllearner/learningproblems/PosNegDefinitionLP.java 2008-09-24 08:45:14 UTC (rev 1247) +++ trunk/src/dl-learner/org/dllearner/learningproblems/PosNegDefinitionLP.java 2008-09-24 08:49:29 UTC (rev 1248) @@ -84,7 +84,7 @@ * If it is not weak, it returns the number of covered negative example. It * can use retrieval or instance checks for classification. * - * @see org.dllearner.learningproblems.PosNegLP.MultiInstanceChecks + * @see org.dllearner.learningproblems.PosNegLP.UseMultiInstanceChecks * TODO: Performance could be slightly improved by counting the number of * covers instead of using sets and counting their size. * @param concept @@ -163,7 +163,7 @@ * to implement TWO_CHECKS in this function, because we have to test all * examples to create a score object anyway). * - * @see org.dllearner.learningproblems.PosNegLP.MultiInstanceChecks + * @see org.dllearner.learningproblems.PosNegLP.UseMultiInstanceChecks * @param concept * The concept to test. * @return Corresponding Score object. Modified: trunk/src/dl-learner/org/dllearner/learningproblems/PosNegInclusionLP.java =================================================================== --- trunk/src/dl-learner/org/dllearner/learningproblems/PosNegInclusionLP.java 2008-09-24 08:45:14 UTC (rev 1247) +++ trunk/src/dl-learner/org/dllearner/learningproblems/PosNegInclusionLP.java 2008-09-24 08:49:29 UTC (rev 1248) @@ -115,7 +115,7 @@ * concept. Thus, this methods uses a different notion of coverage than * the one for the standard definition learning problem. * - * @see org.dllearner.learningproblems.PosNegLP.MultiInstanceChecks + * @see org.dllearner.learningproblems.PosNegLP.UseMultiInstanceChecks * @param concept * The concept to test. * @return -1 if concept is too weak and the number of covered negative Modified: trunk/src/dl-learner/org/dllearner/refinementoperators/Utility.java =================================================================== --- trunk/src/dl-learner/org/dllearner/refinementoperators/Utility.java 2008-09-24 08:45:14 UTC (rev 1247) +++ trunk/src/dl-learner/org/dllearner/refinementoperators/Utility.java 2008-09-24 08:49:29 UTC (rev 1248) @@ -95,7 +95,6 @@ * property cannot have applicable subproperties, because subproperties * can only restrict, but not broaden their domain.) * - * @param rs The underlying reasoning service. * @param applicableObjectProperties The set of applicable properties. * @return The most general applicable properties. */ Modified: trunk/src/dl-learner/org/dllearner/scripts/CloseOntology.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/CloseOntology.java 2008-09-24 08:45:14 UTC (rev 1247) +++ trunk/src/dl-learner/org/dllearner/scripts/CloseOntology.java 2008-09-24 08:49:29 UTC (rev 1248) @@ -39,7 +39,7 @@ public class CloseOntology { /** - * @param argument0 + * @param args * simply the path to the owl ontology "examples/test.owl" */ public static void main(String[] args) { Modified: trunk/src/dl-learner/org/dllearner/scripts/PaperStatistics.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/PaperStatistics.java 2008-09-24 08:45:14 UTC (rev 1247) +++ trunk/src/dl-learner/org/dllearner/scripts/PaperStatistics.java 2008-09-24 08:49:29 UTC (rev 1248) @@ -209,7 +209,7 @@ * Has been used to create the statistics for the MLDM 2007 paper. * Warning: this method runs for several hours * - * @todo: This method has not been fully adapted to the base structure + * TODO This method has not been fully adapted to the base structure * changes. To reproduce the results, the method has to be implemented * properly. */ Modified: trunk/src/dl-learner/org/dllearner/scripts/RDF2NT.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/RDF2NT.java 2008-09-24 08:45:14 UTC (rev 1247) +++ trunk/src/dl-learner/org/dllearner/scripts/RDF2NT.java 2008-09-24 08:49:29 UTC (rev 1248) @@ -33,7 +33,7 @@ /** * converts .nt file to rdf, same file name, different ending - * @param ontopath path to nt file + * @param inputOntopath path to nt file */ public static void convertRDF2NT(String inputOntopath){ Modified: trunk/src/dl-learner/org/dllearner/scripts/improveWikipedia/ConceptSPARQLReEvaluator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/improveWikipedia/ConceptSPARQLReEvaluator.java 2008-09-24 08:45:14 UTC (rev 1247) +++ trunk/src/dl-learner/org/dllearner/scripts/improveWikipedia/ConceptSPARQLReEvaluator.java 2008-09-24 08:49:29 UTC (rev 1248) @@ -80,7 +80,6 @@ * Category (50/60) * * @param positiveSet - * @return */ public List<EvaluatedDescription> reevaluateConceptsByDataCoverage( List<EvaluatedDescription> descToBeReevaluated, @@ -136,7 +135,6 @@ * e.g. 50 correct out of 400 retrieved (50/400) * * @param positiveSet - * @return */ public List<EvaluatedDescription> reevaluateConceptsByLowestRecall( List<EvaluatedDescription> descToBeReevaluated, Modified: trunk/src/dl-learner/org/dllearner/scripts/improveWikipedia/WikipediaCategoryTasks.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/improveWikipedia/WikipediaCategoryTasks.java 2008-09-24 08:45:14 UTC (rev 1247) +++ trunk/src/dl-learner/org/dllearner/scripts/improveWikipedia/WikipediaCategoryTasks.java 2008-09-24 08:49:29 UTC (rev 1248) @@ -61,7 +61,6 @@ * * @param conceptresults * @param posExamples - * @return */ public SortedSet<String> calculateWrongIndividualsAndNewPosEx( List<EvaluatedDescription> conceptresults, @@ -91,7 +90,6 @@ * TODO could be more sophisticated * * @param reEvaluatedDesc - * @return */ public SortedSet<String> makeNewNegativeExamples( List<EvaluatedDescription> reEvaluatedDesc, Modified: trunk/src/dl-learner/org/dllearner/server/ClientState.java =================================================================== --- trunk/src/dl-learner/org/dllearner/server/ClientState.java 2008-09-24 08:45:14 UTC (rev 1247) +++ trunk/src/dl-learner/org/dllearner/server/ClientState.java 2008-09-24 08:49:29 UTC (rev 1248) @@ -201,7 +201,7 @@ } /** - * @param is A component ID. + * @param id A component ID. * @return The component associated with this ID. * @see java.util.Map#get(java.lang.Object) */ Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2008-09-24 08:45:14 UTC (rev 1247) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2008-09-24 08:49:29 UTC (rev 1248) @@ -284,7 +284,6 @@ * Retrieves description parts that might cause inconsistency - for negative examples only. * @param ind * @param desc - * @return */ public Set<Description> getNegCriticalDescriptions(Individual ind, Description desc){ @@ -431,7 +430,6 @@ * Returns individuals that are in range of property. * @param objRestr * @param ind - * @return */ public Set<Individual> getIndividualsInPropertyRange(ObjectQuantorRestriction objRestr, Individual ind){ @@ -445,7 +443,6 @@ * Returns individuals that are not in range of property. * @param objRestr * @param ind - * @return */ public Set<Individual> getIndividualsNotInPropertyRange(ObjectQuantorRestriction objRestr, Individual ind){ @@ -529,7 +526,6 @@ * Get the complement classes where individual is asserted to. * @param desc * @param ind - * @return */ public Set<NamedClass> getComplements(Description desc, Individual ind){ // System.out.println("----------------" + desc + "---------------"); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifier.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifier.java 2008-09-24 08:45:14 UTC (rev 1247) +++ trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifier.java 2008-09-24 08:49:29 UTC (rev 1248) @@ -93,7 +93,6 @@ * Adds an EquivalentClassesAxiom axiom to the ontology. * @param newDesc new axiom to add * @param oldDesc old description - * @return */ public OWLOntologyChange addAxiomToOWL(Description newDesc, Description oldDesc){ @@ -478,7 +477,6 @@ * checks whether desc1 and desc2 are disjoint. * @param desc1 class 1 * @param desc2 class 2 - * @return */ public boolean isComplement(Description desc1, Description desc2){ @@ -555,7 +553,6 @@ /** * Returns object properties for an individual. * @param ind - * @return */ public Set<ObjectPropertyAssertion> getObjectProperties(Individual ind){ Set<ObjectPropertyAssertion> objectProperties = new HashSet<ObjectPropertyAssertion>(); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/RepairPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/RepairPanelDescriptor.java 2008-09-24 08:45:14 UTC (rev 1247) +++ trunk/src/dl-learner/org/dllearner/tools/ore/RepairPanelDescriptor.java 2008-09-24 08:49:29 UTC (rev 1248) @@ -215,7 +215,6 @@ /** * Returns all ontology changes been done by repairing ontology. - * @return */ public Set<OWLOntologyChange> getOntologyChanges() { return ontologyChanges; Modified: trunk/src/dl-learner/org/dllearner/utilities/Helper.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/Helper.java 2008-09-24 08:45:14 UTC (rev 1247) +++ trunk/src/dl-learner/org/dllearner/utilities/Helper.java 2008-09-24 08:49:29 UTC (rev 1248) @@ -208,7 +208,6 @@ * @param <T> * @param set1 * @param set2 - * @return */ public static <T> Set<T> union(Set<T> set1, Set<T> set2) { // TODO: effizientere Implementierung (längere Liste klonen und Elemente @@ -450,8 +449,7 @@ * concepts are those having prefix "anon" and concepts belonging to * the RDF, RDFS, OWL standards. * - * @param concepts - * @return + * @param concepts The set from which concepts will be removed. */ public static void removeUninterestingConcepts(Set<NamedClass> concepts) { Iterator<NamedClass> it = concepts.iterator(); @@ -536,7 +534,7 @@ /** * Checks whether the roles exist in background knowledge - * @param roles The roles to check. + * @param concepts The concepts to check. * @return The first non-existing role or null if they are all in the * background knowledge. */ Modified: trunk/src/dl-learner/org/dllearner/utilities/StringFormatter.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/StringFormatter.java 2008-09-24 08:45:14 UTC (rev 1247) +++ trunk/src/dl-learner/org/dllearner/utilities/StringFormatter.java 2008-09-24 08:49:29 UTC (rev 1248) @@ -8,7 +8,6 @@ * formats a double value between 0 and 100 to a percentage * ex: 0.7854684 will be return 78.5% * @param d - * @return */ public static String doubleToPercent(double d){ if(d>1.0 || d<0.0)return "bad format: "+d; Modified: trunk/src/dl-learner/org/dllearner/utilities/datastructures/Datastructures.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/datastructures/Datastructures.java 2008-09-24 08:45:14 UTC (rev 1247) +++ trunk/src/dl-learner/org/dllearner/utilities/datastructures/Datastructures.java 2008-09-24 08:49:29 UTC (rev 1248) @@ -50,7 +50,6 @@ * easy conversion * * @param s - * @return */ public static String[] setToArray(Set<String> s) { if(s==null)return null; Modified: trunk/src/dl-learner/org/dllearner/utilities/datastructures/SetManipulation.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/datastructures/SetManipulation.java 2008-09-24 08:45:14 UTC (rev 1247) +++ trunk/src/dl-learner/org/dllearner/utilities/datastructures/SetManipulation.java 2008-09-24 08:49:29 UTC (rev 1248) @@ -17,7 +17,6 @@ * * @param set * @param limit - * @return */ public static SortedSet<String> fuzzyShrink(SortedSet<String> set, int limit) { if (set.size() <= limit) { @@ -48,7 +47,6 @@ * * @param set * @param limit - * @return */ public static SortedSet<Individual> fuzzyShrinkInd(SortedSet<Individual> set, int limit) { if (set.size() <= limit) { @@ -78,7 +76,6 @@ * * @param set * @param limit - * @return */ public static SortedSet<String> stableShrink(SortedSet<String> set, int limit) { @@ -102,7 +99,6 @@ * * @param set * @param limit - * @return */ public static SortedSet<Individual> stableShrinkInd(SortedSet<Individual> set, int limit) { Modified: trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticNegativeExampleFinderOWL.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticNegativeExampleFinderOWL.java 2008-09-24 08:45:14 UTC (rev 1247) +++ trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticNegativeExampleFinderOWL.java 2008-09-24 08:49:29 UTC (rev 1248) @@ -72,7 +72,6 @@ /** * see <code> getNegativeExamples(int neglimit, boolean stable )</code> * @param neglimit - * @return */ public SortedSet<Individual> getNegativeExamples(int neglimit, boolean forceNegLimit ) { return getNegativeExamples(neglimit, false, forceNegLimit); @@ -86,7 +85,6 @@ * @param neglimit size of negative Example set, 0 means all, which can be quite large * @param stable decides whether neg Examples are randomly picked, default false, faster for developing, since the cache can be used * @param forceNegLimit forces that exactly neglimit instances are returned by adding more instances - * @return */ public SortedSet<Individual> getNegativeExamples(int neglimit, boolean stable, boolean forceNegLimit ) { SortedSet<Individual> negatives = new TreeSet<Individual>(); Modified: trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticNegativeExampleFinderSPARQL.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticNegativeExampleFinderSPARQL.java 2008-09-24 08:45:14 UTC (rev 1247) +++ trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticNegativeExampleFinderSPARQL.java 2008-09-24 08:49:29 UTC (rev 1248) @@ -54,7 +54,7 @@ * takes as input a full positive set to make sure no negatives are added as positives * * @param fullPositiveSet - * @param SPARQLTasks st + * @param st */ public AutomaticNegativeExampleFinderSPARQL( SortedSet<String> fullPositiveSet, @@ -71,7 +71,6 @@ /** * see <code> getNegativeExamples(int neglimit, boolean stable )</code> * @param neglimit - * @return */ public SortedSet<String> getNegativeExamples(int neglimit ) { return getNegativeExamples(neglimit, false); @@ -84,7 +83,6 @@ * * @param neglimit size of negative Example set, 0 means all, which can be quite large several thousands * @param stable decides whether neg Examples are randomly picked, default false, faster for developing, since the cache can be used - * @return */ public SortedSet<String> getNegativeExamples(int neglimit, boolean stable ) { SortedSet<String> negatives = new TreeSet<String>(); Modified: trunk/src/dl-learner/org/dllearner/utilities/owl/OntologyCloserOWLAPI.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/owl/OntologyCloserOWLAPI.java 2008-09-24 08:45:14 UTC (rev 1247) +++ trunk/src/dl-learner/org/dllearner/utilities/owl/OntologyCloserOWLAPI.java 2008-09-24 08:49:29 UTC (rev 1248) @@ -178,7 +178,6 @@ /** * makes some retrieval queries * @param conceptStr - * @return */ public SortedSet<Individual> verifyConcept(String conceptStr) { Modified: trunk/src/dl-learner/org/dllearner/utilities/statistics/Stat.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/statistics/Stat.java 2008-09-24 08:45:14 UTC (rev 1247) +++ trunk/src/dl-learner/org/dllearner/utilities/statistics/Stat.java 2008-09-24 08:49:29 UTC (rev 1248) @@ -85,7 +85,7 @@ /** * Gets the mean of all numbers as percentage * *100 so 0.5678 -> "56.78%" - * @return + * @return The mean as formatted string. */ public String getMeanAsPercentage(){ return df.format(getMean()); @@ -94,7 +94,7 @@ /** * Gets the standard deviation of all numbers. * - * @return The stanard deviation of all numbers. + * @return The standard deviation of all numbers. */ public double getStandardDeviation() { if(count <= 1) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sk...@us...> - 2008-09-24 12:23:34
|
Revision: 1251 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1251&view=rev Author: sknappe Date: 2008-09-24 11:49:47 +0000 (Wed, 24 Sep 2008) Log Message: ----------- bugfix in sparqlknowledgesource, changed navigator manipulator (added a rule to filter type tripels that are not yago), changed evaluationdescriptions ws a bit (added method with 3 parameters, bugfix for JSON syntax) Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/algorithms/DBpediaNavigationSuggestor.java trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorOtherRule.java trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorFilterRule.java Modified: trunk/src/dl-learner/org/dllearner/algorithms/DBpediaNavigationSuggestor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/DBpediaNavigationSuggestor.java 2008-09-24 08:58:31 UTC (rev 1250) +++ trunk/src/dl-learner/org/dllearner/algorithms/DBpediaNavigationSuggestor.java 2008-09-24 11:49:47 UTC (rev 1251) @@ -21,6 +21,7 @@ import java.util.Collection; import java.util.LinkedList; +import java.util.List; import org.dllearner.algorithms.refexamples.ExampleBasedROLComponent; import org.dllearner.core.ComponentInitException; @@ -180,6 +181,11 @@ public EvaluatedDescription getCurrentlyBestEvaluatedDescription() { return learner.getCurrentlyBestEvaluatedDescription(); } + + @Override + public List<EvaluatedDescription> getCurrentlyBestEvaluatedDescriptions(int nrOfDescriptions, double accuracyThreshold, boolean filterNonMinimalDescriptions){ + return learner.getCurrentlyBestEvaluatedDescriptions(nrOfDescriptions, accuracyThreshold, filterNonMinimalDescriptions); + } @Override public Score getSolutionScore() { Added: trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorFilterRule.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorFilterRule.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorFilterRule.java 2008-09-24 11:49:47 UTC (rev 1251) @@ -0,0 +1,69 @@ +/** + * Copyright (C) 2007-2008, Jens Lehmann + * + * This file is part of DL-Learner. + * + * DL-Learner is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * DL-Learner is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package org.dllearner.kb.manipulator; + +import java.util.LinkedList; +import java.util.List; +import java.util.SortedSet; + +import org.dllearner.kb.extraction.Node; +import org.dllearner.utilities.datastructures.RDFNodeTuple; +import org.dllearner.utilities.owl.OWLVocabulary; + +import com.hp.hpl.jena.rdf.model.Literal; +import com.hp.hpl.jena.rdf.model.RDFNode; +import com.hp.hpl.jena.rdf.model.impl.ResourceImpl; + + +public class DBpediaNavigatorFilterRule extends Rule{ + + + public DBpediaNavigatorFilterRule(Months month){ + super(month); + } + // Set<String> classproperties; + + @Override + public SortedSet<RDFNodeTuple> applyRule(Node subject, SortedSet<RDFNodeTuple> tuples){ + RDFNode clazz = null; + RDFNodeTuple typeTuple = null; + List<RDFNodeTuple> toRemove=new LinkedList<RDFNodeTuple>(); + for (RDFNodeTuple tuple : tuples) { + + if (tuple.a.toString().equals(OWLVocabulary.RDF_TYPE)){ + clazz = tuple.b; + typeTuple = tuple; + } + + if (tuple.a.toString().equals("http://www.w3.org/1999/02/22-rdf-syntax-ns#type") && !(tuple.b.toString().startsWith("http://dbpedia.org/class/yago"))){ + toRemove.add(typeTuple); + } + }//end for + for (RDFNodeTuple tuple : toRemove) + tuples.remove(tuple); + return tuples; + } + + @Override + public void logJamon(){ + + } + +} Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorOtherRule.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorOtherRule.java 2008-09-24 08:58:31 UTC (rev 1250) +++ trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorOtherRule.java 2008-09-24 11:49:47 UTC (rev 1251) @@ -45,7 +45,7 @@ RDFNode clazz = null; RDFNodeTuple typeTuple = null; for (RDFNodeTuple tuple : tuples) { - + if (tuple.a.toString().equals(OWLVocabulary.RDF_TYPE)){ clazz = tuple.b; typeTuple = tuple; Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java 2008-09-24 08:58:31 UTC (rev 1250) +++ trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java 2008-09-24 11:49:47 UTC (rev 1251) @@ -89,8 +89,9 @@ public static Manipulator getDBpediaNavigatorManipulator(){ Manipulator m = new Manipulator(); - m.addRule(new DBPediaNavigatorCityLocatorRule(Months.JANUARY)); - m.addRule(new DBpediaNavigatorOtherRule(Months.DECEMBER)); + //m.addRule(new DBPediaNavigatorCityLocatorRule(Months.JANUARY)); + //m.addRule(new DBpediaNavigatorOtherRule(Months.DECEMBER)); + m.addRule(new DBpediaNavigatorFilterRule(Months.JANUARY)); return m; } Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-09-24 08:58:31 UTC (rev 1250) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-09-24 11:49:47 UTC (rev 1251) @@ -417,7 +417,7 @@ public Manipulator getManipulator() { // get Options for Filters - if (configurator.getPredefinedManipulator() == null) { + if (configurator.getPredefinedManipulator() != null) { return Manipulator.getManipulatorByName(configurator .getPredefinedManipulator()); Modified: trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java =================================================================== --- trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java 2008-09-24 08:58:31 UTC (rev 1250) +++ trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java 2008-09-24 11:49:47 UTC (rev 1251) @@ -394,12 +394,26 @@ @WebMethod public String getCurrentlyBestEvaluatedDescriptions(int id, int limit) throws ClientNotKnownException{ + return currentlyBestEvaluatedDescriptions(id,limit,-1,false); + } + + @WebMethod + public String getCurrentlyBestEvaluatedDescriptionsFiltered(int id,int nrOfDescriptions, double accuracyThreshold, boolean filterNonMinimalDescriptions) throws ClientNotKnownException + { + return currentlyBestEvaluatedDescriptions(id,nrOfDescriptions,accuracyThreshold,filterNonMinimalDescriptions); + } + + private String currentlyBestEvaluatedDescriptions(int id,int nrOfDescriptions, double accuracyThreshold, boolean filterNonMinimalDescriptions) throws ClientNotKnownException + { ClientState state = getState(id); - List<EvaluatedDescription> descriptions = state.getLearningAlgorithm().getCurrentlyBestEvaluatedDescriptions(limit); + List<EvaluatedDescription> descriptions; + if (accuracyThreshold!=-1) descriptions = state.getLearningAlgorithm().getCurrentlyBestEvaluatedDescriptions(nrOfDescriptions, accuracyThreshold, filterNonMinimalDescriptions); + else descriptions = state.getLearningAlgorithm().getCurrentlyBestEvaluatedDescriptions(nrOfDescriptions); String json = "{"; int count = 1; for(EvaluatedDescription description : descriptions) { - json += "\"solution" + count + "\" : " + description.asJSON(); + if (count>1) json += ",\"solution" + count + "\" : " + description.asJSON(); + else json += "\"solution" + count + "\" : " + description.asJSON(); count++; } json+="}"; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-09-24 15:38:25
|
Revision: 1255 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1255&view=rev Author: kurzum Date: 2008-09-24 15:33:30 +0000 (Wed, 24 Sep 2008) Log Message: ----------- latest changes Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/core/configurators/SparqlKnowledgeSourceConfigurator.java trunk/src/dl-learner/org/dllearner/kb/aquisitors/RDFBlankNode.java trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupleAquisitor.java trunk/src/dl-learner/org/dllearner/kb/extraction/BlankNode.java trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java trunk/src/dl-learner/org/dllearner/kb/extraction/DatatypePropertyNode.java trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java trunk/src/dl-learner/org/dllearner/kb/extraction/LiteralNode.java trunk/src/dl-learner/org/dllearner/kb/extraction/Manager.java trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java trunk/src/dl-learner/org/dllearner/kb/extraction/ObjectPropertyNode.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java trunk/src/dl-learner/org/dllearner/utilities/datastructures/RDFNodeTuple.java trunk/src/dl-learner/org/dllearner/utilities/owl/OWLVocabulary.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/kb/aquisitors/package.html trunk/src/dl-learner/org/dllearner/kb/extraction/package.html trunk/src/dl-learner/org/dllearner/kb/manipulator/package.html Modified: trunk/src/dl-learner/org/dllearner/core/configurators/SparqlKnowledgeSourceConfigurator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/configurators/SparqlKnowledgeSourceConfigurator.java 2008-09-24 13:36:46 UTC (rev 1254) +++ trunk/src/dl-learner/org/dllearner/core/configurators/SparqlKnowledgeSourceConfigurator.java 2008-09-24 15:33:30 UTC (rev 1255) @@ -151,7 +151,7 @@ return (Set<String>) ComponentManager.getInstance().getConfigOptionValue(sparqlKnowledgeSource, "objList") ; } /** -* saveExtractedFragment Specifies whether the extracted ontology is written to a file or not.. +* saveExtractedFragment Specifies whether the extracted ontology is written to a file or not. The OWL file is written to the cache dir.. * mandatory: false| reinit necessary: true * default value: true * @return boolean @@ -345,7 +345,7 @@ reinitNecessary = true; } /** -* @param saveExtractedFragment Specifies whether the extracted ontology is written to a file or not.. +* @param saveExtractedFragment Specifies whether the extracted ontology is written to a file or not. The OWL file is written to the cache dir.. * mandatory: false| reinit necessary: true * default value: true **/ Modified: trunk/src/dl-learner/org/dllearner/kb/aquisitors/RDFBlankNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/aquisitors/RDFBlankNode.java 2008-09-24 13:36:46 UTC (rev 1254) +++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/RDFBlankNode.java 2008-09-24 15:33:30 UTC (rev 1255) @@ -47,6 +47,7 @@ return bNodeId; } //RBC + @Override public String toString(){ //RBC return "I'm a blank node with id: "+bNodeId+"||"+blankNode; Modified: trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupleAquisitor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupleAquisitor.java 2008-09-24 13:36:46 UTC (rev 1254) +++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupleAquisitor.java 2008-09-24 15:33:30 UTC (rev 1255) @@ -88,7 +88,7 @@ tuple.b = new RDFBlankNode(currentId, tuple.b); System.out.println(uri+" replaced blanknode "+tuple.b); dissolveBlankNodes(currentId, uri, tuple); - System.out.println(BlankNodeCollector.getBlankNodeMap()); + //System.out.println(BlankNodeCollector.getBlankNodeMap()); } } Added: trunk/src/dl-learner/org/dllearner/kb/aquisitors/package.html =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/aquisitors/package.html (rev 0) +++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/package.html 2008-09-24 15:33:30 UTC (rev 1255) @@ -0,0 +1,7 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> +<html> +<head></head> +<body bgcolor="white"> +<p>Different classes for physically extracting triples from data sources.</p> +</body> +</html> Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/BlankNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/BlankNode.java 2008-09-24 13:36:46 UTC (rev 1254) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/BlankNode.java 2008-09-24 15:33:30 UTC (rev 1255) @@ -1,7 +1,10 @@ package org.dllearner.kb.extraction; +import java.net.URI; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; +import java.util.Set; import java.util.SortedSet; import java.util.TreeSet; @@ -10,18 +13,26 @@ import org.dllearner.kb.aquisitors.TupleAquisitor; import org.dllearner.kb.manipulator.Manipulator; import org.dllearner.utilities.datastructures.RDFNodeTuple; +import org.dllearner.utilities.owl.OWLVocabulary; +import org.semanticweb.owl.model.OWLDataFactory; +import org.semanticweb.owl.model.OWLDescription; public class BlankNode extends Node { RDFBlankNode bNode; + String inboundEdge; + + private List<Node> connectedNodes =new ArrayList<Node>(); + private List<ObjectPropertyNode> objectProperties = new ArrayList<ObjectPropertyNode>(); private List<DatatypePropertyNode> datatypeProperties = new ArrayList<DatatypePropertyNode>(); - public BlankNode(RDFBlankNode bNode){ - super("_:internal_"+bNode.getBNodeId()); + public BlankNode(RDFBlankNode bNode, String inboundEdge){ + super(""+bNode.getBNodeId()); this.bNode=bNode; + this.inboundEdge = inboundEdge; } @@ -34,21 +45,25 @@ for (RDFNodeTuple tuple : s) { if(tuple.b.isLiteral()) { datatypeProperties.add(new DatatypePropertyNode(tuple.a.toString(), this, new LiteralNode(tuple.b) )); + connectedNodes.add(new DatatypePropertyNode(tuple.a.toString(), this, new LiteralNode(tuple.b) )); }else if(tuple.b.isAnon()){ - BlankNode tmp = new BlankNode( (RDFBlankNode)tuple.b); + BlankNode tmp = new BlankNode( (RDFBlankNode)tuple.b, tuple.a.toString()); objectProperties.add(new ObjectPropertyNode(tuple.a.toString(), this, tmp )); + connectedNodes.add(new BlankNode( (RDFBlankNode)tuple.b, tuple.a.toString())); newNodes.add(tmp); }else{ objectProperties.add(new ObjectPropertyNode(tuple.a.toString(), this, new ClassNode(tuple.b.toString()) )); + connectedNodes.add(new ObjectPropertyNode(tuple.a.toString(), this, new ClassNode(tuple.b.toString()) )); } } return newNodes; } @Override - public void expandProperties(TupleAquisitor TupelAquisitor, + public List<BlankNode> expandProperties(TupleAquisitor TupelAquisitor, Manipulator manipulator) { + return new ArrayList<BlankNode>(); } @Override @@ -68,8 +83,77 @@ } @Override + public URI getURI(){ + return URI.create("http://www.empty.org/empty#empty"); + } + + @Override public void toOWLOntology( OWLAPIOntologyCollector owlAPIOntologyCollector){ //FIXME } + + public String getInBoundEdge(){ + return inboundEdge; + } + + public OWLDescription getAnonymousClass(OWLAPIOntologyCollector owlAPIOntologyCollector){ + OWLDataFactory factory = owlAPIOntologyCollector.getFactory(); + OWLDescription ret = factory.getOWLClass(URI.create("http://dummy.org/dummy")); + + for (Node n : connectedNodes) { + System.out.println(n.toString()); + } + + if(containsDataTypeProperties()){ + //do nothing right now, add a return here; + } + + Set<OWLDescription> l = new HashSet<OWLDescription>(); + for (Node n : connectedNodes) { + if(n instanceof BlankNode){ + l.add(((BlankNode)n).getAnonymousClass(owlAPIOntologyCollector)); + }else{ + l.add(factory.getOWLClass(n.getURI())); + } + } + + if(isOfType(OWLVocabulary.OWL_intersectionOf)){ + ret = factory.getOWLObjectIntersectionOf(l); + System.out.println("aaa"); + }else if(isOfType(OWLVocabulary.OWL_unionOf)){ + ret = factory.getOWLObjectUnionOf(l); + System.out.println("aaa"); + }else if(isOfType(OWLVocabulary.OWL_complementOf)){ + ret = factory.getOWLObjectComplementOf(new ArrayList<OWLDescription>(l).remove(0)); + System.out.println("aaa"); + } + return ret; + } + + + + private boolean isOfType(String type){ + for (Node n : connectedNodes) { + if((n instanceof BlankNode ) + && + ((BlankNode)n).getInBoundEdge().equals(type)) { + return true; + }else if((n instanceof ObjectPropertyNode ) + && + ((ObjectPropertyNode)n).getAPart().toString().equals(type)) { + return true; + } + } + return false; + } + + private boolean containsDataTypeProperties(){ + for (Node n : connectedNodes) { + if(n instanceof DatatypePropertyNode) { + return true; + } + } + return false; + } } Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java 2008-09-24 13:36:46 UTC (rev 1254) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java 2008-09-24 15:33:30 UTC (rev 1255) @@ -48,7 +48,8 @@ List<ObjectPropertyNode> classProperties = new ArrayList<ObjectPropertyNode>(); List<DatatypePropertyNode> datatypeProperties = new ArrayList<DatatypePropertyNode>(); - + List<BlankNode> blankNodes = new ArrayList<BlankNode>(); + public ClassNode(String uri) { super(uri); } @@ -80,12 +81,12 @@ }else if(tuple.b.isAnon()){ logger.warn("blanknodes not supported as of now "+ this +" in tuple" + tuple); RDFBlankNode n = (RDFBlankNode) tuple.b; - //SortedSet<RDFNodeTuple> bNodeTuples = BlankNodeCollector.getBlankNode(n.getBNodeId()); - //BlankNode tmp = new BlankNode(n); + + BlankNode tmp = new BlankNode( n, tuple.a.toString()); //add it to the graph - //classProperties.add(new ObjectPropertyNode( tuple.a.toString(), this, tmp)); + blankNodes.add(tmp); //return tmp; - return null; + return tmp; // substitute rdf:type with owl:subclassof }else if (property.equals(OWLVocabulary.RDF_TYPE) || OWLVocabulary.isStringSubClassVocab(property)) { @@ -108,7 +109,8 @@ // gets the types for properties recursively @Override - public void expandProperties(TupleAquisitor tupelAquisitor, Manipulator manipulator) { + public List<BlankNode> expandProperties(TupleAquisitor tupelAquisitor, Manipulator manipulator) { + return new ArrayList<BlankNode>(); } @@ -151,7 +153,7 @@ }else if(one.getURIString().equals(OWLVocabulary.OWL_EQUIVALENT_CLASS)){ owlAPIOntologyCollector.addAxiom(factory.getOWLEquivalentClassesAxiom(me, c)); }else { - logger.warn("missing : " +one.getURIString()); + tail( getURIString()+"||"+one.getURIString()); } one.getBPart().toOWLOntology(owlAPIOntologyCollector); } @@ -166,10 +168,13 @@ OWLLabelAnnotation label = factory.getOWLLabelAnnotation(one.getBPart().getLiteral().getString()); owlAPIOntologyCollector.addAxiom(factory.getOWLEntityAnnotationAxiom(me, label)); }else { - logger.warn("missing : " +one.getURIString()); + tail(getURIString()+"||"+one.getURIString()); } } + for (BlankNode bn : blankNodes) { + System.out.println(bn.getAnonymousClass(owlAPIOntologyCollector).toString()); + } }catch (Exception e) { System.out.println("aaa"+getURIString()); e.printStackTrace(); Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/DatatypePropertyNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/DatatypePropertyNode.java 2008-09-24 13:36:46 UTC (rev 1254) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/DatatypePropertyNode.java 2008-09-24 15:33:30 UTC (rev 1255) @@ -19,6 +19,7 @@ */ package org.dllearner.kb.extraction; +import java.util.ArrayList; import java.util.List; import java.util.SortedSet; import java.util.TreeSet; @@ -49,7 +50,8 @@ // gets the types for properties recursively @Override - public void expandProperties(TupleAquisitor tupelAquisitor, Manipulator manipulator) { + public List<BlankNode> expandProperties(TupleAquisitor tupelAquisitor, Manipulator manipulator) { + return new ArrayList<BlankNode>(); } @Override Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java 2008-09-24 13:36:46 UTC (rev 1254) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java 2008-09-24 15:33:30 UTC (rev 1255) @@ -98,7 +98,7 @@ tupleAquisitor.setNextTaskToNormal(); tmp.addAll(nextNode.expand(tupleAquisitor, configuration.getManipulator())); - //System.out.println(tmpVec); + //.out.println(tmpVec); } collectNodes.addAll(tmp); Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java 2008-09-24 13:36:46 UTC (rev 1254) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java 2008-09-24 15:33:30 UTC (rev 1255) @@ -112,10 +112,12 @@ // gets the types for properties recursively @Override - public void expandProperties(TupleAquisitor tupelAquisitor, Manipulator manipulator) { + public List<BlankNode> expandProperties(TupleAquisitor tupelAquisitor, Manipulator manipulator) { + List<BlankNode> ret = new ArrayList<BlankNode>(); for (ObjectPropertyNode one : objectProperties) { - one.expandProperties(tupelAquisitor, manipulator); + ret.addAll(one.expandProperties(tupelAquisitor, manipulator)); } + return ret; } @@ -164,12 +166,12 @@ for (DatatypePropertyNode one : datatypeProperties) { OWLDataProperty p = factory.getOWLDataProperty(one.getURI()); Literal ln = one.getBPart().getLiteral(); + try{ - - if(one.getBPart().isString()){ owlAPIOntologyCollector.addAxiom( - factory.getOWLDataPropertyAssertionAxiom(me, p, ln.getString())); + factory.getOWLDataPropertyAssertionAxiom(me, p, ln.getString())); + } else if(one.getBPart().isDouble()){ owlAPIOntologyCollector.addAxiom( factory.getOWLDataPropertyAssertionAxiom(me, p, ln.getDouble())); @@ -183,7 +185,7 @@ owlAPIOntologyCollector.addAxiom( factory.getOWLDataPropertyAssertionAxiom(me, p, ln.getBoolean())); } else { - logger.warn("missing : "+one.getURIString()); + tail(getURIString()+"||"+one.getURIString()); } Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/LiteralNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/LiteralNode.java 2008-09-24 13:36:46 UTC (rev 1254) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/LiteralNode.java 2008-09-24 15:33:30 UTC (rev 1255) @@ -70,7 +70,8 @@ // gets the types for properties recursively @Override - public void expandProperties(TupleAquisitor tupelAquisitor, Manipulator manipulator) { + public List<BlankNode> expandProperties(TupleAquisitor tupelAquisitor, Manipulator manipulator) { + return new ArrayList<BlankNode>(); } @Override @@ -145,6 +146,9 @@ return false; } } + public boolean hasLanguageTag(){ + return (!(l.getLanguage().length()==0)); + } Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/Manager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/Manager.java 2008-09-24 13:36:46 UTC (rev 1254) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/Manager.java 2008-09-24 15:33:30 UTC (rev 1255) @@ -85,12 +85,15 @@ } - public OWLOntology getOWLAPIOntologyForNodes(List<Node> nodes){ + public OWLOntology getOWLAPIOntologyForNodes(List<Node> nodes, boolean saveOntology){ for (Node n : nodes) { n.toOWLOntology(configuration.getOwlAPIOntologyCollector()); } + if(saveOntology){ configuration.getOwlAPIOntologyCollector().saveOntology(); + } return configuration.getOwlAPIOntologyCollector().getCurrentOntology(); + } public URL getPhysicalOntologyURL()throws MalformedURLException{ Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java 2008-09-24 13:36:46 UTC (rev 1254) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java 2008-09-24 15:33:30 UTC (rev 1255) @@ -23,6 +23,7 @@ import java.util.List; import java.util.SortedSet; +import org.apache.log4j.Logger; import org.dllearner.kb.aquisitors.TupleAquisitor; import org.dllearner.kb.manipulator.Manipulator; @@ -35,8 +36,11 @@ * */ public abstract class Node { - + private static Logger logger = Logger + .getLogger(Node.class); + // make sure no information is missed during the transition to OWLAPI + public static final boolean DEBUGTAIL = true; protected String uri; // protected String type; @@ -61,7 +65,7 @@ * * @param manipulator */ - public abstract void expandProperties( + public abstract List<BlankNode> expandProperties( TupleAquisitor TupelAquisitor, Manipulator manipulator); /** @@ -99,11 +103,16 @@ return "<"+uri+"> "; } - - - public boolean isExpanded(){ return expanded; } + + public void tail(String uri){ + if(DEBUGTAIL){ + logger.warn("missing: "+uri); + System.exit(0); + } + + } } Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/ObjectPropertyNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/ObjectPropertyNode.java 2008-09-24 13:36:46 UTC (rev 1254) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/ObjectPropertyNode.java 2008-09-24 15:33:30 UTC (rev 1255) @@ -19,15 +19,22 @@ */ package org.dllearner.kb.extraction; +import java.net.URI; +import java.util.ArrayList; +import java.util.HashSet; import java.util.List; +import java.util.Set; import java.util.SortedSet; import java.util.TreeSet; +import org.dllearner.kb.aquisitors.RDFBlankNode; import org.dllearner.kb.aquisitors.TupleAquisitor; import org.dllearner.kb.manipulator.Manipulator; import org.dllearner.utilities.datastructures.RDFNodeTuple; import org.dllearner.utilities.owl.OWLVocabulary; +import org.semanticweb.owl.model.OWLClass; import org.semanticweb.owl.model.OWLDataFactory; +import org.semanticweb.owl.model.OWLLabelAnnotation; import org.semanticweb.owl.model.OWLObjectProperty; @@ -46,6 +53,7 @@ private SortedSet<String> specialTypes = new TreeSet<String>(); @SuppressWarnings("unused") private SortedSet<RDFNodeTuple> propertyInformation = new TreeSet<RDFNodeTuple>(); + List<BlankNode> blankNodes = new ArrayList<BlankNode>(); public ObjectPropertyNode(String propertyURI, Node a, Node b) { super(propertyURI, a, b); @@ -60,16 +68,27 @@ // gets the types for properties recursively @Override - public void expandProperties(TupleAquisitor tupelAquisitor, Manipulator manipulator) { - b.expandProperties(tupelAquisitor, manipulator); + public List<BlankNode> expandProperties(TupleAquisitor tupelAquisitor, Manipulator manipulator) { + List<BlankNode> ret = new ArrayList<BlankNode>(); + ret.addAll(b.expandProperties(tupelAquisitor, manipulator)); SortedSet<RDFNodeTuple> newTypes = tupelAquisitor.getTupelForResource(uri); for (RDFNodeTuple tuple : newTypes) { try { + if (tuple.a.toString().equals(OWLVocabulary.RDF_TYPE)) { - specialTypes.add(tuple.b.toString()); + if(!tuple.b.toString().equals(OWLVocabulary.OWL_OBJECTPROPERTY)){ + specialTypes.add(tuple.b.toString()); + } }else if(tuple.b.isAnon()){ logger.warn("blanknodes currently not implemented in this tuple aquisitor"); + RDFBlankNode n = (RDFBlankNode) tuple.b; + + BlankNode tmp = new BlankNode( n, tuple.a.toString()); + //add it to the graph + blankNodes.add(tmp); + ret.add( tmp); }else{ + propertyInformation.add(tuple); } @@ -77,7 +96,10 @@ logger.warn("resource "+uri+" with "+ tuple); e.printStackTrace(); } + } + return ret; + } @@ -105,8 +127,40 @@ OWLDataFactory factory = owlAPIOntologyCollector.getFactory(); OWLObjectProperty me =factory.getOWLObjectProperty(getURI()); + for (RDFNodeTuple one : propertyInformation) { + if(one.aPartContains(OWLVocabulary.RDFS_range)){ + OWLClass c = factory.getOWLClass(URI.create(one.a.toString())); + owlAPIOntologyCollector.addAxiom(factory.getOWLObjectPropertyRangeAxiom(me, c)); + }else if(one.aPartContains(OWLVocabulary.RDFS_domain)){ + OWLClass c = factory.getOWLClass(URI.create(one.a.toString())); + owlAPIOntologyCollector.addAxiom(factory.getOWLObjectPropertyDomainAxiom(me, c)); + }else if(one.aPartContains(OWLVocabulary.RDFS_SUB_PROPERTY_OF)){ + OWLObjectProperty p = factory.getOWLObjectProperty(URI.create(one.b.toString())); + owlAPIOntologyCollector.addAxiom(factory.getOWLSubObjectPropertyAxiom(me, p)); + + }else if(one.aPartContains(OWLVocabulary.OWL_inverseOf)){ + OWLObjectProperty p = factory.getOWLObjectProperty(URI.create(one.b.toString())); + owlAPIOntologyCollector.addAxiom(factory.getOWLInverseObjectPropertiesAxiom(me, p)); + }else if(one.aPartContains(OWLVocabulary.OWL_equivalentProperty)){ + OWLObjectProperty p = factory.getOWLObjectProperty(URI.create(one.b.toString())); + Set<OWLObjectProperty> tmp = new HashSet<OWLObjectProperty>(); + tmp.add(me);tmp.add(p); + owlAPIOntologyCollector.addAxiom(factory.getOWLEquivalentObjectPropertiesAxiom(tmp)); + + }else if(one.a.toString().equals(OWLVocabulary.RDFS_LABEL)){ + OWLLabelAnnotation label = factory.getOWLLabelAnnotation(one.b.toString()); + owlAPIOntologyCollector.addAxiom(factory.getOWLEntityAnnotationAxiom(me, label)); + }else if(one.b.isLiteral()){ + // XXX comments + } + else { + tail(getURIString()+"||"+one); + } + + } for (String one : specialTypes) { + if(one.equals(OWLVocabulary.OWL_FunctionalProperty)){ owlAPIOntologyCollector.addAxiom(factory.getOWLFunctionalObjectPropertyAxiom(me)); }else if(one.equals(OWLVocabulary.OWL_InverseFunctionalProperty)){ @@ -115,8 +169,13 @@ owlAPIOntologyCollector.addAxiom(factory.getOWLTransitiveObjectPropertyAxiom(me)); }else if(one.equals(OWLVocabulary.OWL_SymmetricProperty)){ owlAPIOntologyCollector.addAxiom(factory.getOWLSymmetricObjectPropertyAxiom(me)); + }else{ + tail(getURIString()+"||"+one); } } + for (BlankNode bn : blankNodes) { + System.out.println(bn.getAnonymousClass(owlAPIOntologyCollector).toString()); + } } Added: trunk/src/dl-learner/org/dllearner/kb/extraction/package.html =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/package.html (rev 0) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/package.html 2008-09-24 15:33:30 UTC (rev 1255) @@ -0,0 +1,7 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> +<html> +<head></head> +<body bgcolor="white"> +<p>Core extraction algorithm including datastructures.</p> +</body> +</html> Added: trunk/src/dl-learner/org/dllearner/kb/manipulator/package.html =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/manipulator/package.html (rev 0) +++ trunk/src/dl-learner/org/dllearner/kb/manipulator/package.html 2008-09-24 15:33:30 UTC (rev 1255) @@ -0,0 +1,7 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> +<html> +<head></head> +<body bgcolor="white"> +<p>Classes for manipulating extracted triples</p> +</body> +</html> Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-09-24 13:36:46 UTC (rev 1254) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-09-24 15:33:30 UTC (rev 1255) @@ -170,11 +170,8 @@ options .add(new BooleanConfigOption( "saveExtractedFragment", - "Specifies whether the extracted ontology is written to a file or not.", + "Specifies whether the extracted ontology is written to a file or not. The OWL file is written to the cache dir.", true, false, true)); - - - options.add(new StringTupleListConfigOption("replacePredicate", "rule for replacing predicates", new ArrayList<StringTuple>(), false, true)); options.add(new StringTupleListConfigOption("replaceObject", @@ -253,49 +250,14 @@ extractionTime.setTime(); List<Node> seedNodes = m.extract(configurator.getInstances()); - fragment = m.getOWLAPIOntologyForNodes(seedNodes); - //System.exit(0); + fragment = m.getOWLAPIOntologyForNodes(seedNodes, configurator.getSaveExtractedFragment()); - //ont = m.getNTripleForNodes(seedNodes); extractionTime.printAndSet("extraction needed"); logger.info("Finished collecting Fragment"); ontologyFragmentURL = m.getPhysicalOntologyURL(); - /* - if (dumpToFile) { - String filename = System.currentTimeMillis() + ".nt"; - String basedir = "cache" + File.separator; - try { - if (!new File(basedir).exists()) { - new File(basedir).mkdir(); - } - - File dump = new File(basedir + filename); - - FileWriter fw = new FileWriter(dump, true); - fw.write(ont); - fw.flush(); - fw.close(); - - dumpFile = (dump).toURI().toURL(); - - if (configurator.getConvertNT2RDF()) { - NT2RDF.convertNT2RDF(dump.getAbsolutePath()); - - } - } catch (Exception e) { - e.printStackTrace(); - } - }*/ - /*if (format.equals("KB")) { - try { - // kb = KBParser.parseKBFile(new StringReader(ont)); - kb = KBParser.parseKBFile(dumpFile); - } catch (Exception e) { - e.printStackTrace(); - } - }*/ + } catch (Exception e) { e.printStackTrace(); } @@ -318,13 +280,8 @@ */ @Override public String toDIG(URI kbURI) { - //if (format.equals("RDF/XML")){ return JenaOWLDIGConverter.getTellsString(ontologyFragmentURL, OntologyFormat.RDF_XML, kbURI); - //}else { - //throw new Error("KB Format not supported any more"); - //return DIGConverter.getDIGString(kb, kbURI).toString(); - //} } /* @@ -363,9 +320,6 @@ } - /*public String[] getOntArray() { - return ontArray; - }*/ public SparqlQuery sparqlQuery(String query) { return new SparqlQuery(query, getSparqlEndpoint()); Modified: trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java 2008-09-24 13:36:46 UTC (rev 1254) +++ trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java 2008-09-24 15:33:30 UTC (rev 1255) @@ -76,7 +76,7 @@ 200 ); m.useConfiguration(conf); - + @SuppressWarnings("unused") String u2 = "http://dbpedia.org/resource/Angela_Merkel"; String filename = "cache/"+System.currentTimeMillis() + ".nt"; Modified: trunk/src/dl-learner/org/dllearner/utilities/datastructures/RDFNodeTuple.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/datastructures/RDFNodeTuple.java 2008-09-24 13:36:46 UTC (rev 1254) +++ trunk/src/dl-learner/org/dllearner/utilities/datastructures/RDFNodeTuple.java 2008-09-24 15:33:30 UTC (rev 1255) @@ -62,7 +62,7 @@ return b.toString().contains(partOf); } - @Deprecated + public String getNTriple (String subject){ String ret = "<"+subject+"> "; ret+="<"+a.toString()+"> "; Modified: trunk/src/dl-learner/org/dllearner/utilities/owl/OWLVocabulary.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/owl/OWLVocabulary.java 2008-09-24 13:36:46 UTC (rev 1254) +++ trunk/src/dl-learner/org/dllearner/utilities/owl/OWLVocabulary.java 2008-09-24 15:33:30 UTC (rev 1255) @@ -30,7 +30,11 @@ public static final String RDFS_LABEL = "http://www.w3.org/2000/01/rdf-schema#label"; public static final String RDFS_DESCRIPTION = "http://www.w3.org/2000/01/rdf-schema#description"; + public static final String RDFS_SUB_PROPERTY_OF = "http://www.w3.org/2000/01/rdf-schema#subPropertyOf"; + public static final String RDFS_domain = "http://www.w3.org/2000/01/rdf-schema#domain"; + public static final String RDFS_range = "http://www.w3.org/2000/01/rdf-schema#range"; + public static final String OWL_SAME_AS = "http://www.w3.org/2002/07/owl#sameAs"; public static final String OWL_OBJECTPROPERTY = "http://www.w3.org/2002/07/owl#ObjectProperty"; public static final String OWL_DATATYPPROPERTY = "http://www.w3.org/2002/07/owl#DataTypeProperty"; @@ -40,13 +44,24 @@ public static final String OWL_DISJOINT_WITH = "http://www.w3.org/2002/07/owl#disjointWith"; public static final String OWL_EQUIVALENT_CLASS = "http://www.w3.org/2002/07/owl#equivalentClass"; + public static final String OWL_intersectionOf = "http://www.w3.org/2002/07/owl#intersectionOf"; + public static final String OWL_unionOf = "http://www.w3.org/2002/07/owl#unionOf"; + public static final String OWL_complementOf = "http://www.w3.org/2002/07/owl#complementOf"; + + public static final String OWL_FunctionalProperty = "http://www.w3.org/2002/07/owl#FunctionalProperty"; public static final String OWL_InverseFunctionalProperty = "http://www.w3.org/2002/07/owl#InverseFunctionalProperty"; public static final String OWL_TransitiveProperty = "http://www.w3.org/2002/07/owl#TransitiveProperty"; public static final String OWL_SymmetricProperty = "http://www.w3.org/2002/07/owl#SymmetricProperty"; + + public static final String OWL_equivalentProperty = "http://www.w3.org/2002/07/owl#equivalentProperty"; + public static final String OWL_inverseOf = "http://www.w3.org/2002/07/owl#inverseOf"; + + + public static final String OWL_THING = "http://www.w3.org/2002/07/owl#Thing"; public static final String OWL_NOTHING = "http://www.w3.org/2002/07/owl#Nothing"; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-09-25 13:40:49
|
Revision: 1256 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1256&view=rev Author: kurzum Date: 2008-09-25 13:40:25 +0000 (Thu, 25 Sep 2008) Log Message: ----------- finished blanknode support for sparql extration. it might still be buggy, but basically works. added two new options in SparqlknowledgeSource: "dissolveBlankNodes", "determines whether Blanknodes are dissolved. This is a costly function." default true; "useImprovedSparqlTupelAquisitor", "uses deeply nested SparqlQueries, according to recursion depth, still EXPERIMENTAL" default false; added missing package.html Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/core/configurators/SparqlKnowledgeSourceConfigurator.java trunk/src/dl-learner/org/dllearner/core/configurators/package.html trunk/src/dl-learner/org/dllearner/kb/aquisitors/BlankNodeCollector.java trunk/src/dl-learner/org/dllearner/kb/aquisitors/LinkedDataTupleAquisitor.java trunk/src/dl-learner/org/dllearner/kb/aquisitors/RDFBlankNode.java trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupleAquisitor.java trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupleAquisitor.java trunk/src/dl-learner/org/dllearner/kb/extraction/BlankNode.java trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java trunk/src/dl-learner/org/dllearner/kb/extraction/Manager.java trunk/src/dl-learner/org/dllearner/kb/extraction/ObjectPropertyNode.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java trunk/src/dl-learner/org/dllearner/scripts/ConfigJavaGenerator.java trunk/src/dl-learner/org/dllearner/scripts/DumbLPFinder.java trunk/src/dl-learner/org/dllearner/utilities/examples/ExampleContainer.java trunk/src/dl-learner/org/dllearner/utilities/owl/OWLVocabulary.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/scripts/improveWikipedia/package.html Removed Paths: ------------- trunk/src/dl-learner/org/dllearner/scripts/semanticbible/ Modified: trunk/src/dl-learner/org/dllearner/core/configurators/SparqlKnowledgeSourceConfigurator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/configurators/SparqlKnowledgeSourceConfigurator.java 2008-09-24 15:33:30 UTC (rev 1255) +++ trunk/src/dl-learner/org/dllearner/core/configurators/SparqlKnowledgeSourceConfigurator.java 2008-09-25 13:40:25 UTC (rev 1256) @@ -225,6 +225,24 @@ return (Boolean) ComponentManager.getInstance().getConfigOptionValue(sparqlKnowledgeSource, "getPropertyInformation") ; } /** +* dissolveBlankNodes determines whether Blanknodes are dissolved. This is a costly function.. +* mandatory: false| reinit necessary: true +* default value: true +* @return boolean +**/ +public boolean getDissolveBlankNodes() { +return (Boolean) ComponentManager.getInstance().getConfigOptionValue(sparqlKnowledgeSource, "dissolveBlankNodes") ; +} +/** +* useImprovedSparqlTupelAquisitor uses deeply nested SparqlQueries, according to recursion depth, still EXPERIMENTAL. +* mandatory: false| reinit necessary: true +* default value: false +* @return boolean +**/ +public boolean getUseImprovedSparqlTupelAquisitor() { +return (Boolean) ComponentManager.getInstance().getConfigOptionValue(sparqlKnowledgeSource, "useImprovedSparqlTupelAquisitor") ; +} +/** * verbosity control verbosity of output for this component. * mandatory: false| reinit necessary: true * default value: warning @@ -417,6 +435,24 @@ reinitNecessary = true; } /** +* @param dissolveBlankNodes determines whether Blanknodes are dissolved. This is a costly function.. +* mandatory: false| reinit necessary: true +* default value: true +**/ +public void setDissolveBlankNodes(boolean dissolveBlankNodes) { +ComponentManager.getInstance().applyConfigEntry(sparqlKnowledgeSource, "dissolveBlankNodes", dissolveBlankNodes); +reinitNecessary = true; +} +/** +* @param useImprovedSparqlTupelAquisitor uses deeply nested SparqlQueries, according to recursion depth, still EXPERIMENTAL. +* mandatory: false| reinit necessary: true +* default value: false +**/ +public void setUseImprovedSparqlTupelAquisitor(boolean useImprovedSparqlTupelAquisitor) { +ComponentManager.getInstance().applyConfigEntry(sparqlKnowledgeSource, "useImprovedSparqlTupelAquisitor", useImprovedSparqlTupelAquisitor); +reinitNecessary = true; +} +/** * @param verbosity control verbosity of output for this component. * mandatory: false| reinit necessary: true * default value: warning Modified: trunk/src/dl-learner/org/dllearner/core/configurators/package.html =================================================================== --- trunk/src/dl-learner/org/dllearner/core/configurators/package.html 2008-09-24 15:33:30 UTC (rev 1255) +++ trunk/src/dl-learner/org/dllearner/core/configurators/package.html 2008-09-25 13:40:25 UTC (rev 1256) @@ -1,8 +1 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> -<html> -<head></head> -<body bgcolor="white"> -<p>Automatically generated classes, which enable programmatically setting -and getting configuration options of components.</p> -</body> -</html> \ No newline at end of file +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"><html><head></head><body bgcolor="white"><p>Automatically generated classes, which enable programmatically settingand getting configuration options of components.</p></body></html> \ No newline at end of file Modified: trunk/src/dl-learner/org/dllearner/kb/aquisitors/BlankNodeCollector.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/aquisitors/BlankNodeCollector.java 2008-09-24 15:33:30 UTC (rev 1255) +++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/BlankNodeCollector.java 2008-09-25 13:40:25 UTC (rev 1256) @@ -28,6 +28,8 @@ blankNodes.put(id, new TreeSet<RDFNodeTuple>()); } blankNodes.get(id).add(t); + //System.out.println("added: "+id+" "+t); + //System.out.println(); } public static SortedSet<RDFNodeTuple> getBlankNode(int id){ Modified: trunk/src/dl-learner/org/dllearner/kb/aquisitors/LinkedDataTupleAquisitor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/aquisitors/LinkedDataTupleAquisitor.java 2008-09-24 15:33:30 UTC (rev 1255) +++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/LinkedDataTupleAquisitor.java 2008-09-25 13:40:25 UTC (rev 1256) @@ -56,9 +56,16 @@ public SortedSet<RDFNodeTuple> retrieveTuplesForClassesOnly(String uri){ throw new RuntimeException("Not Implemented yet"); } + @Override + protected void disambiguateBlankNodes(String uri, SortedSet<RDFNodeTuple> resultSet){ + throw new RuntimeException("Not Implemented yet"); + } + @Override + public SortedSet<RDFNodeTuple> getBlankNode(int id){ + throw new RuntimeException("Not Implemented yet"); + } - } Modified: trunk/src/dl-learner/org/dllearner/kb/aquisitors/RDFBlankNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/aquisitors/RDFBlankNode.java 2008-09-24 15:33:30 UTC (rev 1255) +++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/RDFBlankNode.java 2008-09-25 13:40:25 UTC (rev 1256) @@ -50,7 +50,7 @@ @Override public String toString(){ //RBC - return "I'm a blank node with id: "+bNodeId+"||"+blankNode; + return "bnodeid: "+bNodeId+" ||"+blankNode; } // overidden Functions Modified: trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupleAquisitor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupleAquisitor.java 2008-09-24 15:33:30 UTC (rev 1255) +++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupleAquisitor.java 2008-09-25 13:40:25 UTC (rev 1256) @@ -20,17 +20,21 @@ package org.dllearner.kb.aquisitors; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.SortedSet; import org.apache.log4j.Logger; import org.dllearner.kb.sparql.SPARQLTasks; import org.dllearner.kb.sparql.SparqlQueryMaker; +import org.dllearner.utilities.JamonMonitorLogger; import org.dllearner.utilities.datastructures.RDFNodeTuple; import com.hp.hpl.jena.query.QuerySolution; import com.hp.hpl.jena.query.ResultSetRewindable; import com.hp.hpl.jena.rdf.model.RDFNode; +import com.jamonapi.Monitor; /** * Can execute different queries. @@ -48,9 +52,10 @@ protected SparqlQueryMaker sparqlQueryMaker; protected SPARQLTasks sparqlTasks; - //RBC + + public SparqlTupleAquisitor(SparqlQueryMaker sparqlQueryMaker, SPARQLTasks sparqlTasks) { @@ -64,6 +69,7 @@ String sparqlQueryString = sparqlQueryMaker.makeSubjectQueryUsingFilters(uri); SortedSet<RDFNodeTuple> ret = sparqlTasks.queryAsRDFNodeTuple(sparqlQueryString, PREDICATE, OBJECT); disambiguateBlankNodes(uri, ret); + return ret; } @Override @@ -71,22 +77,45 @@ // getQuery String sparqlQueryString = sparqlQueryMaker.makeClassQueryUsingFilters(uri); SortedSet<RDFNodeTuple> ret = sparqlTasks.queryAsRDFNodeTuple(sparqlQueryString, PREDICATE, OBJECT); + disambiguateBlankNodes(uri, ret); return ret; } @Override public SortedSet<RDFNodeTuple> retrieveTuplesForClassesOnly(String uri){ SortedSet<RDFNodeTuple> ret = retrieveTupel(uri); + disambiguateBlankNodes(uri, ret); return ret; } - private void disambiguateBlankNodes(String uri, SortedSet<RDFNodeTuple> resultSet){ + @Override + public SortedSet<RDFNodeTuple> getBlankNode(int id){ + return BlankNodeCollector.getBlankNode(id); + } + + public void printHM(){ + + for (int j = 0; j < BlankNodeCollector.getBlankNodeMap().size(); j++) { + System.out.println(j); + for(RDFNodeTuple t :BlankNodeCollector.getBlankNodeMap().get(j)){ + System.out.println(t); + } + } + + } + + // main function for resolving blanknodes + @Override + protected void disambiguateBlankNodes(String uri, SortedSet<RDFNodeTuple> resultSet){ + Monitor bnodeMonitor = JamonMonitorLogger.getTimeMonitor(SparqlTupleAquisitor.class, "blanknode time").start(); try{ for (RDFNodeTuple tuple : resultSet) { + if(tuple.b.isAnon()){ int currentId = BlankNodeCollector.getNextGlobalBNodeId(); + // replace the blanknode tuple.b = new RDFBlankNode(currentId, tuple.b); - System.out.println(uri+" replaced blanknode "+tuple.b); + //System.out.println(uri+" replaced blanknode "+tuple.b); dissolveBlankNodes(currentId, uri, tuple); //System.out.println(BlankNodeCollector.getBlankNodeMap()); @@ -95,15 +124,20 @@ }catch (Exception e) { e.printStackTrace(); System.exit(0); + }finally{ + bnodeMonitor.stop(); } + } + // extends a sparql query as long as there are undissolved blanknodes private void dissolveBlankNodes(int currentId, String uri, RDFNodeTuple tuple){ int currentDepth = 1; int lastDepth = 1; ResultSetRewindable rsw=null; do{ String q = BlankNodeCollector.makeQuery(uri, tuple.a.toString(), currentDepth); + //System.out.println(q); rsw = sparqlTasks.queryAsResultSet(q); lastDepth = currentDepth; @@ -113,7 +147,9 @@ } + //takes the resultset and assigns internal ids private void assignIds(int currentId, ResultSetRewindable rsw, int lastDepth){ + //prepare variables according to last depth List<String> vars = new ArrayList<String>(); vars.add("o0"); for (int i = 1; i <= lastDepth; i++) { @@ -123,16 +159,24 @@ final List<String> tmpVars = new ArrayList<String>(); + Map<String, Integer> lastNodes = new HashMap<String, Integer>(); + // the resultset first variable is o0 + // iteration over each tuple of the set while (rsw.hasNext()){ tmpVars.clear(); tmpVars.addAll(vars); QuerySolution q = rsw.nextSolution(); + //skip all that do not start with a blanknode + // could be two different blank nodes here, but unlikely if(!q.get("o0").isAnon()){ + lastNodes.put(q.get("o0").toString(), currentId); continue; }else{ + + // remove the first node tmpVars.remove(0); - assignIdRec(currentId, q, tmpVars); + assignIdRec(currentId, q, tmpVars,lastNodes); } @@ -141,17 +185,25 @@ } - private void assignIdRec(int currentId, QuerySolution q, List<String> vars ){ + private void assignIdRec(int currentId, QuerySolution q, List<String> vars, Map<String, Integer> lastNodes ){ if(vars.isEmpty()){return;} String pvar = vars.remove(0); String ovar = vars.remove(0); + // the next node RDFNode n = q.get(ovar); if(n.isAnon()){ - int nextId = BlankNodeCollector.getNextGlobalBNodeId(); + int nextId; + if(lastNodes.get(n.toString())==null){ + nextId = BlankNodeCollector.getNextGlobalBNodeId(); + lastNodes.put(n.toString(), nextId); + //System.out.println(n.toString()); + }else{ + nextId = lastNodes.get(n.toString()); + } RDFNodeTuple tuple = new RDFNodeTuple(q.get(pvar), new RDFBlankNode(nextId,n)); BlankNodeCollector.addBlankNode(currentId, tuple); - assignIdRec(nextId, q, vars); + assignIdRec(nextId, q, vars, lastNodes); }else{ BlankNodeCollector.addBlankNode(currentId, new RDFNodeTuple(q.get(pvar), n)); } Modified: trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupleAquisitor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupleAquisitor.java 2008-09-24 15:33:30 UTC (rev 1255) +++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupleAquisitor.java 2008-09-25 13:40:25 UTC (rev 1256) @@ -44,7 +44,8 @@ protected final int CLASS_INFORMATION = 2; protected int mode = 0; - private boolean uriDebugCheck = true; + protected boolean uriDebugCheck = true; + protected boolean dissolveBlankNodes = true; public final SortedSet<RDFNodeTuple> getTupelForResource(String uri){ checkURIforValidity(uri); @@ -68,6 +69,8 @@ public abstract SortedSet<RDFNodeTuple> retrieveTupel(String uri); public abstract SortedSet<RDFNodeTuple> retrieveClassesForInstances(String uri); public abstract SortedSet<RDFNodeTuple> retrieveTuplesForClassesOnly(String uri); + protected abstract void disambiguateBlankNodes(String uri, SortedSet<RDFNodeTuple> resultSet); + public abstract SortedSet<RDFNodeTuple> getBlankNode(int id); /*private void setMode(int mode) { this.mode = mode; @@ -91,6 +94,12 @@ } return true; } + public boolean isDissolveBlankNodes() { + return dissolveBlankNodes; + } + public void setDissolveBlankNodes(boolean dissolveBlankNodes) { + this.dissolveBlankNodes = dissolveBlankNodes; + } } Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/BlankNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/BlankNode.java 2008-09-24 15:33:30 UTC (rev 1255) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/BlankNode.java 2008-09-25 13:40:25 UTC (rev 1256) @@ -8,25 +8,32 @@ import java.util.SortedSet; import java.util.TreeSet; -import org.dllearner.kb.aquisitors.BlankNodeCollector; +import org.apache.log4j.Logger; import org.dllearner.kb.aquisitors.RDFBlankNode; import org.dllearner.kb.aquisitors.TupleAquisitor; import org.dllearner.kb.manipulator.Manipulator; import org.dllearner.utilities.datastructures.RDFNodeTuple; +import org.dllearner.utilities.datastructures.StringTuple; import org.dllearner.utilities.owl.OWLVocabulary; import org.semanticweb.owl.model.OWLDataFactory; import org.semanticweb.owl.model.OWLDescription; +import org.semanticweb.owl.model.OWLObjectProperty; public class BlankNode extends Node { - + private static Logger logger = Logger + .getLogger(BlankNode.class); + RDFBlankNode bNode; String inboundEdge; - private List<Node> connectedNodes =new ArrayList<Node>(); - private List<ObjectPropertyNode> objectProperties = new ArrayList<ObjectPropertyNode>(); + private List<BlankNode> blankNodes =new ArrayList<BlankNode>(); + private SortedSet<StringTuple> otherNodes = new TreeSet<StringTuple> (); private List<DatatypePropertyNode> datatypeProperties = new ArrayList<DatatypePropertyNode>(); + + //private List<ObjectPropertyNode> objectProperties = new ArrayList<ObjectPropertyNode>(); + //private List<DatatypePropertyNode> datatypeProperties = new ArrayList<DatatypePropertyNode>(); public BlankNode(RDFBlankNode bNode, String inboundEdge){ @@ -38,25 +45,35 @@ @Override - public List<Node> expand(TupleAquisitor TupelAquisitor, + public List<Node> expand(TupleAquisitor tupleAquisitor, Manipulator manipulator) { List<Node> newNodes = new ArrayList<Node>(); - SortedSet<RDFNodeTuple> s = BlankNodeCollector.getBlankNode(bNode.getBNodeId()); + SortedSet<RDFNodeTuple> s = tupleAquisitor.getBlankNode(bNode.getBNodeId()); + //System.out.println("entering "+bNode.getBNodeId()); + + for (RDFNodeTuple tuple : s) { if(tuple.b.isLiteral()) { + //System.out.println("adding dtype: "+tuple); datatypeProperties.add(new DatatypePropertyNode(tuple.a.toString(), this, new LiteralNode(tuple.b) )); - connectedNodes.add(new DatatypePropertyNode(tuple.a.toString(), this, new LiteralNode(tuple.b) )); + //connectedNodes.add(new DatatypePropertyNode(tuple.a.toString(), this, new LiteralNode(tuple.b) )); }else if(tuple.b.isAnon()){ - + //System.out.println("adding bnode: "+tuple); BlankNode tmp = new BlankNode( (RDFBlankNode)tuple.b, tuple.a.toString()); - objectProperties.add(new ObjectPropertyNode(tuple.a.toString(), this, tmp )); - connectedNodes.add(new BlankNode( (RDFBlankNode)tuple.b, tuple.a.toString())); + //objectProperties.add(new ObjectPropertyNode(tuple.a.toString(), this, tmp )); + //connectedNodes.add(new BlankNode( (RDFBlankNode)tuple.b, tuple.a.toString())); + blankNodes.add(tmp); newNodes.add(tmp); }else{ - objectProperties.add(new ObjectPropertyNode(tuple.a.toString(), this, new ClassNode(tuple.b.toString()) )); - connectedNodes.add(new ObjectPropertyNode(tuple.a.toString(), this, new ClassNode(tuple.b.toString()) )); + //System.out.println("adding other: "+tuple); + otherNodes.add(new StringTuple(tuple.a.toString(), tuple.b.toString())); + //objectProperties.add(new ObjectPropertyNode(tuple.a.toString(), this, new ClassNode(tuple.b.toString()) )); + //connectedNodes.add(new ObjectPropertyNode(tuple.a.toString(), this, new ClassNode(tuple.b.toString()) )); } } + + //System.out.println("finished"); + return newNodes; } @@ -69,11 +86,11 @@ @Override public SortedSet<String> toNTriple() { SortedSet<String> returnSet = new TreeSet<String>(); - String subject = getNTripleForm(); - for (ObjectPropertyNode one : objectProperties) { + //String subject = getNTripleForm(); + /*for (ObjectPropertyNode one : objectProperties) { returnSet.add(subject + one.getNTripleForm() + one.getBPart().getNTripleForm()+" . "); returnSet.addAll(one.getBPart().toNTriple()); - } + }*/ return returnSet; } @@ -83,6 +100,12 @@ } @Override + public String toString(){ + return "id: "+bNode.getBNodeId()+" inbound: "+getInBoundEdge(); + + } + + @Override public URI getURI(){ return URI.create("http://www.empty.org/empty#empty"); } @@ -95,44 +118,167 @@ public String getInBoundEdge(){ return inboundEdge; } - + public OWLDescription getAnonymousClass(OWLAPIOntologyCollector owlAPIOntologyCollector){ OWLDataFactory factory = owlAPIOntologyCollector.getFactory(); OWLDescription ret = factory.getOWLClass(URI.create("http://dummy.org/dummy")); - for (Node n : connectedNodes) { - System.out.println(n.toString()); + //System.out.println(inboundEdge); + + if( + (inboundEdge.equals(OWLVocabulary.OWL_intersectionOf))|| + (inboundEdge.equals(OWLVocabulary.OWL_complementOf))|| + (inboundEdge.equals(OWLVocabulary.OWL_unionOf)) + ){ + Set<OWLDescription> target = new HashSet<OWLDescription>(); + List<BlankNode> tmp = new ArrayList<BlankNode>(); + tmp.add(this); + while(!tmp.isEmpty()){ + BlankNode next = tmp.remove(0); + //next.printAll(); + + if(next.otherNodes.contains(new StringTuple(OWLVocabulary.RDF_REST, OWLVocabulary.RDF_NIL))){ + for(StringTuple t : next.otherNodes){ + if(t.a.equals(OWLVocabulary.RDF_FIRST)){ + target.add(factory.getOWLClass(URI.create(t.b))); + //System.out.println("added "+t.b); + } + } + //System.out.println("nil found"); + //do nothing + }else{ + if(next.otherNodes.first().a.equals(OWLVocabulary.RDF_FIRST)){ + target.add(factory.getOWLClass(URI.create(next.otherNodes.first().b))); + tmp.add(next.blankNodes.get(0)); + //System.out.println("bnode added"); + }else{ + System.out.println("double nesting not supported yet"); + System.exit(0); + } + } + }//end while + + if(inboundEdge.equals(OWLVocabulary.OWL_intersectionOf)){ + return factory.getOWLObjectIntersectionOf(target); + }else if(inboundEdge.equals(OWLVocabulary.OWL_unionOf)){ + return factory.getOWLObjectUnionOf(target); + }else if(inboundEdge.equals(OWLVocabulary.OWL_complementOf)){ + if(target.size()>1) { + logger.warn("more than one complement"+target); + System.exit(0); + }else{ + return factory.getOWLObjectComplementOf(new ArrayList<OWLDescription>(target).remove(0)); + } + }else{ + printAll(); + tail("wrong type: " +inboundEdge+ this); + } } - if(containsDataTypeProperties()){ - //do nothing right now, add a return here; + // restriction + if(otherNodes.contains( + new StringTuple(OWLVocabulary.RDF_TYPE, OWLVocabulary.OWL_RESTRICTION))){ + return getRestriction( owlAPIOntologyCollector); + } - Set<OWLDescription> l = new HashSet<OWLDescription>(); - for (Node n : connectedNodes) { - if(n instanceof BlankNode){ - l.add(((BlankNode)n).getAnonymousClass(owlAPIOntologyCollector)); - }else{ - l.add(factory.getOWLClass(n.getURI())); + if(!blankNodes.isEmpty()){ + return blankNodes.get(0).getAnonymousClass(owlAPIOntologyCollector); + } + + + return ret; + + } + + public void printAll(){ + System.out.println(this); + + System.out.println("otherNodes"); + for (StringTuple t : otherNodes) { + System.out.println(""+t); + } + System.out.println("***************"); + System.out.println("dtype "); + for (DatatypePropertyNode d : datatypeProperties) { + System.out.println(d.getURIString()+" "+d.getNTripleFormOfB()); + } + System.out.println("***************"); + System.out.println("other bnodes"); + for (BlankNode b : blankNodes) { + System.out.println(b); + } + System.out.println("***************"); + + } + + private OWLDescription getRestriction(OWLAPIOntologyCollector owlAPIOntologyCollector){ + OWLDataFactory factory = owlAPIOntologyCollector.getFactory(); + OWLObjectProperty property = null; + OWLDescription concept = null; + OWLDescription dummy = factory.getOWLClass(URI.create("http://dummy.org/dummy")); + + int total = otherNodes.size()+blankNodes.size()+datatypeProperties.size(); + if(total >=4 ){ + System.out.println("qualified p restrictions not supported currently"); + } + + // get Objectproperty + for(StringTuple n : otherNodes) { + if(n.a.equals(OWLVocabulary.OWL_ON_PROPERTY)){ + property = factory.getOWLObjectProperty(URI.create(n.b)); } } - if(isOfType(OWLVocabulary.OWL_intersectionOf)){ - ret = factory.getOWLObjectIntersectionOf(l); - System.out.println("aaa"); - }else if(isOfType(OWLVocabulary.OWL_unionOf)){ - ret = factory.getOWLObjectUnionOf(l); - System.out.println("aaa"); - }else if(isOfType(OWLVocabulary.OWL_complementOf)){ - ret = factory.getOWLObjectComplementOf(new ArrayList<OWLDescription>(l).remove(0)); - System.out.println("aaa"); + // has an Integer value + if(!datatypeProperties.isEmpty()){ + DatatypePropertyNode d = datatypeProperties.get(0); + String p = d.getURIString(); + if( p.equals(OWLVocabulary.OWL_cardinality)){ + return factory.getOWLObjectExactCardinalityRestriction(property, d.getBPart().getLiteral().getInt()); + }else if(p.equals(OWLVocabulary.OWL_maxCardinality)){ + return factory.getOWLObjectMaxCardinalityRestriction(property, d.getBPart().getLiteral().getInt()); + }else if(p.equals(OWLVocabulary.OWL_minCardinality)){ + return factory.getOWLObjectMinCardinalityRestriction(property, d.getBPart().getLiteral().getInt()); + }else { + tail(p+d+" in "+this); + } } - return ret; + + if(!blankNodes.isEmpty()){ + concept = blankNodes.get(0).getAnonymousClass(owlAPIOntologyCollector); + }else{ + for(StringTuple n : otherNodes) { + String p = n.a; + String o = n.b; + if( + (p.equals(OWLVocabulary.OWL_ALL_VALUES_FROM)) || + (p.equals(OWLVocabulary.OWL_SOME_VALUES_FROM)) || + (p.equals(OWLVocabulary.OWL_HAS_VALUE)) + ){ + concept = factory.getOWLClass(URI.create(o)); + } + } + } + + for(StringTuple n : otherNodes) { + String p = n.a; + if(p.equals(OWLVocabulary.OWL_ALL_VALUES_FROM)){ + return factory.getOWLObjectAllRestriction(property, concept); + }else if(p.equals(OWLVocabulary.OWL_SOME_VALUES_FROM)){ + return factory.getOWLObjectSomeRestriction(property, concept); + }else if(p.equals(OWLVocabulary.OWL_HAS_VALUE)){ + logger.warn("OWL_hasValue not implemented yet"); + return dummy; + } + } + return dummy; } - private boolean isOfType(String type){ + + /*private boolean isOfType(String type){ for (Node n : connectedNodes) { if((n instanceof BlankNode ) && @@ -154,6 +300,6 @@ } } return false; - } + }*/ } Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java 2008-09-24 15:33:30 UTC (rev 1255) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java 2008-09-25 13:40:25 UTC (rev 1256) @@ -33,6 +33,7 @@ import org.semanticweb.owl.model.OWLClass; import org.semanticweb.owl.model.OWLCommentAnnotation; import org.semanticweb.owl.model.OWLDataFactory; +import org.semanticweb.owl.model.OWLDescription; import org.semanticweb.owl.model.OWLLabelAnnotation; /** @@ -65,28 +66,31 @@ List<Node> newNodes = new ArrayList<Node>(); Node tmp; for (RDFNodeTuple tuple : newTuples) { - if((tmp = processTuple(tuple))!= null) { + if((tmp = processTuple(tuple,tupelAquisitor.isDissolveBlankNodes()))!= null) { newNodes.add(tmp); } } return newNodes; } - private Node processTuple( RDFNodeTuple tuple) { + private Node processTuple( RDFNodeTuple tuple, boolean dissolveBlankNodes) { try { String property = tuple.a.toString(); if(tuple.b.isLiteral()) { datatypeProperties.add(new DatatypePropertyNode(tuple.a.toString(), this, new LiteralNode(tuple.b) )); return null; }else if(tuple.b.isAnon()){ - logger.warn("blanknodes not supported as of now "+ this +" in tuple" + tuple); - RDFBlankNode n = (RDFBlankNode) tuple.b; - - BlankNode tmp = new BlankNode( n, tuple.a.toString()); - //add it to the graph - blankNodes.add(tmp); - //return tmp; - return tmp; + if(dissolveBlankNodes){ + RDFBlankNode n = (RDFBlankNode) tuple.b; + BlankNode tmp = new BlankNode( n, tuple.a.toString()); + //add it to the graph + blankNodes.add(tmp); + //return tmp; + return tmp; + }else{ + //do nothing + return null; + } // substitute rdf:type with owl:subclassof }else if (property.equals(OWLVocabulary.RDF_TYPE) || OWLVocabulary.isStringSubClassVocab(property)) { @@ -173,7 +177,18 @@ } for (BlankNode bn : blankNodes) { - System.out.println(bn.getAnonymousClass(owlAPIOntologyCollector).toString()); + OWLDescription target = bn.getAnonymousClass(owlAPIOntologyCollector); + + if(OWLVocabulary.isStringSubClassVocab(bn.getInBoundEdge())){ + owlAPIOntologyCollector.addAxiom(factory.getOWLSubClassAxiom(me, target)); + }else if(bn.getInBoundEdge().equals(OWLVocabulary.OWL_DISJOINT_WITH)){ + owlAPIOntologyCollector.addAxiom(factory.getOWLDisjointClassesAxiom(me, target)); + }else if(bn.getInBoundEdge().equals(OWLVocabulary.OWL_EQUIVALENT_CLASS)){ + owlAPIOntologyCollector.addAxiom(factory.getOWLEquivalentClassesAxiom(me, target)); + }else { + tail( getURIString()+"||"+bn.getInBoundEdge()); + } + } }catch (Exception e) { System.out.println("aaa"+getURIString()); Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java 2008-09-24 15:33:30 UTC (rev 1255) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java 2008-09-25 13:40:25 UTC (rev 1256) @@ -130,15 +130,17 @@ if(configuration.isGetPropertyInformation() ){ - + Monitor m = JamonMonitorLogger.getTimeMonitor(ExtractionAlgorithm.class, "TimeGetPropertyInformation").start(); List<ObjectPropertyNode> l = getObjectPropertyNodes(collectNodes); for (ObjectPropertyNode node : l) { - //FIXME has to be transported to the next step - node.expandProperties(tupleAquisitor, configuration.getManipulator()); + collectNodes.addAll(node.expandProperties(tupleAquisitor, configuration.getManipulator())); } + m.stop(); } + Monitor m = JamonMonitorLogger.getTimeMonitor(ExtractionAlgorithm.class, "TimeBlankNode").start(); expandBlankNodes(getBlankNodes(collectNodes),tupleAquisitor); + m.stop(); return seedNode; Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java 2008-09-24 15:33:30 UTC (rev 1255) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java 2008-09-25 13:40:25 UTC (rev 1256) @@ -87,6 +87,7 @@ return null; }else if(tuple.b.isAnon()){ RDFBlankNode n = (RDFBlankNode) tuple.b; + //RBC System.out.println(n.getBNodeId()); System.exit(0); logger.warn("blanknodes not supported as of now"+ this +"in tuple" + tuple); Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/Manager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/Manager.java 2008-09-24 15:33:30 UTC (rev 1255) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/Manager.java 2008-09-25 13:40:25 UTC (rev 1256) @@ -28,8 +28,11 @@ import java.util.TreeSet; import org.apache.log4j.Logger; +import org.dllearner.utilities.JamonMonitorLogger; import org.semanticweb.owl.model.OWLOntology; +import com.jamonapi.Monitor; + /** * An object of this class encapsulates everything. * @@ -80,17 +83,24 @@ } } + //((SparqlTupleAquisitor) configuration.getTupelAquisitor()).printHM(); + //System.exit(0); logger.info("Finished extraction"); return allExtractedNodes; } public OWLOntology getOWLAPIOntologyForNodes(List<Node> nodes, boolean saveOntology){ + Monitor m1 = JamonMonitorLogger.getTimeMonitor(Manager.class, "Time conversion to OWL Ontology").start(); for (Node n : nodes) { n.toOWLOntology(configuration.getOwlAPIOntologyCollector()); } + m1.stop(); + if(saveOntology){ - configuration.getOwlAPIOntologyCollector().saveOntology(); + Monitor m2 = JamonMonitorLogger.getTimeMonitor(Manager.class, "Time saving Ontology").start(); + configuration.getOwlAPIOntologyCollector().saveOntology(); + m2.stop(); } return configuration.getOwlAPIOntologyCollector().getCurrentOntology(); Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/ObjectPropertyNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/ObjectPropertyNode.java 2008-09-24 15:33:30 UTC (rev 1255) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/ObjectPropertyNode.java 2008-09-25 13:40:25 UTC (rev 1256) @@ -34,6 +34,7 @@ import org.dllearner.utilities.owl.OWLVocabulary; import org.semanticweb.owl.model.OWLClass; import org.semanticweb.owl.model.OWLDataFactory; +import org.semanticweb.owl.model.OWLDescription; import org.semanticweb.owl.model.OWLLabelAnnotation; import org.semanticweb.owl.model.OWLObjectProperty; @@ -80,13 +81,15 @@ specialTypes.add(tuple.b.toString()); } }else if(tuple.b.isAnon()){ - logger.warn("blanknodes currently not implemented in this tuple aquisitor"); - RDFBlankNode n = (RDFBlankNode) tuple.b; + + if(tupelAquisitor.isDissolveBlankNodes()){ + RDFBlankNode n = (RDFBlankNode) tuple.b; + BlankNode tmp = new BlankNode( n, tuple.a.toString()); + //add it to the graph + blankNodes.add(tmp); + ret.add( tmp); + } - BlankNode tmp = new BlankNode( n, tuple.a.toString()); - //add it to the graph - blankNodes.add(tmp); - ret.add( tmp); }else{ propertyInformation.add(tuple); @@ -128,19 +131,18 @@ OWLObjectProperty me =factory.getOWLObjectProperty(getURI()); for (RDFNodeTuple one : propertyInformation) { + OWLClass c = factory.getOWLClass(URI.create(one.a.toString())); + if(one.aPartContains(OWLVocabulary.RDFS_range)){ - OWLClass c = factory.getOWLClass(URI.create(one.a.toString())); owlAPIOntologyCollector.addAxiom(factory.getOWLObjectPropertyRangeAxiom(me, c)); }else if(one.aPartContains(OWLVocabulary.RDFS_domain)){ - OWLClass c = factory.getOWLClass(URI.create(one.a.toString())); owlAPIOntologyCollector.addAxiom(factory.getOWLObjectPropertyDomainAxiom(me, c)); }else if(one.aPartContains(OWLVocabulary.RDFS_SUB_PROPERTY_OF)){ OWLObjectProperty p = factory.getOWLObjectProperty(URI.create(one.b.toString())); owlAPIOntologyCollector.addAxiom(factory.getOWLSubObjectPropertyAxiom(me, p)); - }else if(one.aPartContains(OWLVocabulary.OWL_inverseOf)){ OWLObjectProperty p = factory.getOWLObjectProperty(URI.create(one.b.toString())); - owlAPIOntologyCollector.addAxiom(factory.getOWLInverseObjectPropertiesAxiom(me, p)); + owlAPIOntologyCollector.addAxiom(factory.getOWLInverseObjectPropertiesAxiom(me, p)); }else if(one.aPartContains(OWLVocabulary.OWL_equivalentProperty)){ OWLObjectProperty p = factory.getOWLObjectProperty(URI.create(one.b.toString())); Set<OWLObjectProperty> tmp = new HashSet<OWLObjectProperty>(); @@ -174,7 +176,13 @@ } } for (BlankNode bn : blankNodes) { - System.out.println(bn.getAnonymousClass(owlAPIOntologyCollector).toString()); + OWLDescription target = bn.getAnonymousClass(owlAPIOntologyCollector); + if(bn.getInBoundEdge().equals(OWLVocabulary.RDFS_range)){ + owlAPIOntologyCollector.addAxiom(factory.getOWLObjectPropertyRangeAxiom(me, target)); + }else if(bn.getInBoundEdge().equals(OWLVocabulary.RDFS_domain)){ + owlAPIOntologyCollector.addAxiom(factory.getOWLObjectPropertyDomainAxiom(me, target)); + } + //System.out.println(bn.getAnonymousClass(owlAPIOntologyCollector).toString()); } } Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-09-24 15:33:30 UTC (rev 1255) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-09-25 13:40:25 UTC (rev 1256) @@ -76,7 +76,7 @@ private static final boolean debug = false; // tupleaquisitor - private static final boolean debugUseImprovedTupleAquisitor = debug && false; // switches + //private static final boolean debugUseImprovedTupleAquisitor = debug && false; // switches // sysex private static final boolean debugExitAfterExtraction = debug && false; // switches @@ -192,6 +192,12 @@ options.add(new BooleanConfigOption("getPropertyInformation", "gets all types for extracted ObjectProperties", false, false, true)); + options.add(new BooleanConfigOption("dissolveBlankNodes", + "determines whether Blanknodes are dissolved. This is a costly function.", true, false, + true)); + options.add(new BooleanConfigOption("useImprovedSparqlTupelAquisitor", + "uses deeply nested SparqlQueries, according to recursion depth, still EXPERIMENTAL", false, false, + true)); options.add(CommonConfigOptions.getVerbosityOption()); options.add(new StringSetConfigOption("defaultGraphURIs", @@ -389,13 +395,16 @@ } public TupleAquisitor getTupleAquisitor() { - if (debugUseImprovedTupleAquisitor) { - return new SparqlTupleAquisitorImproved(getSparqlQueryMaker(), + TupleAquisitor ret = null; + if (configurator.getUseImprovedSparqlTupelAquisitor()) { + ret = new SparqlTupleAquisitorImproved(getSparqlQueryMaker(), getSPARQLTasks(), configurator.getRecursionDepth()); } else { - return new SparqlTupleAquisitor(getSparqlQueryMaker(), + ret = new SparqlTupleAquisitor(getSparqlQueryMaker(), getSPARQLTasks()); } + ret.setDissolveBlankNodes(configurator.getDissolveBlankNodes()); + return ret; } Modified: trunk/src/dl-learner/org/dllearner/scripts/ConfigJavaGenerator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/ConfigJavaGenerator.java 2008-09-24 15:33:30 UTC (rev 1255) +++ trunk/src/dl-learner/org/dllearner/scripts/ConfigJavaGenerator.java 2008-09-25 13:40:25 UTC (rev 1256) @@ -197,6 +197,7 @@ makeComponentFactory(); makeInterface(); + writePackageHTML(); System.out.println("Done"); } @@ -503,6 +504,21 @@ } + private static void writePackageHTML(){ + String c = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2 Final//EN\">"+ + "<html>"+ + "<head></head>"+ + "<body bgcolor=\"white\">"+ + "<p>Automatically generated classes, which enable programmatically setting"+ + "and getting configuration options of components.</p>"+ + "</body>"+ + "</html>"; + try{ + Files.createFile(new File(TARGET_DIR+File.separator+"package.html"), c); + }catch (Exception e) { + e.printStackTrace(); + } + } private static String expandCollection(Collection<String> col, @@ -545,6 +561,7 @@ } + private static String checkstyleAdjust(String type) { type = type.replaceAll("<", "("); type = type.replaceAll(">", ")"); Modified: trunk/src/dl-learner/org/dllearner/scripts/DumbLPFinder.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/DumbLPFinder.java 2008-09-24 15:33:30 UTC (rev 1255) +++ trunk/src/dl-learner/org/dllearner/scripts/DumbLPFinder.java 2008-09-25 13:40:25 UTC (rev 1256) @@ -56,6 +56,9 @@ //private static Class usedReasoner = FastInstanceChecker.class; private static Class<? extends ReasonerComponent> usedReasoner = OWLAPIReasoner.class; + + private static int numberOfLearningProblems = 100; + private static boolean allOrExists = true; private static boolean tenORthirty = true; @@ -88,8 +91,8 @@ reasoningService = null; ComponentManager.getInstance().freeAllComponents(); - int count = 1; - while(count<10000){ + int count = 0; + while(count<numberOfLearningProblems){ /*if((count%5)==0){ //System.out.println(count+" "+allOrExists+"::"+tenORthirty); Added: trunk/src/dl-learner/org/dllearner/scripts/improveWikipedia/package.html =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/improveWikipedia/package.html (rev 0) +++ trunk/src/dl-learner/org/dllearner/scripts/improveWikipedia/package.html 2008-09-25 13:40:25 UTC (rev 1256) @@ -0,0 +1,7 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> +<html> +<head></head> +<body bgcolor="white"> +<p>Classes for the WikipediaCategoryCleaner script</p> +</body> +</html> Modified: trunk/src/dl-learner/org/dllearner/utilities/examples/ExampleContainer.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/examples/ExampleContainer.java 2008-09-24 15:33:30 UTC (rev 1255) +++ trunk/src/dl-learner/org/dllearner/utilities/examples/ExampleContainer.java 2008-09-25 13:40:25 UTC (rev 1256) @@ -1,5 +1,5 @@ /** - * Copyright (C) 2007, Jens Lehmann + * Copyright (C) 2007-2008, Jens Lehmann * * This file is part of DL-Learner. * @@ -24,6 +24,17 @@ import org.dllearner.core.owl.Individual; + + +/** + * A simple container for storing pos and negexamples, + * basically a more simple parameter or return value. + * + * It also contains static functions to test if all example sets are different. + * + * @author Sebastian Hellmann + * + */ public class ExampleContainer implements Comparable<ExampleContainer>{ Modified: trunk/src/dl-learner/org/dllearner/utilities/owl/OWLVocabulary.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/owl/OWLVocabulary.java 2008-09-24 15:33:30 UTC (rev 1255) +++ trunk/src/dl-learner/org/dllearner/utilities/owl/OWLVocabulary.java 2008-09-25 13:40:25 UTC (rev 1256) @@ -23,6 +23,10 @@ public static final String RDF_TYPE = "http://www.w3.org/1999/02/22-rdf-syntax-ns#type"; + public static final String RDF_FIRST = "http://www.w3.org/1999/02/22-rdf-syntax-ns#first"; + public static final String RDF_REST = "http://www.w3.org/1999/02/22-rdf-syntax-ns#rest"; + public static final String RDF_NIL = "http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"; + public static final String RDFS_SUBCLASS_OF = "http://www.w3.org/2000/01/rdf-schema#subClassOf"; public static final String RDFS_CLASS = "http://www.w3.org/2000/01/rdf-schema#Class"; @@ -35,6 +39,7 @@ public static final String RDFS_range = "http://www.w3.org/2000/01/rdf-schema#range"; + public static final String OWL_SAME_AS = "http://www.w3.org/2002/07/owl#sameAs"; public static final String OWL_OBJECTPROPERTY = "http://www.w3.org/2002/07/owl#ObjectProperty"; public static final String OWL_DATATYPPROPERTY = "http://www.w3.org/2002/07/owl#DataTypeProperty"; @@ -48,8 +53,17 @@ public static final String OWL_unionOf = "http://www.w3.org/2002/07/owl#unionOf"; public static final String OWL_complementOf = "http://www.w3.org/2002/07/owl#complementOf"; + public static final String OWL_RESTRICTION = "http://www.w3.org/2002/07/owl#Restriction"; + public static final String OWL_ON_PROPERTY = "http://www.w3.org/2002/07/owl#onProperty"; + public static final String OWL_ALL_VALUES_FROM = "http://www.w3.org/2002/07/owl#allValuesFrom"; + public static final String OWL_SOME_VALUES_FROM = "http://www.w3.org/2002/07/owl#allValuesFrom"; + public static final String OWL_HAS_VALUE = "http://www.w3.org/2002/07/owl#hasValue"; + public static final String OWL_maxCardinality = "http://www.w3.org/2002/07/owl#maxCardinality"; + public static final String OWL_minCardinality = "http://www.w3.org/2002/07/owl#minCardinality"; + public static final String OWL_cardinality = "http://www.w3.org/2002/07/owl#cardinality"; + public static final String OWL_FunctionalProperty = "http://www.w3.org/2002/07/owl#FunctionalProperty"; public static final String OWL_InverseFunctionalProperty = "http://www.w3.org/2002/07/owl#InverseFunctionalProperty"; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-09-25 19:27:17
|
Revision: 1260 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1260&view=rev Author: kurzum Date: 2008-09-25 19:26:59 +0000 (Thu, 25 Sep 2008) Log Message: ----------- - added constructor in gui.config - new Classes for collecting data and writing a latex table Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/gui/Config.java trunk/src/dl-learner/org/dllearner/scripts/NewSample.java trunk/src/dl-learner/org/dllearner/scripts/SemanticBibleComparison.java trunk/src/dl-learner/org/dllearner/utilities/Files.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/utilities/statistics/Table.java trunk/src/dl-learner/org/dllearner/utilities/statistics/TableColumn.java Modified: trunk/src/dl-learner/org/dllearner/gui/Config.java =================================================================== --- trunk/src/dl-learner/org/dllearner/gui/Config.java 2008-09-25 16:34:53 UTC (rev 1259) +++ trunk/src/dl-learner/org/dllearner/gui/Config.java 2008-09-25 19:26:59 UTC (rev 1260) @@ -76,6 +76,30 @@ private StartGUI gui; /** + * This constructor can be used systemwide to save configurations in conf files. + * Of course it should not really belong here, but either in core or utilities. + * Consider refactoring using a subclass of Config for the GUI. + * Nevertheless it still works. + * + * + * @param cm + * @param source + * @param reasoner + * @param rs + * @param lp + * @param la + */ + public Config(ComponentManager cm, KnowledgeSource source, ReasonerComponent reasoner, ReasoningService rs, LearningProblem lp, LearningAlgorithm la) { + super(); + this.cm = cm; + this.source = source; + this.reasoner = reasoner; + this.rs = rs; + this.lp = lp; + this.la = la; + } + + /** * Create central configuration object. * * @param gui Modified: trunk/src/dl-learner/org/dllearner/scripts/NewSample.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/NewSample.java 2008-09-25 16:34:53 UTC (rev 1259) +++ trunk/src/dl-learner/org/dllearner/scripts/NewSample.java 2008-09-25 19:26:59 UTC (rev 1260) @@ -41,6 +41,9 @@ import org.dllearner.core.LearningProblemUnsupportedException; import org.dllearner.core.ReasoningService; import org.dllearner.core.configurators.ComponentFactory; +import org.dllearner.gui.Config; +import org.dllearner.gui.ConfigSave; +import org.dllearner.gui.StartGUI; import org.dllearner.kb.OWLFile; import org.dllearner.learningproblems.PosNegDefinitionLP; import org.dllearner.reasoning.FastInstanceChecker; Modified: trunk/src/dl-learner/org/dllearner/scripts/SemanticBibleComparison.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SemanticBibleComparison.java 2008-09-25 16:34:53 UTC (rev 1259) +++ trunk/src/dl-learner/org/dllearner/scripts/SemanticBibleComparison.java 2008-09-25 19:26:59 UTC (rev 1260) @@ -114,19 +114,16 @@ logger.warn("Start"); File tmpFile = new File(tmpFilename); - - List<File> confs = getFilesContaining(useSPARQL,"ten","all", "99+"); - //analyzeFiles(confs); - - - + List<String> confs = getFiles(useSPARQL); + reasoningService = ReasoningServiceFactory.getReasoningService(ontologyPath, AvailableReasoners.OWLAPIREASONERPELLET); ComponentManager cm =ComponentManager.getInstance(); + try{ - for (File f : confs) { - + for (String filename : confs) { + File f = new File(filename); Cache.getDefaultCache().clearCache(); String fileContent = Files.readFile(f); @@ -300,6 +297,16 @@ return null; } + + public static List<String> getFiles(boolean sparql){ + String actualDir = (sparql)?sparqldir:normaldir; + logger.warn(actualDir); + File f = new File(actualDir); + String[] files = f.list(); + Arrays.sort(files); + return Arrays.asList(files); + } + public static List<File> getFilesContaining(boolean sparql, String numExamples, String allOrEx, String acc) { List<File> ret = new ArrayList<File>(); //SortedSet<File> ret = new TreeSet<File>(); Modified: trunk/src/dl-learner/org/dllearner/utilities/Files.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/Files.java 2008-09-25 16:34:53 UTC (rev 1259) +++ trunk/src/dl-learner/org/dllearner/utilities/Files.java 2008-09-25 19:26:59 UTC (rev 1260) @@ -19,13 +19,22 @@ */ package org.dllearner.utilities; +import java.io.BufferedInputStream; +import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.File; +import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileReader; import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.util.ArrayList; +import java.util.List; +import com.ibm.icu.util.StringTokenizer; + /** * @author Jens Lehmann * @@ -41,8 +50,7 @@ * @return Content of the file. */ public static String readFile(File file) throws FileNotFoundException, IOException { - - + BufferedReader br = new BufferedReader(new FileReader(file)); StringBuffer content = new StringBuffer(); try{ @@ -56,6 +64,74 @@ return content.toString(); } + + /** + * Reads in a file as Array + * + * @param file + * The file to read. + * @return StringArray with lines + */ + public static String[] readFileAsArray(File file) throws FileNotFoundException, IOException { + String content = readFile(file); + StringTokenizer st = new StringTokenizer(content, System.getProperty("line.separator")); + List<String> l = new ArrayList<String>(); + while (st.hasMoreTokens()) { + l.add((String) st.nextToken()); + + } + + return l.toArray(new String[l.size()]); + + } + + /** + * writes a serializable Object to a File. + * @param obj + * @param file + */ + public static void writeObjectToFile(Object obj, File file){ + + ObjectOutputStream oos = null; + try{ + FileOutputStream fos = new FileOutputStream(file); + BufferedOutputStream bos = new BufferedOutputStream(fos); + oos = new ObjectOutputStream(bos); + + oos.writeObject(obj); + oos.flush(); + oos.close(); + }catch (Exception e) { + e.printStackTrace(); + }finally{ + try{ + oos.close(); + }catch (Exception e) { + e.printStackTrace(); + } + } + } + + public static Object readObjectfromFile( File file){ + ObjectInputStream ois = null; + try{ + FileInputStream fis = new FileInputStream(file); + BufferedInputStream bis = new BufferedInputStream(fis); + ois = new ObjectInputStream(bis); + return ois.readObject(); + }catch (Exception e) { + e.printStackTrace(); + }finally{ + try { + ois.close(); + } catch (Exception e) { + e.printStackTrace(); + } + + } + return null; + } + /** * Creates a new file with the given content or replaces the content of a @@ -185,5 +261,7 @@ e.printStackTrace(); } } + + } Added: trunk/src/dl-learner/org/dllearner/utilities/statistics/Table.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/statistics/Table.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/utilities/statistics/Table.java 2008-09-25 19:26:59 UTC (rev 1260) @@ -0,0 +1,205 @@ +/** + * Copyright (C) 2007-2008, Jens Lehmann + * + * This file is part of DL-Learner. + * + * DL-Learner is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * DL-Learner is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +package org.dllearner.utilities.statistics; + +import java.io.File; +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; + +import org.dllearner.utilities.Files; + + +/** + * Class to collect results and output them as a latex table or other formats. + * + * @author Sebastian Hellmann + * + */ +public class Table implements Serializable{ + + private static final long serialVersionUID = 0l; + + //used to give a good percentage output + //private DecimalFormat df = new DecimalFormat( ".00%" ); + private List<TableColumn> columns = new ArrayList<TableColumn>(); + + private String tableName = ""; + private String caption = ""; + private String label = ""; + + public Table(String tableName){ + this.tableName = tableName; + } + + public static void main(String[] args) { + Table t = new Table("myTable"); + String tableFile = "results/table/myTable"; + TableColumn c1 = new TableColumn("col1", new String[]{"a","b"}); + TableColumn c2 = new TableColumn("col2", new String[]{"c","d"}); + t.addColumn(c1); + System.out.println(t.getLatexString()); + + serializeColumns(t, "results/table",tableFile ); + + t = createTableFromSerializedColums("myTable", tableFile); + System.out.println(t.getLatexString()); + + t.addColumn(c2); + serializeColumns(t, "results/table",tableFile ); + t = createTableFromSerializedColums("myTable", tableFile); + System.out.println(t.getLatexString()); + + + + } + + public String getLatexString(){ + String tabular = ""; + for (int i = 0; i < columns.size(); i++) { + tabular+="l"; + } + + String headers = latexRow(getColumnHeaders()); + + String table=""; + + table += "\\begin{table*}\n"; + table += "\t\\centering\n"; + table += "\t\t\\begin{tabular}{"+tabular+"}\n"; + table += "\\hline\n"; + table += headers; + table += "\\hline\n"; + // add here + for (int i = 0; i < getNumberOfRows(); i++) { + table +=getRowInLatex(i); + } + table += "\\end{tabular}\n"; + table += "\t\\caption{"+caption+"}\n"; + table += "\t\\label{"+label+"}\n"; + table += "\\end{table*}\n\n"; + + //List<String> myList = new ArrayList<String>({""}); + + //List<String> list = Arrays.asList( "","" ); + return table; + + } + + public String getRowInLatex(int index){ + List<String> l = new ArrayList<String>(); + for(TableColumn c: columns){ + l.add(c.getEntry(index)); + } + return latexRow(l); + } + + public int getNumberOfRows(){ + if(columns.isEmpty())return 0; + else return columns.get(0).getSize(); + } + + + public List<String> getColumnHeaders(){ + List<String> entries = new ArrayList<String>(); + for (TableColumn c : columns) { + entries.add(c.getHeader()); + } + return entries; + } + + public String latexRow(List<String> entries){ + String ret=""; + for (String one : entries) { + ret+=" "+one+"\t& "; + } + ret = ret.substring(0,ret.length()-3); + ret+="\t\\\\\n"; + return ret; + } + + public void addColumn(TableColumn c){ + if(columns.isEmpty()){ + columns.add(c); + }else{ + if(getNumberOfRows()!=c.getSize()){ + System.out.println("ERROR: size of columns doesn't match"); + System.exit(0); + }else{ + columns.add(c); + } + } + } + + public static Table createTableFromSerializedColums(String tableName, String tableFile){ + Table ret = new Table(tableName); + try{ + + String[] columnFiles = Files.readFileAsArray(new File(tableFile)); + for (String filename : columnFiles) { + TableColumn col = TableColumn.deSerialize(new File(filename)); + //TableColumn col = (TableColumn) Files.readObjectfromFile(new File(filename)); + ret.addColumn(col); + } + // FileWriter fw = new FileWriter (); + }catch (Exception e) { + e.printStackTrace(); + } + return ret; + } + + public static void serializeColumns(Table t, String dir, String tableFile){ + String column = "column"; + String content = ""; + Files.mkdir(dir); + try{ + int i=0; + for(TableColumn c:t.getColumns()){ + String filename = dir+File.separator+t.getTableName()+column+(i++); + c.serialize(new File(filename)); + //Files.writeObjectToFile(c, new File(filename)); + content += filename+System.getProperty("line.separator"); + } + Files.createFile(new File(tableFile), content); + // + //FileWriter fw = new FileWriter (); + }catch (Exception e) { + e.printStackTrace(); + } + } + + + public List<TableColumn> getColumns() { + return columns; + } + + + public String getTableName() { + return tableName; + } + + + public void setTableName(String tableName) { + this.tableName = tableName; + } + + +} Added: trunk/src/dl-learner/org/dllearner/utilities/statistics/TableColumn.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/statistics/TableColumn.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/utilities/statistics/TableColumn.java 2008-09-25 19:26:59 UTC (rev 1260) @@ -0,0 +1,120 @@ +/** + * Copyright (C) 2007, Jens Lehmann + * + * This file is part of DL-Learner. + * + * DL-Learner is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * DL-Learner is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +package org.dllearner.utilities.statistics; + +import java.io.File; +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import org.dllearner.utilities.Files; + + +public class TableColumn implements Serializable { + + private static final long serialVersionUID = 1l; + private String header; + private List<String> entries = new ArrayList<String>(); + +public TableColumn() { + super(); + +} + +public TableColumn(String header) { + super(); + this.header = header; +} + + +public TableColumn( String[] entries) { + this.entries = Arrays.asList(entries); +} + + +public TableColumn(String header, String[] entries) { + this(header); + this.entries = Arrays.asList(entries); +} + +public TableColumn( List<String> entries) { + this.entries = entries; +} + + +public String getHeader() { + return header; +} + +public void setHeader(String header) { + this.header = header; +} + +/** + * entires should be in Latex, if the target is latex + * @param entry + */ +public void addEntry(String entry){ + entries.add(entry); +} + +public int getSize(){ + return entries.size(); +} + +public String getEntry(int index){ + return entries.get(index); +} + +public void serialize(File file){ + String content = header+System.getProperty("line.separator"); + for (String entry : entries) { + content += entry+System.getProperty("line.separator"); + } + Files.createFile(file, content); +} + +public static TableColumn deSerialize(File f){ + TableColumn ret = null; + try{ + String[] c = Files.readFileAsArray(f); + ret = new TableColumn(); + boolean first = true; + for (String line : c) { + if(first){ + first = false; + ret.setHeader(line); + + }else{ + ret.addEntry(line); + } + + } + }catch (Exception e) { + e.printStackTrace(); + } + + return ret; +} + + +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-09-25 20:56:54
|
Revision: 1261 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1261&view=rev Author: kurzum Date: 2008-09-25 20:56:47 +0000 (Thu, 25 Sep 2008) Log Message: ----------- almost finished preparing new experiment Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/extraction/OWLAPIOntologyCollector.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java trunk/src/dl-learner/org/dllearner/scripts/DumbLPFinder.java trunk/src/dl-learner/org/dllearner/scripts/NewSample.java trunk/src/dl-learner/org/dllearner/scripts/SemanticBibleComparison.java Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/OWLAPIOntologyCollector.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/OWLAPIOntologyCollector.java 2008-09-25 19:26:59 UTC (rev 1260) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/OWLAPIOntologyCollector.java 2008-09-25 20:56:47 UTC (rev 1261) @@ -42,6 +42,7 @@ e.printStackTrace(); } this.factory = manager.getOWLDataFactory(); + } public void addAxiom(OWLAxiom axiom){ @@ -74,6 +75,10 @@ public URI getPhysicalURI() { return physicalURI; } + + public int getNrOfExtractedAxioms(){ + return currentOntology.getAxioms().size(); + } Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-09-25 19:26:59 UTC (rev 1260) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-09-25 20:56:47 UTC (rev 1261) @@ -117,7 +117,7 @@ //private KB kb; // mainly used for statistic - private int nrOfExtractedTriples = 0; + private int nrOfExtractedAxioms = 0; public static String getName() { @@ -263,6 +263,8 @@ ontologyFragmentURL = m.getPhysicalOntologyURL(); + nrOfExtractedAxioms = configuration.getOwlAPIOntologyCollector().getNrOfExtractedAxioms(); + } catch (Exception e) { e.printStackTrace(); @@ -435,8 +437,8 @@ return configurator.getCacheDir(); } - public int getNrOfExtractedTriples() { - return nrOfExtractedTriples; + public int getNrOfExtractedAxioms() { + return nrOfExtractedAxioms; } /* Modified: trunk/src/dl-learner/org/dllearner/scripts/DumbLPFinder.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/DumbLPFinder.java 2008-09-25 19:26:59 UTC (rev 1260) +++ trunk/src/dl-learner/org/dllearner/scripts/DumbLPFinder.java 2008-09-25 20:56:47 UTC (rev 1261) @@ -60,10 +60,8 @@ private static String baseDir = "sembib/"; - private static String baseDirSparql = baseDir + "sparql/"; + private static String exampleBaseDir = baseDir + "examples/"; - private static String baseDirNormal = baseDir + "normal/"; - private static boolean allOrExists = true; private static boolean tenORthirty = true; @@ -85,8 +83,8 @@ ontologyPath, AvailableReasoners.OWLAPIREASONERPELLET); Files.mkdir(baseDir); - Files.mkdir(baseDirSparql); - Files.mkdir(baseDirNormal); + + Files.mkdir(exampleBaseDir); SortedSet<Individual> allIndividuals = new TreeSet<Individual>(); allIndividuals.addAll(reasoningService.getIndividuals()); @@ -162,10 +160,10 @@ + d.getDescriptionLength() : d.getDescriptionLength() + ""; filename += "_" + div + ".conf"; - String content = fileString(true, d, positiveEx, negativeEx); - Files.createFile(new File(baseDirSparql + filename), content); - content = fileString(false, d, positiveEx, negativeEx); - Files.createFile(new File(baseDirNormal + filename), content); + //String content = fileString(true, d, positiveEx, negativeEx); + //Files.createFile(new File(baseDirSparql + filename), content); + String content = fileString( d, positiveEx, negativeEx); + Files.createFile(new File(exampleBaseDir + filename), content); } @SuppressWarnings("unused") @@ -181,12 +179,12 @@ return acc; } - private static String fileString(boolean sparql, EvaluatedDescription d, + private static String fileString( EvaluatedDescription d, SortedSet<Individual> p, SortedSet<Individual> n) { String str = "/**\n" + d.getDescription().toKBSyntaxString() + "\n" + d + "\n" + "\n" + "**/\n" + "\n\n"; - if (sparql) { + /*if (sparql) { str += "sparql.instances = {\n"; for (Individual individual : p) { str += "\"" + individual + "\",\n"; @@ -197,7 +195,7 @@ str = str.substring(0, str.length() - 2); str += "};\n"; - } + }*/ str += "\n" + "/**EXAMPLES**/\n" + ConfWriter.listExamples(true, p) + "\n" + ConfWriter.listExamples(false, n) + "\n"; Modified: trunk/src/dl-learner/org/dllearner/scripts/NewSample.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/NewSample.java 2008-09-25 19:26:59 UTC (rev 1260) +++ trunk/src/dl-learner/org/dllearner/scripts/NewSample.java 2008-09-25 20:56:47 UTC (rev 1261) @@ -41,9 +41,6 @@ import org.dllearner.core.LearningProblemUnsupportedException; import org.dllearner.core.ReasoningService; import org.dllearner.core.configurators.ComponentFactory; -import org.dllearner.gui.Config; -import org.dllearner.gui.ConfigSave; -import org.dllearner.gui.StartGUI; import org.dllearner.kb.OWLFile; import org.dllearner.learningproblems.PosNegDefinitionLP; import org.dllearner.reasoning.FastInstanceChecker; Modified: trunk/src/dl-learner/org/dllearner/scripts/SemanticBibleComparison.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SemanticBibleComparison.java 2008-09-25 19:26:59 UTC (rev 1260) +++ trunk/src/dl-learner/org/dllearner/scripts/SemanticBibleComparison.java 2008-09-25 20:56:47 UTC (rev 1261) @@ -20,9 +20,11 @@ package org.dllearner.scripts; import java.io.File; -import java.util.ArrayList; +import java.net.URI; import java.util.Arrays; +import java.util.HashSet; import java.util.List; +import java.util.Set; import java.util.SortedSet; import java.util.StringTokenizer; import java.util.TreeSet; @@ -32,21 +34,25 @@ import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.apache.log4j.SimpleLayout; -import org.dllearner.cli.Start; +import org.dllearner.algorithms.refexamples.ExampleBasedROLComponent; import org.dllearner.core.Component; import org.dllearner.core.ComponentManager; import org.dllearner.core.EvaluatedDescription; import org.dllearner.core.KnowledgeSource; import org.dllearner.core.LearningAlgorithm; import org.dllearner.core.ReasoningService; +import org.dllearner.core.configurators.ComponentFactory; import org.dllearner.core.owl.Description; import org.dllearner.core.owl.Individual; +import org.dllearner.gui.Config; +import org.dllearner.gui.ConfigSave; import org.dllearner.kb.sparql.Cache; import org.dllearner.kb.sparql.SparqlKnowledgeSource; +import org.dllearner.learningproblems.PosNegDefinitionLP; +import org.dllearner.reasoning.OWLAPIReasoner; import org.dllearner.utilities.Files; import org.dllearner.utilities.JamonMonitorLogger; import org.dllearner.utilities.datastructures.SetManipulation; -import org.dllearner.utilities.learn.ConfWriter; import org.dllearner.utilities.owl.ReasoningServiceFactory; import org.dllearner.utilities.owl.ReasoningServiceFactory.AvailableReasoners; import org.dllearner.utilities.statistics.SimpleClock; @@ -59,12 +65,13 @@ private static ReasoningService reasoningService; private static Logger logger = Logger.getRootLogger(); + public static boolean flawInExperiment = false; public static String ontologyPath = "examples/semantic_bible/NTNcombined.owl"; public static String dir = "sembib/"; - public static String sparqldir = dir+"sparql/"; - public static String normaldir = dir+"normal/"; + //public static String sparqldir = dir+"sparql/"; + public static String exampleDir = dir+"examples/"; public static String tmpFilename = dir + "tmp.conf"; static File log = new File(dir+"results+prop.txt"); @@ -73,24 +80,21 @@ private static Stat accOnOnto = new Stat(); private static Stat accPosExOnOnto = new Stat(); private static Stat accNegExOnOnto = new Stat(); - private static Stat timeFragment = new Stat(); + private static Stat learningTime = new Stat(); private static Stat nrOfExtractedTriples = new Stat(); - private static Stat dLengthFragment = new Stat(); - private static Stat dDepthFragment = new Stat(); + private static Stat descLength = new Stat(); + private static Stat descDepth = new Stat(); private static Stat timeWhole = new Stat(); private static Stat accWhole = new Stat(); private static Stat dLengthWhole = new Stat(); private static Stat dDepthWhole = new Stat(); - private static int normalNoisePercentage = 0; - private static int normalMaxExecution = 500; - private static int sparqllMaxExecution = 250; - private static boolean fragHasNot = false; - private static boolean fragHasAll = false; - private static boolean fragHasBooleanData = false; - private static boolean fragHasNrRes = false; + private static boolean descHasNot = false; + private static boolean descHasAll = false; + private static boolean descHasBooleanData = false; + private static boolean descHasNrRes = false; private static boolean wholeHasNot = false; private static boolean wholeHasAll = false; @@ -101,7 +105,7 @@ //private static Class usedReasoner = FastInstanceChecker.class; - private static boolean useSPARQL = true; + //private static boolean useSPARQL = true; /** * @param args @@ -112,118 +116,167 @@ initLogger(); logger.warn("Start"); - File tmpFile = new File(tmpFilename); - List<String> confs = getFiles(useSPARQL); - - reasoningService = ReasoningServiceFactory.getReasoningService(ontologyPath, AvailableReasoners.OWLAPIREASONERPELLET); - ComponentManager cm =ComponentManager.getInstance(); - try{ + conductExperiment(0); - for (String filename : confs) { - File f = new File(filename); - Cache.getDefaultCache().clearCache(); - String fileContent = Files.readFile(f); - - SortedSet<Individual> posEx = SetManipulation.stringToInd(getIndividuals(fileContent, true)); - SortedSet<Individual> negEx = SetManipulation.stringToInd(getIndividuals(fileContent, false)); - - - StringBuffer sbuf = new StringBuffer(fileContent); - sbuf.insert(0, sparqlOptions()); - Files.createFile(tmpFile, sbuf.toString()); - - SimpleClock sc = new SimpleClock(); - Start.main(new String[] { tmpFilename }); - timeFragment.addNumber((double) sc.getTime()); + - LearningAlgorithm la = cm.getLiveLearningAlgorithms().remove(0); + total.printAndSet("Finished"); + if(flawInExperiment){ + logger.error("There were exceptions"); + } + //logger.warn("Finished"); + + } + + public static void conductExperiment(int experiment){ + + try{ + //prepare everything + List<String> confs = getFiles(); + ComponentManager cm =ComponentManager.getInstance(); - EvaluatedDescription onFragment =(la.getCurrentlyBestEvaluatedDescription()); + for (String filename : confs) { + // read the file and get the examples + File f = new File(filename); + Cache.getDefaultCache().clearCache(); + String fileContent = Files.readFile(f); + SortedSet<Individual> posEx = SetManipulation.stringToInd(getIndividuals(fileContent, true)); + SortedSet<Individual> negEx = SetManipulation.stringToInd(getIndividuals(fileContent, false)); + + ExampleBasedROLComponent la = experimentalSetup1(posEx,negEx); + //TODO measure time + initAllComponents(); + + SimpleClock learningTimeClock = new SimpleClock(); + la.start(); + learningTime.addNumber((double) learningTimeClock.getTime()); - accFragment.addNumber(onFragment.getAccuracy()); - dDepthFragment.addNumber((double)onFragment.getDescriptionDepth()); - dLengthFragment.addNumber((double)onFragment.getDescriptionLength()); - - String desc = onFragment.getDescription().toKBSyntaxString(); + EvaluatedDescription bestDescription =(la.getCurrentlyBestEvaluatedDescription()); + + accFragment.addNumber(bestDescription.getAccuracy()); + descDepth.addNumber((double)bestDescription.getDescriptionDepth()); + descLength.addNumber((double)bestDescription.getDescriptionLength()); + + String desc = bestDescription.getDescription().toKBSyntaxString(); - fragHasNot = ( fragHasNot || desc.contains("NOT")); - fragHasAll = (fragHasAll || desc.contains("ALL")); - fragHasBooleanData = (fragHasBooleanData || desc.contains("= FALSE")|| desc.contains("= TRUE")); - fragHasNrRes = (fragHasNrRes || desc.contains("<")|| desc.contains(">")); - - SortedSet<Individual> retrieved = reasoningService.retrieval(onFragment.getDescription()); - EvaluatedDescription onOnto = reEvaluateDescription( - onFragment.getDescription(), retrieved, posEx, negEx); - - accOnOnto.addNumber(onOnto.getAccuracy()); - - int tmp = (int)(Math.floor(onOnto.getAccuracy()*100)); - normalNoisePercentage = 100-tmp; - accPosExOnOnto.addNumber((double)(onOnto.getCoveredPositives().size()/5)); - double n = (double) (5-onOnto.getCoveredNegatives().size()); - accNegExOnOnto.addNumber(n/5.0); - SparqlKnowledgeSource s=null; - for(KnowledgeSource ks : cm.getLiveKnowledgeSources()){ - if (ks instanceof SparqlKnowledgeSource) { - s = (SparqlKnowledgeSource) ks; + descHasNot = ( descHasNot || desc.contains("NOT")); + descHasAll = (descHasAll || desc.contains("ALL")); + descHasBooleanData = (descHasBooleanData || desc.contains("= FALSE")|| desc.contains("= TRUE")); + descHasNrRes = (descHasNrRes || desc.contains("<")|| desc.contains(">")); + + // evaluate Concept versus Ontology + reasoningService = ReasoningServiceFactory.getReasoningService(ontologyPath, AvailableReasoners.OWLAPIREASONERPELLET); + SortedSet<Individual> retrieved = reasoningService.retrieval(bestDescription.getDescription()); + EvaluatedDescription onOnto = reEvaluateDescription( + bestDescription.getDescription(), retrieved, posEx, negEx); + + accOnOnto.addNumber(onOnto.getAccuracy()); + + //int tmp = (int)(Math.floor(onOnto.getAccuracy()*100)); + //normalNoisePercentage = 100-tmp; + accPosExOnOnto.addNumber((double)(onOnto.getCoveredPositives().size()/5)); + double n = (double) (5-onOnto.getCoveredNegatives().size()); + accNegExOnOnto.addNumber(n/5.0); + SparqlKnowledgeSource s=null; + for(KnowledgeSource ks : cm.getLiveKnowledgeSources()){ + if (ks instanceof SparqlKnowledgeSource) { + s = (SparqlKnowledgeSource) ks; + } } + if(s!=null){ + double nrtrip = (double)(s.getNrOfExtractedAxioms()); + nrOfExtractedTriples.addNumber(nrtrip); + }else{ + nrOfExtractedTriples.addNumber(0.0); + } + + cm.freeAllComponents(); + + + + }//end for + }catch (Exception e) { + e.printStackTrace(); + flawInExperiment = true; } - - double nrtrip = (double)(s.getNrOfExtractedTriples()); - nrOfExtractedTriples.addNumber(nrtrip); - - - - cm.freeAllComponents(); - /*************comp**/ - logger.warn("learning normal"); + + } + + public static ExampleBasedROLComponent experimentalSetup1(SortedSet<Individual> posExamples, SortedSet<Individual> negExamples ){ + ExampleBasedROLComponent la = prepareSparqlExperiment(posExamples, negExamples); + + //la.getConfigurator(); + //appendtoFile + + return la; + } + + public static ExampleBasedROLComponent prepareSparqlExperiment(SortedSet<Individual> posExamples, SortedSet<Individual> negExamples){ + - StringBuffer sbufNormal = new StringBuffer(); - sbufNormal.append(normalOptions()); - sbufNormal.append(ConfWriter.listExamples(true, posEx)); - sbufNormal.append(ConfWriter.listExamples(false, negEx)); - //sbufNormal.append(ConfWriter.) - Files.createFile(tmpFile, sbufNormal.toString()); + ExampleBasedROLComponent la = null; + try{ + SortedSet<Individual> instances = new TreeSet<Individual>(); + instances.addAll(posExamples); + instances.addAll(negExamples); + + SparqlKnowledgeSource ks = ComponentFactory + .getSparqlKnowledgeSource(URI.create( + "http://localhost:2020/bible").toURL(), SetManipulation + .indToString(instances)); + + ks.getConfigurator().setCloseAfterRecursion(true); + ks.getConfigurator().setRecursionDepth(2); + ks.getConfigurator().setPredefinedEndpoint("LOCALJOSEKIBIBLE"); + ks.getConfigurator().setUseLits(true); + ks.getConfigurator().setGetAllSuperClasses(true); + ks.getConfigurator().setGetPropertyInformation(true); + Set<KnowledgeSource> tmp = new HashSet<KnowledgeSource>(); + tmp.add(ks); + // reasoner + OWLAPIReasoner f = ComponentFactory + .getOWLAPIReasoner(tmp); + ReasoningService rs = ComponentManager.getInstance() + .reasoningService(f); + + // learning problem + PosNegDefinitionLP lp = ComponentFactory.getPosNegDefinitionLP(rs, + SetManipulation.indToString(posExamples), SetManipulation + .indToString(negExamples)); + + // learning algorithm + la = ComponentFactory.getExampleBasedROLComponent(lp, rs); + la.getConfigurator().setGuaranteeXgoodDescriptions(1); + Config c = new Config(ComponentManager.getInstance(), ks, f, rs, lp, la); + new ConfigSave(c).saveFile(new File(tmpFilename)); - SimpleClock scNormal = new SimpleClock(); - Start.main(new String[] { tmpFilename }); - timeWhole.addNumber((double) scNormal.getTime()); - - la = cm.getLiveLearningAlgorithms().remove(0); - - EvaluatedDescription normalOnOnto =(la.getCurrentlyBestEvaluatedDescription()); - accWhole.addNumber(normalOnOnto.getAccuracy()); - dDepthWhole.addNumber((double)normalOnOnto.getDescriptionDepth()); - dLengthWhole.addNumber((double)normalOnOnto.getDescriptionLength()); - - fragHasNot = ( fragHasNot || desc.contains("NOT")); - fragHasAll = (fragHasAll || desc.contains("ALL")); - fragHasBooleanData = (fragHasBooleanData || desc.contains("= FALSE")|| desc.contains("= TRUE")); - fragHasNrRes = (fragHasNrRes || desc.contains("<")|| desc.contains(">")); - - cm.freeAllComponents(); - writeLog(); - - - }//end for }catch (Exception e) { - e.printStackTrace(); - + e.printStackTrace(); + flawInExperiment = true; } - writeLog(); - total.printAndSet("Finished"); - //logger.warn("Finished"); + return la; + } + public static void initAllComponents(){ + ComponentManager cm = ComponentManager.getInstance(); + for(Component c : cm.getLiveComponents()){ + try{ + c.init(); + }catch (Exception e) { + e.printStackTrace(); + flawInExperiment = true; + } + } } public static void writeLog(){ String l = "\n\n\n*********************\n"; l +="COUNT: "+accFragment.getCount()+"\n"; - l +="FRAGMENT: ALL: "+fragHasAll+" BOOL: "+fragHasBooleanData+" NOT: "+fragHasNot+" <>=: "+fragHasNrRes+"\n"; + l +="FRAGMENT: ALL: "+descHasAll+" BOOL: "+descHasBooleanData+" NOT: "+descHasNot+" <>=: "+descHasNrRes+"\n"; l +="WHOLE: ALL: "+wholeHasAll+" BOOL: "+wholeHasBooleanData+" NOT: "+wholeHasNot+" <>=: "+wholeHasNrRes+"\n"; @@ -231,10 +284,10 @@ l+="accOnOnto\t\t"+accOnOnto.getMeanAsPercentage()+" +-"+accOnOnto.getStandardDeviation()+"\n"; l+="accPosExOnOnto\t\t"+accPosExOnOnto.getMeanAsPercentage()+" +-"+accPosExOnOnto.getStandardDeviation()+"\n"; l+="accNegExOnOnto\t\t"+accNegExOnOnto.getMeanAsPercentage()+" +-"+accNegExOnOnto.getStandardDeviation()+"\n"; - l+="timeFragment\t\t"+timeFragment.getMean()+" +-"+timeFragment.getStandardDeviation()+"\n"; + l+="timeFragment\t\t"+learningTime.getMean()+" +-"+learningTime.getStandardDeviation()+"\n"; l+="nrOfExtractedTriples\t\t"+nrOfExtractedTriples.getMean()+" +-"+nrOfExtractedTriples.getStandardDeviation()+"\n"; - l+="dLengthFragment\t\t"+dLengthFragment.getMean()+" +-"+dLengthFragment.getStandardDeviation()+"\n"; - l+="dDepthFragment\t\t"+dDepthFragment.getMean()+" +-"+dDepthFragment.getStandardDeviation()+"\n"; + l+="dLengthFragment\t\t"+descLength.getMean()+" +-"+descLength.getStandardDeviation()+"\n"; + l+="dDepthFragment\t\t"+descDepth.getMean()+" +-"+descDepth.getStandardDeviation()+"\n"; l+="timeWhole\t\t"+timeWhole.getMean()+" +-"+timeWhole.getStandardDeviation()+"\n"; l+="accWhole\t\t"+accWhole.getMeanAsPercentage()+" +-"+accWhole.getStandardDeviation()+"\n"; @@ -298,8 +351,8 @@ } - public static List<String> getFiles(boolean sparql){ - String actualDir = (sparql)?sparqldir:normaldir; + public static List<String> getFiles(){ + String actualDir = exampleDir; logger.warn(actualDir); File f = new File(actualDir); String[] files = f.list(); @@ -307,55 +360,7 @@ return Arrays.asList(files); } - public static List<File> getFilesContaining(boolean sparql, String numExamples, String allOrEx, String acc) { - List<File> ret = new ArrayList<File>(); - //SortedSet<File> ret = new TreeSet<File>(); - - String actualDir = (sparql)?sparqldir:normaldir; - logger.warn(actualDir); - File f = new File(actualDir); - String[] files = f.list(); - Arrays.sort(files); - int consistent = 0; - try{ - for (int i = 0; i < files.length; i++) { - - if( files[i].contains(numExamples) - && files[i].contains(allOrEx) - && files[i].contains(acc) - ){ - consistent++; - ret.add(new File(actualDir+files[i])); - if(ret.size() != consistent){ - logger.warn("double file: "+files[i]); - } - } - - } - }catch (Exception e) { - - e.printStackTrace(); - } - if(consistent != ret.size()){ - logger.warn("double files"+consistent+"::"+ret.size()); - System.exit(0); - }else{ - logger.warn("all files different"); - } - return ret; - } - /*public static void analyzeFiles(List<File> l){ - - SortedSet<String> differentIndividuals = new TreeSet<String>(); - for ( content : l) { - differentIndividuals.addAll(getIndividuals(content, true)); - differentIndividuals.addAll(getIndividuals(content, false)); - - } - System.out.println("found diff inds "+differentIndividuals.size()); - - }*/ public static SortedSet<String> getIndividuals(String target, boolean posOrNeg){ if(posOrNeg){ @@ -381,45 +386,10 @@ return ret; } - public static String getCombinedOptions(){ - String s="\n"+ - "algorithm = refexamples;\n"+ - "refexamples.useAllConstructor = true;\n"+ - "refexamples.useNegation = true;\n"+ - "refexamples.useCardinalityRestrictions = true;\n"+ - "refexamples.guaranteeXgoodDescriptions = 1;\n"+ - - "\n"+ - "reasoner = owlAPIReasoner;\n"+ - //"reasoner = fastInstanceChecker;\n"+ - "owlAPIReasoner.reasonerType = pellet;\n\n"+ - ""; - return s; - } - public static String sparqlOptions (){ - String s="// SPARQL options\n"+ - "sparql.recursionDepth = 2;\n"+ - "sparql.useLits = true;\n"+ - "sparql.predefinedEndpoint = \"LOCALJOSEKIBIBLE\";\n"+ - "sparql.getPropertyInformation = true;\n"+ - "refexamples.maxExecutionTimeInSeconds = "+sparqllMaxExecution+";\n"+ - "import(\"http://localhost:2020/bible\",\"SPARQL\");\n"+ - getCombinedOptions()+ - ""; - return s; - } - public static String normalOptions (){ - String s="\n"+ - "import(\"NTNcombined.owl\");\n"+ - "refexamples.maxExecutionTimeInSeconds = "+normalMaxExecution+";\n"; - - s+="refexamples.noisePercentage = "+normalNoisePercentage+";\n"+ - getCombinedOptions()+ - ""; - return s; - } + + private static void initLogger() { @@ -443,6 +413,56 @@ } + + /*public static List<File> getFilesContaining(boolean sparql, String numExamples, String allOrEx, String acc) { + List<File> ret = new ArrayList<File>(); + //SortedSet<File> ret = new TreeSet<File>(); + + String actualDir = (sparql)?sparqldir:normaldir; + logger.warn(actualDir); + File f = new File(actualDir); + String[] files = f.list(); + Arrays.sort(files); + int consistent = 0; + try{ + for (int i = 0; i < files.length; i++) { + + if( files[i].contains(numExamples) + && files[i].contains(allOrEx) + && files[i].contains(acc) + ){ + consistent++; + ret.add(new File(actualDir+files[i])); + if(ret.size() != consistent){ + logger.warn("double file: "+files[i]); + } + } + + } + }catch (Exception e) { + + e.printStackTrace(); + } + if(consistent != ret.size()){ + logger.warn("double files"+consistent+"::"+ret.size()); + System.exit(0); + }else{ + logger.warn("all files different"); + } + return ret; +}*/ +/*public static void analyzeFiles(List<File> l){ + SortedSet<String> differentIndividuals = new TreeSet<String>(); + for ( content : l) { + differentIndividuals.addAll(getIndividuals(content, true)); + differentIndividuals.addAll(getIndividuals(content, false)); + + } + System.out.println("found diff inds "+differentIndividuals.size()); + +}*/ + + } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2008-09-26 10:27:36
|
Revision: 1263 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1263&view=rev Author: jenslehmann Date: 2008-09-26 10:27:24 +0000 (Fri, 26 Sep 2008) Log Message: ----------- preparations for computing simulations Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/algorithms/el/ELDescriptionNode.java trunk/src/dl-learner/org/dllearner/algorithms/el/ELDescriptionTree.java trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorFilterRule.java trunk/src/dl-learner/org/dllearner/refinementoperators/ELDown.java trunk/src/dl-learner/org/dllearner/test/junit/ELDescriptionTreeTests.java trunk/src/dl-learner/org/dllearner/test/junit/ELDownTests.java Modified: trunk/src/dl-learner/org/dllearner/algorithms/el/ELDescriptionNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/el/ELDescriptionNode.java 2008-09-26 08:42:12 UTC (rev 1262) +++ trunk/src/dl-learner/org/dllearner/algorithms/el/ELDescriptionNode.java 2008-09-26 10:27:24 UTC (rev 1263) @@ -20,18 +20,22 @@ package org.dllearner.algorithms.el; import java.util.ArrayList; +import java.util.HashSet; import java.util.LinkedList; import java.util.List; import java.util.NavigableSet; +import java.util.Set; import java.util.SortedSet; import java.util.TreeSet; +import org.dllearner.core.ReasoningService; import org.dllearner.core.owl.Description; import org.dllearner.core.owl.Intersection; import org.dllearner.core.owl.NamedClass; import org.dllearner.core.owl.ObjectProperty; import org.dllearner.core.owl.ObjectSomeRestriction; import org.dllearner.core.owl.Thing; +import org.dllearner.utilities.Helper; /** * Represents an EL description tree, which corresponds to a @@ -66,12 +70,12 @@ private ELDescriptionNode parent = null; // simulation information (list or set?) - protected List<ELDescriptionNode> in = new ArrayList<ELDescriptionNode>(); - private List<ELDescriptionNode> inSC1 = new ArrayList<ELDescriptionNode>(); - private List<ELDescriptionNode> inSC2 = new ArrayList<ELDescriptionNode>(); - protected List<ELDescriptionNode> out = new ArrayList<ELDescriptionNode>(); - private List<ELDescriptionNode> outSC1 = new ArrayList<ELDescriptionNode>(); - private List<ELDescriptionNode> outSC2 = new ArrayList<ELDescriptionNode>(); + protected Set<ELDescriptionNode> in = new HashSet<ELDescriptionNode>(); + private Set<ELDescriptionNode> inSC1 = new HashSet<ELDescriptionNode>(); + private Set<ELDescriptionNode> inSC2 = new HashSet<ELDescriptionNode>(); + protected Set<ELDescriptionNode> out = new HashSet<ELDescriptionNode>(); + private Set<ELDescriptionNode> outSC1 = new HashSet<ELDescriptionNode>(); + private Set<ELDescriptionNode> outSC2 = new HashSet<ELDescriptionNode>(); /** * Constructs an EL description tree with empty root label. @@ -92,6 +96,9 @@ parent = null; // this is the root node of the overall tree tree.rootNode = this; + tree.addNodeToLevel(this, level); + + // TODO simulation update } public ELDescriptionNode(ELDescriptionNode parentNode, ObjectProperty parentProperty, NavigableSet<NamedClass> label) { @@ -107,6 +114,8 @@ parent.edges.add(edge); // we need to update the set of nodes on a particular level tree.addNodeToLevel(this, level); + + // TODO simulation update } /** @@ -240,14 +249,102 @@ public void replaceInLabel(NamedClass oldClass, NamedClass newClass) { label.remove(oldClass); label.add(newClass); + + // simulation update + + + Set<ELDescriptionNode> nodes = tree.getNodesOnLevel(level); + Set<ELDescriptionNode> tmp = Helper.difference(nodes, in); + for(ELDescriptionNode node : tmp) { + if(isSublabel(label, node.label)) { + // TODO continue later + } + } + } + // SC satisfied if both SC1 and SC2 satisfied + private boolean checkSC(ELDescriptionNode node1, ELDescriptionNode node2) { + return checkSC1(node1, node2) && checkSC2(node1, node2); + } + + // tests simulation condition 1 (SC1) + private boolean checkSC1(ELDescriptionNode node1, ELDescriptionNode node2) { + return isSublabel(node1.label, node2.label); + } + + private boolean isSublabel(NavigableSet<NamedClass> subLabel, NavigableSet<NamedClass> superLabel) { + // implemented according to definition in article + // (TODO can probably be done more efficiently) + for(NamedClass nc : superLabel) { + if(!containsSubclass(nc, subLabel)) { + return false; + } + } + return true; + } + + private boolean containsSubclass(NamedClass superClass, NavigableSet<NamedClass> label) { + for(NamedClass nc : label) { + if(tree.subsumptionHierarchy.isSubclassOf(nc, superClass)) { + return true; + } + } + return false; + } + + // tests simulation condition 2 (SC2) + private boolean checkSC2(ELDescriptionNode node1, ELDescriptionNode node2) { + List<ELDescriptionEdge> edges1 = node1.getEdges(); + List<ELDescriptionEdge> edges2 = node2.getEdges(); + + for(ELDescriptionEdge edge : edges1) { + // try to find an edge satisfying SC2 in the set + if(!checkSC2Edge(edge, edges2)) { + return false; + } + } + + return true; + } + + // check whether edges contains an element satisfying SC2 + private boolean checkSC2Edge(ELDescriptionEdge edge, List<ELDescriptionEdge> edges) { + ObjectProperty op1 = edge.getLabel(); + ELDescriptionNode node1 = edge.getTree(); + + for(ELDescriptionEdge edge2 : edges) { + ObjectProperty op2 = edge2.getLabel(); + // we first check the condition on the properties + if(tree.roleHierarchy.isSubpropertyOf(op1, op2)) { + // check condition on simulations of referred nodes + ELDescriptionNode node2 = edge2.getTree(); + if(node1.in.contains(node2) || node2.in.contains(node1)) { + // we found a node satisfying the condition, so we can return + return true; + } + } + } + + // none of the edges in the set satisfies the 2nd simulation criterion + // wrt. the first edge + return false; + } + + // adds (node1,node2) to simulation, takes care of all helper sets + private void extendSimulation(ELDescriptionNode node1, ELDescriptionNode node2) { + node1.out.add(node2); + node2.in.add(node1); + } + /** * Adds an entry to the node label. * @param newClass Class to add to label. */ public void extendLabel(NamedClass newClass) { label.add(newClass); + + // TODO simulation update } /** Modified: trunk/src/dl-learner/org/dllearner/algorithms/el/ELDescriptionTree.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/el/ELDescriptionTree.java 2008-09-26 08:42:12 UTC (rev 1262) +++ trunk/src/dl-learner/org/dllearner/algorithms/el/ELDescriptionTree.java 2008-09-26 10:27:24 UTC (rev 1263) @@ -31,7 +31,9 @@ import org.dllearner.core.owl.Intersection; import org.dllearner.core.owl.NamedClass; import org.dllearner.core.owl.ObjectProperty; +import org.dllearner.core.owl.ObjectPropertyHierarchy; import org.dllearner.core.owl.ObjectSomeRestriction; +import org.dllearner.core.owl.SubsumptionHierarchy; import org.dllearner.core.owl.Thing; import org.dllearner.core.owl.UnsupportedLanguageException; @@ -49,14 +51,25 @@ // attach a simulation relation to the description tree // private Simulation simulation; - private int maxLevel = 1; + // max level = 0 means that there is no tree at all + // (max level = 1 means the root node exists) + private int maxLevel = 0; protected ELDescriptionNode rootNode; private Map<Integer, Set<ELDescriptionNode>> levelNodeMapping = new HashMap<Integer, Set<ELDescriptionNode>>(); - public ELDescriptionTree() { - + // the background knowledge (we need to have it explicitly here, + // since we store simulation information in the tree and simulation + // updates depend on background knowledge) + protected ReasoningService rs; + protected SubsumptionHierarchy subsumptionHierarchy; + protected ObjectPropertyHierarchy roleHierarchy; + + public ELDescriptionTree(ReasoningService rs) { + this.rs = rs; + subsumptionHierarchy = rs.getSubsumptionHierarchy(); + roleHierarchy = rs.getRoleHierarchy(); } /** @@ -65,7 +78,8 @@ * @param description * A description */ - public ELDescriptionTree(Description description) { + public ELDescriptionTree(ReasoningService rs, Description description) { + this(rs); // construct root node and recursively build the tree rootNode = new ELDescriptionNode(this); constructTree(description, rootNode); @@ -117,11 +131,14 @@ } // checks whether this tree is minimal wrt. background knowledge - public boolean isMinimal(ReasoningService rs) { + public boolean isMinimal() { +// System.out.println(this); +// System.out.println(levelNodeMapping); // loop through all levels starting from root (level 1) for(int i=1; i<=maxLevel; i++) { // get all nodes of this level Set<ELDescriptionNode> nodes = levelNodeMapping.get(i); +// System.out.println("level " + i + ": " + nodes); for(ELDescriptionNode node : nodes) { List<ELDescriptionEdge> edges = node.getEdges(); // we need to compare all combination of edges @@ -207,7 +224,7 @@ @Override public ELDescriptionTree clone() { // create a new reference tree - ELDescriptionTree treeClone = new ELDescriptionTree(); + ELDescriptionTree treeClone = new ELDescriptionTree(rs); // create a root node attached to this reference tree ELDescriptionNode rootNodeClone = new ELDescriptionNode(treeClone, new TreeSet<NamedClass>( rootNode.getLabel())); Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorFilterRule.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorFilterRule.java 2008-09-26 08:42:12 UTC (rev 1262) +++ trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorFilterRule.java 2008-09-26 10:27:24 UTC (rev 1263) @@ -27,11 +27,7 @@ import org.dllearner.utilities.datastructures.RDFNodeTuple; import org.dllearner.utilities.owl.OWLVocabulary; -import com.hp.hpl.jena.rdf.model.Literal; -import com.hp.hpl.jena.rdf.model.RDFNode; -import com.hp.hpl.jena.rdf.model.impl.ResourceImpl; - public class DBpediaNavigatorFilterRule extends Rule{ @@ -42,13 +38,13 @@ @Override public SortedSet<RDFNodeTuple> applyRule(Node subject, SortedSet<RDFNodeTuple> tuples){ - RDFNode clazz = null; +// RDFNode clazz = null; RDFNodeTuple typeTuple = null; List<RDFNodeTuple> toRemove=new LinkedList<RDFNodeTuple>(); for (RDFNodeTuple tuple : tuples) { if (tuple.a.toString().equals(OWLVocabulary.RDF_TYPE)){ - clazz = tuple.b; +// clazz = tuple.b; typeTuple = tuple; } Modified: trunk/src/dl-learner/org/dllearner/refinementoperators/ELDown.java =================================================================== --- trunk/src/dl-learner/org/dllearner/refinementoperators/ELDown.java 2008-09-26 08:42:12 UTC (rev 1262) +++ trunk/src/dl-learner/org/dllearner/refinementoperators/ELDown.java 2008-09-26 10:27:24 UTC (rev 1263) @@ -21,6 +21,7 @@ import java.util.Collection; import java.util.HashSet; +import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Map; @@ -103,9 +104,7 @@ */ @Override public Set<Description> refine(Description concept) { - // TODO according to the specification, we need to minimise - // the tree (not yet implemented) - ELDescriptionTree tree = new ELDescriptionTree(concept); + ELDescriptionTree tree = new ELDescriptionTree(rs, concept); Set<ELDescriptionTree> refinementTrees = refine(tree); // System.out.println("Refinements finished."); Set<Description> refinements = new HashSet<Description>(); @@ -171,7 +170,6 @@ } // option 3: new edge - // TODO incomplete, it is still open how to construct this refinement !! SortedSet<ObjectProperty> appOPs = utility.computeApplicableObjectProperties(index); Set<ObjectProperty> mgr = utility.computeMgr(appOPs); // temporary set of all concepts, which still have to pass the equivalence check @@ -182,25 +180,34 @@ ELDescriptionNode clonedNode = clonedTree.getNode(position); // add a new node and edge ELDescriptionNode newNode = new ELDescriptionNode(clonedNode, op, new TreeSet<NamedClass>()); -// refinements.add(clonedTree); stack.add(clonedTree); // recurse if concept is equivalent - // TODO: efficient equivalence check needs to be implemented !! while(stack.size() != 0) { // we pick an arbitrary tree and remove it from the stack ELDescriptionTree testTree = stack.pop(); - // test equivalence - boolean equivalent = false; - // TODO equivalence check + // test equivalence (we found out that we can use the + // minimality test for equivalence in this case) + boolean equivalent = !testTree.isMinimal(); + // if the tree is equivalent, we need to populate the + // stack with refinements (which are later tested for + // equivalence) if(equivalent) { // edge refinement // we know that the edge we added is the last one for this node int edgeNr = node.getEdges().size() - 1; + ELDescriptionEdge edge = node.getEdges().get(edgeNr); // all refinements of this edge are added to the stack + // (set 1 in article) refineEdge(stack, tree, node, position, edgeNr); // perform node refinements in non-minimize-mode - refinements.addAll(refineEdges(tree, newNode, position)); + // (set 2 in article) +// commented out, because didn't make sense to me +// refinements.addAll(refineEdges(tree, newNode, position)); + stack.addAll(refine(tree, newNode, opRanges.get(edge), false)); + } else { + // tree is not equivalent, i.e. a proper refinement + refinements.add(testTree); } } } @@ -216,6 +223,17 @@ refinements.addAll(refine(tree, edge.getTree(), range, minimize)); } + // we found out that, in case we start from the TOP concept + // (which is assumed in the current implementation), we can + // simply throw away all non-minimal concepts + if(minimize) { + Iterator<ELDescriptionTree> it = refinements.iterator(); + while(it.hasNext()) { + if(!it.next().isMinimal()) { + it.remove(); + } + } + } return refinements; } @@ -233,18 +251,17 @@ ObjectProperty op = edge.getLabel(); // find all more special properties for(ObjectProperty op2 : rs.getMoreSpecialRoles(op)) { - // TODO we need to check whether the range of this property is disjoint - // with the current child node; - // not implemented, because disjointness checks can only be done on descriptions - // we check whether the range of this property is not disjoint - // with the existing child node + // with the existing child node (we do not perform a full disjointness + // check, but only compare with the flattened concept to keep the number + // of possible disjointness checks finite) if(!utility.isDisjoint(getFlattenedConcept(edge.getTree()), opRanges.get(op2))) { // clone operation ELDescriptionTree clonedTree = tree.clone(); // find cloned edge and replace its label ELDescriptionEdge clonedEdge = clonedTree.getNode(position).getEdges().get(edgeNumber); clonedEdge.setLabel(op2); + // TODO simulation update refinements.add(clonedTree); } Modified: trunk/src/dl-learner/org/dllearner/test/junit/ELDescriptionTreeTests.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/junit/ELDescriptionTreeTests.java 2008-09-26 08:42:12 UTC (rev 1262) +++ trunk/src/dl-learner/org/dllearner/test/junit/ELDescriptionTreeTests.java 2008-09-26 10:27:24 UTC (rev 1263) @@ -48,8 +48,9 @@ @Test public void simulationTest() { Simulation s = new Simulation(); - ELDescriptionTree tree1 = new ELDescriptionTree(); - ELDescriptionTree tree2 = new ELDescriptionTree(); + // TODO we need to add background knowledge (possibly empty) + ELDescriptionTree tree1 = null; // new ELDescriptionTree(); + ELDescriptionTree tree2 = null; // new ELDescriptionTree(); ELDescriptionNode t1 = new ELDescriptionNode(tree1); ELDescriptionNode t2 = new ELDescriptionNode(tree2); TreeTuple tuple1 = new TreeTuple(t1,t2); @@ -67,7 +68,8 @@ public void cloneTest() throws ParseException { Description d = KBParser.parseConcept("(male AND (human AND EXISTS hasChild.(female AND EXISTS hasChild.male)))"); ConceptTransformation.cleanConcept(d); - ELDescriptionTree tree = new ELDescriptionTree(d); + // TODO needs to be updated (trees now require background knowledge) + ELDescriptionTree tree = null; // new ELDescriptionTree(rs, d); ELDescriptionTree treeCloned = tree.clone(); ELDescriptionTreeComparator comparator = new ELDescriptionTreeComparator(); assertTrue(comparator.compare(tree, treeCloned) == 0); Modified: trunk/src/dl-learner/org/dllearner/test/junit/ELDownTests.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/junit/ELDownTests.java 2008-09-26 08:42:12 UTC (rev 1262) +++ trunk/src/dl-learner/org/dllearner/test/junit/ELDownTests.java 2008-09-26 10:27:24 UTC (rev 1263) @@ -121,7 +121,7 @@ // assertTrue(refinements.size() == desired.size()); for(Description refinement : refinements) { System.out.println(refinement); -// assertTrue(desired.contains(refinement)); + assertTrue(desired.contains(refinement)); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-09-26 18:35:09
|
Revision: 1274 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1274&view=rev Author: kurzum Date: 2008-09-26 18:35:02 +0000 (Fri, 26 Sep 2008) Log Message: ----------- Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/extraction/Manager.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java trunk/src/dl-learner/org/dllearner/scripts/SemanticBibleComparison.java trunk/src/dl-learner/org/dllearner/utilities/statistics/Table.java Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/Manager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/Manager.java 2008-09-26 17:25:48 UTC (rev 1273) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/Manager.java 2008-09-26 18:35:02 UTC (rev 1274) @@ -57,9 +57,9 @@ public Node extractOneURI(String uri) { - logger.info("Start extracting: "+uri); + //logger.info("Start extracting: "+uri); Node n = extractionAlgorithm.expandNode(uri, configuration.getTupelAquisitor()); - logger.info("Finished extracting: "+uri ); + //logger.info("Finished extracting: "+uri ); seedNodes.add(n); return n; } Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-09-26 17:25:48 UTC (rev 1273) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-09-26 18:35:02 UTC (rev 1274) @@ -27,6 +27,8 @@ import java.util.LinkedList; import java.util.List; import java.util.TreeSet; +import java.util.concurrent.Callable; +import java.util.concurrent.FutureTask; import org.apache.log4j.Logger; import org.dllearner.core.KnowledgeSource; @@ -61,6 +63,7 @@ import org.dllearner.utilities.statistics.SimpleClock; import org.semanticweb.owl.model.OWLOntology; +import com.jamonapi.Monitor; import com.jamonapi.MonitorFactory; /** @@ -72,13 +75,16 @@ */ public class SparqlKnowledgeSource extends KnowledgeSource { + //RBC + private static final boolean debug = true; - private static final boolean debug = false; + private static final boolean threaded = debug && true ; + // tupleaquisitor //private static final boolean debugUseImprovedTupleAquisitor = debug && false; // switches // sysex - private static final boolean debugExitAfterExtraction = debug && false; // switches + private static final boolean debugExitAfterExtraction = debug && true; // switches private SparqlKnowledgeSourceConfigurator configurator; @@ -227,7 +233,7 @@ public void init() { logger.info("SparqlModul: Collecting Ontology"); SimpleClock totalTime = new SimpleClock(); - SimpleClock extractionTime = new SimpleClock(); + //SimpleClock extractionTime = new SimpleClock(); logger.trace(getURL()); logger.trace(getSparqlEndpoint()); @@ -253,14 +259,23 @@ try { // the actual extraction is started here - - extractionTime.setTime(); - List<Node> seedNodes = m.extract(configurator.getInstances()); + Monitor extractionTime = JamonMonitorLogger.getTimeMonitor(SparqlKnowledgeSource.class, "total extraction time").start(); + List<Node> seedNodes=new ArrayList<Node>(); + if(!threaded){ + seedNodes = m.extract(configurator.getInstances()); + }else{ + for (String uri : configurator.getInstances()) { + FutureTask<Node> f = new FutureTask<Node>(new ExtractOneInstance(m,uri)); + seedNodes.add(f.get()); + } + } + extractionTime.stop(); + fragment = m.getOWLAPIOntologyForNodes(seedNodes, configurator.getSaveExtractedFragment()); - extractionTime.printAndSet("extraction needed"); - logger.info("Finished collecting Fragment"); + logger.info("Finished collecting fragment. needed "+extractionTime.getLastValue()+" ms"); + ontologyFragmentURL = m.getPhysicalOntologyURL(); nrOfExtractedAxioms = configuration.getOwlAPIOntologyCollector().getNrOfExtractedAxioms(); @@ -280,6 +295,31 @@ System.exit(0); } } + + public List<Node> extractParallel(){ + return null; + } + + private class ExtractOneInstance extends Thread implements Callable{ + Manager m; + Node n; + String uri; + + private ExtractOneInstance(Manager m, String uri){ + super(); + this.m = m; + this.uri = uri; + } + + @Override + public void run(){ + n = m.extractOneURI(uri); + } + + public Node call(){ + return n; + } + } /* * (non-Javadoc) Modified: trunk/src/dl-learner/org/dllearner/scripts/SemanticBibleComparison.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SemanticBibleComparison.java 2008-09-26 17:25:48 UTC (rev 1273) +++ trunk/src/dl-learner/org/dllearner/scripts/SemanticBibleComparison.java 2008-09-26 18:35:02 UTC (rev 1274) @@ -73,6 +73,9 @@ public class SemanticBibleComparison { + private static boolean onJensMachine = false; + private static int nrOfFilesInExperiment = (onJensMachine)?1:1; + private static ReasoningService reasoningService; private static Logger logger = Logger.getRootLogger(); @@ -143,13 +146,22 @@ List<String> l = getFiles(); analyzeFiles(l); + if(onJensMachine){ + conductExperiment(Experiments.NORMAL_10s); + conductExperiment(Experiments.NORMAL_100s); + conductExperiment(Experiments.NORMAL_1000_CONCEPT_TESTS); + conductExperiment(Experiments.NORMAL_10000_CONCEPT_TESTS); + + + + } + for (Experiments exp : Experiments.values()) { //if(exp.equals(Experiments.SPARQL_10000_CONCEPT_TESTS))continue; //if(exp.equals(Experiments.NORMAL_10000_CONCEPT_TESTS))continue; //if(exp.equals(Experiments.SPARQL_100s))continue; - //if(exp.equals(Experiments.NORMAL_100s))continue; + //if(exp.toString().contains("SPARQL"))continue; conductExperiment(exp); - reinitStat(); //System.exit(0); } //conductExperiment(0); @@ -175,12 +187,12 @@ List<String> confs = getFiles(); ComponentManager cm =ComponentManager.getInstance(); - int count = 1; + int count = 0; for (String filename : confs) { SimpleClock oneExperiment = new SimpleClock(); - if (count == 2){break;} + if (count == nrOfFilesInExperiment){break;} - logger.warn("****"+exp+" "+count +" from file "+filename); + logger.warn("****"+exp+" "+(count+1) +" from file "+filename); // read the file and get the examples File f = new File(exampleDir+filename); @@ -246,17 +258,17 @@ cm.freeAllComponents(); - fillTable(exp, count); + fillTable(exp, (count+1)); - logger.warn(exp+" "+count+ " " +oneExperiment.getAndSet("")+"****" ); + logger.warn(exp+" "+(count+1)+ " " +oneExperiment.getAndSet("")+"****" ); count++; }//end for }catch (Exception e) { e.printStackTrace(); flawInExperiment = true; } - - } + reinitStat(); + }//endconduct public static void analyzeFiles(List<String> l){ int countDoublettes = 0; Modified: trunk/src/dl-learner/org/dllearner/utilities/statistics/Table.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/statistics/Table.java 2008-09-26 17:25:48 UTC (rev 1273) +++ trunk/src/dl-learner/org/dllearner/utilities/statistics/Table.java 2008-09-26 18:35:02 UTC (rev 1274) @@ -22,6 +22,7 @@ import java.io.File; import java.io.Serializable; +import java.net.URLEncoder; import java.util.ArrayList; import java.util.List; @@ -177,17 +178,18 @@ } public static void serializeColumns(Table t, String dir, String tableFile){ - String column = "column"; + String column = ".column"; String content = ""; dir = StringFormatter.checkIfDirEndsOnSlashAndRemove(dir); Files.mkdir(dir); try{ int i=0; for(TableColumn c:t.getColumns()){ - String filename = dir+File.separator+t.getTableName()+column+(i++); - c.serialize(new File(filename)); + String header = URLEncoder.encode(c.getHeader(),"UTF-8"); + String columnFileName = dir+File.separator+t.getTableName()+header+(i++)+column; + c.serialize(new File(columnFileName)); //Files.writeObjectToFile(c, new File(filename)); - content += filename+System.getProperty("line.separator"); + content += columnFileName+System.getProperty("line.separator"); } Files.createFile(new File(tableFile), content); // This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-09-26 18:39:06
|
Revision: 1275 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1275&view=rev Author: kurzum Date: 2008-09-26 18:39:03 +0000 (Fri, 26 Sep 2008) Log Message: ----------- server commit Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java trunk/src/dl-learner/org/dllearner/utilities/statistics/Table.java Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-09-26 18:35:02 UTC (rev 1274) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-09-26 18:39:03 UTC (rev 1275) @@ -265,8 +265,10 @@ seedNodes = m.extract(configurator.getInstances()); }else{ for (String uri : configurator.getInstances()) { + System.out.println("making future task"); FutureTask<Node> f = new FutureTask<Node>(new ExtractOneInstance(m,uri)); seedNodes.add(f.get()); + System.out.println("finished FutureTask "+seedNodes.size()); } } extractionTime.stop(); Modified: trunk/src/dl-learner/org/dllearner/utilities/statistics/Table.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/statistics/Table.java 2008-09-26 18:35:02 UTC (rev 1274) +++ trunk/src/dl-learner/org/dllearner/utilities/statistics/Table.java 2008-09-26 18:39:03 UTC (rev 1275) @@ -186,7 +186,7 @@ int i=0; for(TableColumn c:t.getColumns()){ String header = URLEncoder.encode(c.getHeader(),"UTF-8"); - String columnFileName = dir+File.separator+t.getTableName()+header+(i++)+column; + String columnFileName = dir+File.separator+t.getTableName()+(i++)+header+column; c.serialize(new File(columnFileName)); //Files.writeObjectToFile(c, new File(filename)); content += columnFileName+System.getProperty("line.separator"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-09-26 19:30:16
|
Revision: 1276 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1276&view=rev Author: kurzum Date: 2008-09-26 19:30:02 +0000 (Fri, 26 Sep 2008) Log Message: ----------- serverCommit Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java trunk/src/dl-learner/org/dllearner/scripts/SemanticBibleComparison.java Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-09-26 18:39:03 UTC (rev 1275) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-09-26 19:30:02 UTC (rev 1276) @@ -27,8 +27,6 @@ import java.util.LinkedList; import java.util.List; import java.util.TreeSet; -import java.util.concurrent.Callable; -import java.util.concurrent.FutureTask; import org.apache.log4j.Logger; import org.dllearner.core.KnowledgeSource; @@ -76,15 +74,15 @@ public class SparqlKnowledgeSource extends KnowledgeSource { //RBC - private static final boolean debug = true; + private static final boolean debug = false; - private static final boolean threaded = debug && true ; + //private static final boolean threaded = debug && true ; // tupleaquisitor //private static final boolean debugUseImprovedTupleAquisitor = debug && false; // switches // sysex - private static final boolean debugExitAfterExtraction = debug && true; // switches + private static final boolean debugExitAfterExtraction = debug && false; // switches private SparqlKnowledgeSourceConfigurator configurator; @@ -261,17 +259,34 @@ // the actual extraction is started here Monitor extractionTime = JamonMonitorLogger.getTimeMonitor(SparqlKnowledgeSource.class, "total extraction time").start(); List<Node> seedNodes=new ArrayList<Node>(); - if(!threaded){ + + //if(!threaded){ seedNodes = m.extract(configurator.getInstances()); - }else{ + /*}else{ + int maxPoolSize = configurator.getInstances().size(); + ThreadPoolExecutor ex = new ThreadPoolExecutor(5,maxPoolSize,1,TimeUnit.SECONDS,new ArrayBlockingQueue<Runnable>(100)); + List<FutureTask<Node>> tasks = new ArrayList<FutureTask<Node>>(); + for (String uri : configurator.getInstances()) { - System.out.println("making future task"); - FutureTask<Node> f = new FutureTask<Node>(new ExtractOneInstance(m,uri)); - seedNodes.add(f.get()); - System.out.println("finished FutureTask "+seedNodes.size()); + + ExtractOneInstance e = new ExtractOneInstance(m,uri); + + FutureTask<Node> ft = new FutureTask<Node>(e); + ex.submit(ft); + tasks.add(ft); + //System.out.println(f.get()); + //seedNodes.add(f.get()); + //System.out.println("finished FutureTask "+seedNodes.size()); } - } + for(FutureTask<Node> ft : tasks){ + //System.out.println(ft.get()); + //System.out.println("aaa"); + seedNodes.add(ft.get()); + + } + }*/ extractionTime.stop(); + fragment = m.getOWLAPIOntologyForNodes(seedNodes, configurator.getSaveExtractedFragment()); @@ -302,7 +317,7 @@ return null; } - private class ExtractOneInstance extends Thread implements Callable{ + /*private class ExtractOneInstance implements Callable{ Manager m; Node n; String uri; @@ -313,15 +328,13 @@ this.uri = uri; } - @Override - public void run(){ - n = m.extractOneURI(uri); - } + public Node call(){ - return n; + System.out.println("funky"); + return m.extractOneURI(uri); } - } + }*/ /* * (non-Javadoc) Modified: trunk/src/dl-learner/org/dllearner/scripts/SemanticBibleComparison.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SemanticBibleComparison.java 2008-09-26 18:39:03 UTC (rev 1275) +++ trunk/src/dl-learner/org/dllearner/scripts/SemanticBibleComparison.java 2008-09-26 19:30:02 UTC (rev 1276) @@ -74,7 +74,7 @@ public class SemanticBibleComparison { private static boolean onJensMachine = false; - private static int nrOfFilesInExperiment = (onJensMachine)?1:1; + private static int nrOfFilesInExperiment = (onJensMachine)?1:200; private static ReasoningService reasoningService; @@ -161,7 +161,8 @@ //if(exp.equals(Experiments.NORMAL_10000_CONCEPT_TESTS))continue; //if(exp.equals(Experiments.SPARQL_100s))continue; //if(exp.toString().contains("SPARQL"))continue; - conductExperiment(exp); + if(exp.equals(Experiments.SPARQL_10s))conductExperiment(exp); + if(exp.equals(Experiments.SPARQL_1000_CONCEPT_TESTS))conductExperiment(exp); //System.exit(0); } //conductExperiment(0); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-09-27 14:11:01
|
Revision: 1284 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1284&view=rev Author: kurzum Date: 2008-09-27 14:10:57 +0000 (Sat, 27 Sep 2008) Log Message: ----------- prepared experiments Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/scripts/SemanticBibleComparison.java trunk/src/dl-learner/org/dllearner/utilities/StringFormatter.java trunk/src/dl-learner/org/dllearner/utilities/statistics/Table.java Property Changed: ---------------- trunk/src/dl-learner/org/dllearner/test/ Modified: trunk/src/dl-learner/org/dllearner/scripts/SemanticBibleComparison.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SemanticBibleComparison.java 2008-09-27 07:48:14 UTC (rev 1283) +++ trunk/src/dl-learner/org/dllearner/scripts/SemanticBibleComparison.java 2008-09-27 14:10:57 UTC (rev 1284) @@ -24,6 +24,7 @@ import java.net.MalformedURLException; import java.net.URI; import java.net.URL; +import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; import java.util.List; @@ -45,9 +46,11 @@ import org.dllearner.core.EvaluatedDescription; import org.dllearner.core.KnowledgeSource; import org.dllearner.core.LearningAlgorithm; +import org.dllearner.core.ReasonerComponent; import org.dllearner.core.ReasoningService; import org.dllearner.core.configurators.ComponentFactory; import org.dllearner.core.configurators.ExampleBasedROLComponentConfigurator; +import org.dllearner.core.configurators.SparqlKnowledgeSourceConfigurator; import org.dllearner.core.owl.Description; import org.dllearner.core.owl.Individual; import org.dllearner.gui.Config; @@ -56,6 +59,7 @@ import org.dllearner.kb.sparql.Cache; import org.dllearner.kb.sparql.SparqlKnowledgeSource; import org.dllearner.learningproblems.PosNegDefinitionLP; +import org.dllearner.reasoning.FastInstanceChecker; import org.dllearner.reasoning.OWLAPIReasoner; import org.dllearner.utilities.Files; import org.dllearner.utilities.JamonMonitorLogger; @@ -122,10 +126,16 @@ NORMAL_10s, SPARQL_100s, NORMAL_100s, - SPARQL_1000_CONCEPT_TESTS, - NORMAL_1000_CONCEPT_TESTS, - SPARQL_10000_CONCEPT_TESTS, - NORMAL_10000_CONCEPT_TESTS}; + SPARQL_1000_CTESTS, + NORMAL_1000_CTESTS, + SPARQL_10000_CTESTS, + NORMAL_10000_CTESTS, + NORMAL_10000_CTESTS_FASTINST, + + SPARQL_10000_CTESTS_SPECIAL_REC2_NOPROP, + SPARQL_10000_CTESTS_SPECIAL_REC2_NOCLOSEAFTERRECURSION, + SPARQL_10000_CTESTS_SPECIAL_REC1, + SPARQL_10000_CTESTS_SPECIAL_REC3}; //private static Class usedReasoner = FastInstanceChecker.class; @@ -149,8 +159,8 @@ if(onJensMachine){ conductExperiment(Experiments.NORMAL_10s); conductExperiment(Experiments.NORMAL_100s); - conductExperiment(Experiments.NORMAL_1000_CONCEPT_TESTS); - conductExperiment(Experiments.NORMAL_10000_CONCEPT_TESTS); + conductExperiment(Experiments.NORMAL_1000_CTESTS); + conductExperiment(Experiments.NORMAL_10000_CTESTS); @@ -159,34 +169,34 @@ /*finished experiments: * SPARQL_10s * SPARQL_1000_CONCEPT_TESTS - * running: * NORMAL_1000_CONCEPT_TESTS * SPARQL_10000_CONCEPT_TESTS * NORMAL_10000_CONCEPT_TESTS + * missing: + * NORMAL_10s + * SPARQL_100s + * NORMAL_100s * + * extra: * */ - for (Experiments exp : Experiments.values()) { - //if(exp.equals(Experiments.SPARQL_10000_CONCEPT_TESTS))continue; - //if(exp.equals(Experiments.NORMAL_10000_CONCEPT_TESTS))continue; - //if(exp.equals(Experiments.SPARQL_100s))continue; - //if(exp.toString().contains("SPARQL"))continue; - if(exp.equals(Experiments.NORMAL_10s))conductExperiment(exp); - if(exp.equals(Experiments.SPARQL_100s))conductExperiment(exp); - if(exp.equals(Experiments.NORMAL_100s))conductExperiment(exp); - //~ if(exp.equals(Experiments.NORMAL_1000_CONCEPT_TESTS))conductExperiment(exp); - //~ if(exp.equals(Experiments.SPARQL_10000_CONCEPT_TESTS))conductExperiment(exp); - //~ if(exp.equals(Experiments.NORMAL_10000_CONCEPT_TESTS))conductExperiment(exp); - - } + conductExperiment(Experiments.NORMAL_10s); + conductExperiment(Experiments.SPARQL_100s); + conductExperiment(Experiments.NORMAL_100s); + + //EXTRA + //conductExperiment(Experiments.NORMAL_10000_CTESTS_FASTINST); + //conductExperiment(Experiments.SPARQL_10000_CTESTS_SPECIAL_REC2_NOPROP); + //conductExperiment(Experiments.SPARQL_10000_CTESTS_SPECIAL_REC2_NOCLOSEAFTERRECURSION); + //conductExperiment(Experiments.SPARQL_10000_CTESTS_SPECIAL_REC1); + //conductExperiment(Experiments.SPARQL_10000_CTESTS_SPECIAL_REC3); + } // write JaMON report in HTML file - File jamonlog = new File(dir+"jamon.html"); - Files.createFile(jamonlog, MonitorFactory.getReport()); - Files.appendFile(jamonlog, "<xmp>\n"+JamonMonitorLogger.getStringForAllSortedByLabel()); + //total.printAndSet("Finished"); logger.warn(total.getAndSet("Finished")); if(flawInExperiment){ @@ -198,9 +208,15 @@ } + public static void writeJamonLog(String filename){ + File jamonlog = new File(filename); + Files.createFile(jamonlog, MonitorFactory.getReport()); + Files.appendFile(jamonlog, "<xmp>\n"+JamonMonitorLogger.getStringForAllSortedByLabel()); + } + public static void conductExperiment(Experiments exp){ - try{ + //prepare everything List<String> confs = getFiles(); ComponentManager cm =ComponentManager.getInstance(); @@ -208,6 +224,9 @@ int count = 0; for (String filename : confs) { SimpleClock oneExperiment = new SimpleClock(); + try{ + //if(count!=64) continue; + if (count == nrOfFilesInExperiment){break;} logger.warn("****"+exp+" "+(count+1) +" from file "+filename); @@ -274,17 +293,24 @@ nrOfExtractedAxioms.addNumber(0.0); } - cm.freeAllComponents(); - fillTable(exp, (count+1)); + }catch (Exception e) { + e.printStackTrace(); + flawInExperiment = true; + logger.warn(t.getLatexString()); + logger.warn(e); + + }finally{ + cm.freeAllComponents(); + + fillTable(exp, (count+1)); + + logger.warn(exp+" "+(count+1)+ " " +oneExperiment.getAndSet("")+"****" ); + count++; + } - logger.warn(exp+" "+(count+1)+ " " +oneExperiment.getAndSet("")+"****" ); - count++; }//end for - }catch (Exception e) { - e.printStackTrace(); - flawInExperiment = true; - } + writeJamonLog(dir+"jamon"+exp+".html"); reinitStat(); }//endconduct @@ -296,6 +322,7 @@ try{fileContent = Files.readFile(new File(exampleDir+file)); }catch (Exception e) { e.printStackTrace(); + logger.warn(e); } ExampleContainer ec = new ExampleContainer( SetManipulation.stringToInd(getIndividuals(fileContent, true)), @@ -316,9 +343,13 @@ public static ExampleBasedROLComponent experimentalSetup(Experiments exp,SortedSet<Individual> posExamples, SortedSet<Individual> negExamples ){ ExampleBasedROLComponent la = null; if(exp.toString().contains("SPARQL")) - la = prepareSparqlExperiment(posExamples, negExamples); + la = prepareSparqlExperiment(exp, posExamples, negExamples); else if(exp.toString().contains("NORMAL")){ - la = prepareNormalExperiment(posExamples, negExamples); + if(exp.equals(Experiments.NORMAL_10000_CTESTS_FASTINST)){ + la = prepareNormalExperiment(true, posExamples, negExamples); + }else{ + la = prepareNormalExperiment(false, posExamples, negExamples); + } }else { logger.error("undefined EXPERIMENT" + exp); System.exit(0); @@ -334,10 +365,11 @@ c.setMaxExecutionTimeInSeconds(100); c.setMinExecutionTimeInSeconds(100); - }else if(exp.toString().contains("1000_CONCEPT_TESTS")){ + }else if(exp.toString().contains("1000_CTESTS")){ c.setMaxClassDescriptionTests(1000); - }else if(exp.toString().contains("10000_CONCEPT_TESTS")){ + }else if(exp.toString().contains("10000_CTESTS")){ c.setMaxClassDescriptionTests(10000); + } //la.getConfigurator(); //appendtoFile @@ -346,7 +378,7 @@ } - public static ExampleBasedROLComponent prepareSparqlExperiment(SortedSet<Individual> posExamples, SortedSet<Individual> negExamples){ + public static ExampleBasedROLComponent prepareSparqlExperiment(Experiments exp, SortedSet<Individual> posExamples, SortedSet<Individual> negExamples){ ExampleBasedROLComponent la = null; @@ -360,14 +392,26 @@ "http://localhost:2020/bible").toURL(), SetManipulation .indToString(instances)); - ks.getConfigurator().setCloseAfterRecursion(true); - ks.getConfigurator().setRecursionDepth(2); - ks.getConfigurator().setPredefinedEndpoint("LOCALJOSEKIBIBLE"); - ks.getConfigurator().setUseLits(true); - ks.getConfigurator().setGetAllSuperClasses(true); - ks.getConfigurator().setGetPropertyInformation(true); - ks.getConfigurator().setVerbosity("warning"); + SparqlKnowledgeSourceConfigurator c = ks.getConfigurator(); + c.setCloseAfterRecursion(true); + c.setRecursionDepth(2); + c.setPredefinedEndpoint("LOCALJOSEKIBIBLE"); + c.setUseLits(true); + c.setGetAllSuperClasses(true); + c.setGetPropertyInformation(true); + c.setVerbosity("warning"); + + if(exp.equals(Experiments.SPARQL_10000_CTESTS_SPECIAL_REC2_NOPROP)){ + c.setGetPropertyInformation(false); + }else if(exp.equals(Experiments.SPARQL_10000_CTESTS_SPECIAL_REC2_NOCLOSEAFTERRECURSION)){ + c.setCloseAfterRecursion(false); + }else if(exp.equals(Experiments.SPARQL_10000_CTESTS_SPECIAL_REC1)){ + c.setRecursionDepth(1); + }else if(exp.equals(Experiments.SPARQL_10000_CTESTS_SPECIAL_REC3)){ + c.setRecursionDepth(3); + } + Set<KnowledgeSource> tmp = new HashSet<KnowledgeSource>(); tmp.add(ks); // reasoner @@ -384,17 +428,19 @@ // learning algorithm la = ComponentFactory.getExampleBasedROLComponent(lp, rs); la.getConfigurator().setGuaranteeXgoodDescriptions(1); - Config c = new Config(ComponentManager.getInstance(), ks, f, rs, lp, la); - new ConfigSave(c).saveFile(new File(tmpFilename)); + Config conf = new Config(ComponentManager.getInstance(), ks, f, rs, lp, la); + new ConfigSave(conf).saveFile(new File(tmpFilename)); }catch (Exception e) { e.printStackTrace(); + logger.warn(e); + logger.warn("error in sparqlprepare"); flawInExperiment = true; } return la; } - public static ExampleBasedROLComponent prepareNormalExperiment(SortedSet<Individual> posExamples, SortedSet<Individual> negExamples){ + public static ExampleBasedROLComponent prepareNormalExperiment(boolean fic, SortedSet<Individual> posExamples, SortedSet<Individual> negExamples){ ExampleBasedROLComponent la = null; try{ SortedSet<Individual> instances = new TreeSet<Individual>(); @@ -412,11 +458,16 @@ Set<KnowledgeSource> tmp = new HashSet<KnowledgeSource>(); tmp.add(ks); + + ReasonerComponent f = null; + // reasoner - OWLAPIReasoner f = ComponentFactory - .getOWLAPIReasoner(tmp); - ReasoningService rs = ComponentManager.getInstance() - .reasoningService(f); + if(fic){ + f = ComponentFactory.getFastInstanceChecker(tmp); + }else{ + f = ComponentFactory.getOWLAPIReasoner(tmp); + } + ReasoningService rs = ComponentManager.getInstance().reasoningService(f); // learning problem PosNegDefinitionLP lp = ComponentFactory.getPosNegDefinitionLP(rs, @@ -431,6 +482,8 @@ }catch (Exception e) { e.printStackTrace(); + logger.warn(e); + logger.warn("error in normalprepare"); flawInExperiment = true; } return la; @@ -439,27 +492,33 @@ public static void initAllComponents(){ ComponentManager cm = ComponentManager.getInstance(); - for(Component c : cm.getLiveComponents()){ + List<Component> l = new ArrayList<Component>(); + l.addAll(cm.getLiveComponents()); + + for(Component c : l){ + try{ SimpleClock time = new SimpleClock(); - c.init(); - if (c instanceof SparqlKnowledgeSource) { + c.init(); + if (c instanceof SparqlKnowledgeSource) { ksinitializationTime.addNumber((double) time.getTime()/1000); - }else if (c instanceof OWLFile) { ksinitializationTime.addNumber((double) time.getTime()/1000); - + }else if (c instanceof FastInstanceChecker) { + reasonerInitializationTime.addNumber((double) time.getTime()/1000); }else if (c instanceof OWLAPIReasoner) { reasonerInitializationTime.addNumber((double) time.getTime()/1000); - } }catch (Exception e) { e.printStackTrace(); + logger.warn(e); + logger.warn("error in initAllComponents"); flawInExperiment = true; } - } + }// end for + } public static void prepareTable(){ Property changes on: trunk/src/dl-learner/org/dllearner/test ___________________________________________________________________ Modified: svn:ignore - JamonTest.java JenaAmpBug.java TestHeapSize.java + JamonTest.java JenaAmpBug.java TestHeapSize.java JavaTest.java Modified: trunk/src/dl-learner/org/dllearner/utilities/StringFormatter.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/StringFormatter.java 2008-09-27 07:48:14 UTC (rev 1283) +++ trunk/src/dl-learner/org/dllearner/utilities/StringFormatter.java 2008-09-27 14:10:57 UTC (rev 1284) @@ -24,6 +24,30 @@ } + + /** + * used for regex difficult chars like _ or % + * @param s + * @param search + * @param replacement + * @return + */ + public static String myReplaceAll(String s, char search, String replacement ){ + String ret =""; + char[] arr = s.toCharArray(); + for (int i = 0; i < arr.length; i++) { + if(arr[i]==search){ + ret+=replacement; + }else{ + ret+=arr[i]; + } + } + return ret; + + } + + + public static String doubleToPercent(double d, int decimals, boolean addPercentSign){ String format = (decimals==0)?"00":"."; Modified: trunk/src/dl-learner/org/dllearner/utilities/statistics/Table.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/statistics/Table.java 2008-09-27 07:48:14 UTC (rev 1283) +++ trunk/src/dl-learner/org/dllearner/utilities/statistics/Table.java 2008-09-27 14:10:57 UTC (rev 1284) @@ -53,25 +53,35 @@ } public static void main(String[] args) { - Table t = new Table("myTable"); - String tableFile = "results/table/myTable"; - TableColumn c1 = new TableColumn("col1", new String[]{"a","b"}); - TableColumn c2 = new TableColumn("col2", new String[]{"c","d"}); - t.addColumn(c1); - System.out.println(t.getLatexString()); + boolean production = true; + if(production){ + String tablename = "myTable"; + String tableFile = "sembib100/sofar/table"; + + Table t = createTableFromSerializedColums(tablename, tableFile); + Files.createFile(new File(tableFile+".tex"), t.getLatexString()); + + }else{ + + Table t = new Table("myTable"); + String tableFile = "results/table/myTable"; + TableColumn c1 = new TableColumn("col1", new String[]{"a","b"}); + TableColumn c2 = new TableColumn("col2", new String[]{"c","d"}); + t.addColumn(c1); + System.out.println(t.getLatexString()); + + serializeColumns(t, "results/table",tableFile ); + + t = createTableFromSerializedColums("myTable", tableFile); + System.out.println(t.getLatexString()); + + t.addColumn(c2); + serializeColumns(t, "results/table",tableFile ); + t = createTableFromSerializedColums("myTable", tableFile); + System.out.println(t.getLatexString()); + } - serializeColumns(t, "results/table",tableFile ); - t = createTableFromSerializedColums("myTable", tableFile); - System.out.println(t.getLatexString()); - - t.addColumn(c2); - serializeColumns(t, "results/table",tableFile ); - t = createTableFromSerializedColums("myTable", tableFile); - System.out.println(t.getLatexString()); - - - } public String getLatexString(){ @@ -81,23 +91,31 @@ } String headers = latexRow(getColumnHeaders()); - + headers = StringFormatter.myReplaceAll(headers, '_', "\\_"); + headers = StringFormatter.myReplaceAll(headers, '%', "\\%"); + String table=""; - - table += "\\begin{table*}\n"; + table += "\\documentclass{article}\n"; + table += "\\usepackage{rotating}\n"; + table += "\\begin{document}\n"; + table += "\\begin{sidewaystable*}\n"; table += "\t\\centering\n"; table += "\t\t\\begin{tabular}{"+tabular+"}\n"; table += "\\hline\n"; - table += headers; + table += headers.replaceAll("\\_", "\\_"); table += "\\hline\n"; // add here for (int i = 0; i < getNumberOfRows(); i++) { - table +=getRowInLatex(i); + String tmp = getRowInLatex(i); + tmp = StringFormatter.myReplaceAll(tmp, '_', "\\_"); + tmp = StringFormatter.myReplaceAll(tmp, '%', "\\%"); + table += tmp; } table += "\\end{tabular}\n"; table += "\t\\caption{"+caption+"}\n"; table += "\t\\label{"+label+"}\n"; - table += "\\end{table*}\n\n"; + table += "\\end{sidewaystable*}\n\n"; + table += "\\end{document} \n\n"; //List<String> myList = new ArrayList<String>({""}); @@ -166,6 +184,7 @@ String[] columnFiles = Files.readFileAsArray(new File(tableFile)); for (String filename : columnFiles) { + if(filename.replaceAll(" ", "").length()==0)continue; TableColumn col = TableColumn.deSerialize(new File(filename)); //TableColumn col = (TableColumn) Files.readObjectfromFile(new File(filename)); ret.addColumn(col); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-09-28 11:44:45
|
Revision: 1285 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1285&view=rev Author: kurzum Date: 2008-09-28 11:44:40 +0000 (Sun, 28 Sep 2008) Log Message: ----------- latest changes Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/scripts/DumbLPFinder.java trunk/src/dl-learner/org/dllearner/scripts/SemanticBibleComparison.java trunk/src/dl-learner/org/dllearner/utilities/statistics/Table.java Modified: trunk/src/dl-learner/org/dllearner/scripts/DumbLPFinder.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/DumbLPFinder.java 2008-09-27 14:10:57 UTC (rev 1284) +++ trunk/src/dl-learner/org/dllearner/scripts/DumbLPFinder.java 2008-09-28 11:44:40 UTC (rev 1285) @@ -89,7 +89,7 @@ SortedSet<Individual> allIndividuals = new TreeSet<Individual>(); allIndividuals.addAll(reasoningService.getIndividuals()); - reasoningService = null; + //reasoningService = null; ComponentManager.getInstance().freeAllComponents(); int count = 0; @@ -123,6 +123,9 @@ d = learnSPARQL(positiveEx, negativeEx); acc.addNumber(d.getAccuracy()); + logger.warn("onFragment"+d.getAccuracy()); + + //logger.warn(); writeFiles(filename, d, positiveEx, negativeEx); Modified: trunk/src/dl-learner/org/dllearner/scripts/SemanticBibleComparison.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SemanticBibleComparison.java 2008-09-27 14:10:57 UTC (rev 1284) +++ trunk/src/dl-learner/org/dllearner/scripts/SemanticBibleComparison.java 2008-09-28 11:44:40 UTC (rev 1285) @@ -180,16 +180,18 @@ * extra: * */ - conductExperiment(Experiments.NORMAL_10s); - conductExperiment(Experiments.SPARQL_100s); - conductExperiment(Experiments.NORMAL_100s); + //conductExperiment(Experiments.NORMAL_10s); + //conductExperiment(Experiments.SPARQL_100s); + //conductExperiment(Experiments.NORMAL_100s); + //conductExperiment(Experiments.SPARQL_1000_CTESTS); + //EXTRA - //conductExperiment(Experiments.NORMAL_10000_CTESTS_FASTINST); - //conductExperiment(Experiments.SPARQL_10000_CTESTS_SPECIAL_REC2_NOPROP); - //conductExperiment(Experiments.SPARQL_10000_CTESTS_SPECIAL_REC2_NOCLOSEAFTERRECURSION); - //conductExperiment(Experiments.SPARQL_10000_CTESTS_SPECIAL_REC1); - //conductExperiment(Experiments.SPARQL_10000_CTESTS_SPECIAL_REC3); + conductExperiment(Experiments.NORMAL_10000_CTESTS_FASTINST); + conductExperiment(Experiments.SPARQL_10000_CTESTS_SPECIAL_REC2_NOPROP); + conductExperiment(Experiments.SPARQL_10000_CTESTS_SPECIAL_REC2_NOCLOSEAFTERRECURSION); + conductExperiment(Experiments.SPARQL_10000_CTESTS_SPECIAL_REC1); + conductExperiment(Experiments.SPARQL_10000_CTESTS_SPECIAL_REC3); } @@ -225,7 +227,7 @@ for (String filename : confs) { SimpleClock oneExperiment = new SimpleClock(); try{ - //if(count!=64) continue; + //if(count<90) continue; if (count == nrOfFilesInExperiment){break;} @@ -270,6 +272,7 @@ EvaluatedDescription onOnto = reEvaluateDescription( bestDescription.getDescription(), retrieved, posEx, negEx); + logger.warn(bestDescription.getAccuracy()); logger.warn(onOnto.getDescription().toKBSyntaxString()); logger.warn(onOnto.getAccuracy()); @@ -559,7 +562,7 @@ }; //9 t.removeColumn(exp.toString()); t.addColumn(new TableColumn(exp.toString(),columnString)); - Table.serializeColumns(t, tableDir, tableFile); + Table.serializeColumns(t, tableDir, tableFile+exp+count); Files.createFile(new File(tableLatex), t.getLatexString()); Modified: trunk/src/dl-learner/org/dllearner/utilities/statistics/Table.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/statistics/Table.java 2008-09-27 14:10:57 UTC (rev 1284) +++ trunk/src/dl-learner/org/dllearner/utilities/statistics/Table.java 2008-09-28 11:44:40 UTC (rev 1285) @@ -81,7 +81,7 @@ System.out.println(t.getLatexString()); } - + System.out.println("done"); } public String getLatexString(){ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-09-28 11:51:44
|
Revision: 1286 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1286&view=rev Author: kurzum Date: 2008-09-28 11:51:41 +0000 (Sun, 28 Sep 2008) Log Message: ----------- turned off default negation in experiment Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/core/configurators/ExampleBasedROLComponentConfigurator.java trunk/src/dl-learner/org/dllearner/scripts/SemanticBibleComparison.java Modified: trunk/src/dl-learner/org/dllearner/core/configurators/ExampleBasedROLComponentConfigurator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/configurators/ExampleBasedROLComponentConfigurator.java 2008-09-28 11:44:40 UTC (rev 1285) +++ trunk/src/dl-learner/org/dllearner/core/configurators/ExampleBasedROLComponentConfigurator.java 2008-09-28 11:51:41 UTC (rev 1286) @@ -214,6 +214,15 @@ return (Boolean) ComponentManager.getInstance().getConfigOptionValue(exampleBasedROLComponent, "useExistsConstructor") ; } /** +* useHasValueConstructor specifies whether the hasValue constructor is used in the learning algorithm. +* mandatory: false| reinit necessary: true +* default value: true +* @return boolean +**/ +public boolean getUseHasValueConstructor() { +return (Boolean) ComponentManager.getInstance().getConfigOptionValue(exampleBasedROLComponent, "useHasValueConstructor") ; +} +/** * useCardinalityRestrictions specifies whether CardinalityRestrictions is used in the learning algorithm. * mandatory: false| reinit necessary: true * default value: true @@ -494,6 +503,15 @@ reinitNecessary = true; } /** +* @param useHasValueConstructor specifies whether the hasValue constructor is used in the learning algorithm. +* mandatory: false| reinit necessary: true +* default value: true +**/ +public void setUseHasValueConstructor(boolean useHasValueConstructor) { +ComponentManager.getInstance().applyConfigEntry(exampleBasedROLComponent, "useHasValueConstructor", useHasValueConstructor); +reinitNecessary = true; +} +/** * @param useCardinalityRestrictions specifies whether CardinalityRestrictions is used in the learning algorithm. * mandatory: false| reinit necessary: true * default value: true Modified: trunk/src/dl-learner/org/dllearner/scripts/SemanticBibleComparison.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SemanticBibleComparison.java 2008-09-28 11:44:40 UTC (rev 1285) +++ trunk/src/dl-learner/org/dllearner/scripts/SemanticBibleComparison.java 2008-09-28 11:51:41 UTC (rev 1286) @@ -467,6 +467,7 @@ // reasoner if(fic){ f = ComponentFactory.getFastInstanceChecker(tmp); + ((FastInstanceChecker)f).getConfigurator().setDefaultNegation(false); }else{ f = ComponentFactory.getOWLAPIReasoner(tmp); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2008-09-29 15:30:01
|
Revision: 1301 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1301&view=rev Author: jenslehmann Date: 2008-09-29 15:29:52 +0000 (Mon, 29 Sep 2008) Log Message: ----------- fixed hasValue bug (problem in total order of class descriptions) Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java trunk/src/dl-learner/org/dllearner/core/config/CommonConfigOptions.java trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIDescriptionConvertVisitor.java trunk/src/dl-learner/org/dllearner/utilities/owl/ConceptComparator.java Modified: trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-09-29 14:34:45 UTC (rev 1300) +++ trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-09-29 15:29:52 UTC (rev 1301) @@ -580,6 +580,9 @@ private void extendNodeProper(ExampleBasedNode node, Description concept, int maxLength, int recDepth) { +// System.out.println("node: " + node); +// System.out.println("concept: " + concept); + // do not execute methods if algorithm has been stopped (this means that // the algorithm // will terminate without further reasoning queries) @@ -646,9 +649,9 @@ propernessTestsAvoidedByShortConceptConstruction++; propernessDetected = true; - // System.out.println("refinement " + refinement + " can - // be shortened"); - // System.exit(0); +// System.out.println("refinement " + refinement + +// " can be shortened"); +// System.exit(0); } } @@ -901,8 +904,13 @@ boolean redundant = properRefinements.contains(refinement); redundancyCheckTimeNs += System.nanoTime() - redundancyCheckTimeNsStart; - if (!redundant) + if (!redundant) { +// System.out.println("node " + node); +// System.out.println("refinement " + refinement); + extendNodeProper(node, refinement, maxLength, recDepth + 1); + } + // for(int i=0; i<=recDepth; i++) // System.out.print(" "); // System.out.println("finished: " + refinement + " [maxLength " + Modified: trunk/src/dl-learner/org/dllearner/core/config/CommonConfigOptions.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/config/CommonConfigOptions.java 2008-09-29 14:34:45 UTC (rev 1300) +++ trunk/src/dl-learner/org/dllearner/core/config/CommonConfigOptions.java 2008-09-29 15:29:52 UTC (rev 1301) @@ -40,7 +40,7 @@ //public static boolean improveSubsumptionHierarchyDefault = true; public static boolean useAllConstructorDefault = true; public static boolean useExistsConstructorDefault = true; - public static boolean useHasValueConstructorDefault = true; + public static boolean useHasValueConstructorDefault = false; public static boolean useCardinalityRestrictionsDefault = true; public static boolean useNegationDefault = true; public static boolean useBooleanDatatypesDefault = true; Modified: trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIDescriptionConvertVisitor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIDescriptionConvertVisitor.java 2008-09-29 14:34:45 UTC (rev 1300) +++ trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIDescriptionConvertVisitor.java 2008-09-29 15:29:52 UTC (rev 1301) @@ -36,7 +36,6 @@ import org.dllearner.core.owl.Description; import org.dllearner.core.owl.DescriptionVisitor; import org.dllearner.core.owl.DoubleMinValue; -import org.dllearner.core.owl.Individual; import org.dllearner.core.owl.Intersection; import org.dllearner.core.owl.NamedClass; import org.dllearner.core.owl.Negation; Modified: trunk/src/dl-learner/org/dllearner/utilities/owl/ConceptComparator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/owl/ConceptComparator.java 2008-09-29 14:34:45 UTC (rev 1300) +++ trunk/src/dl-learner/org/dllearner/utilities/owl/ConceptComparator.java 2008-09-29 15:29:52 UTC (rev 1301) @@ -1,3 +1,22 @@ +/** + * Copyright (C) 2007-2008, Jens Lehmann + * + * This file is part of DL-Learner. + * + * DL-Learner is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * DL-Learner is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ package org.dllearner.utilities.owl; import java.util.Comparator; @@ -25,12 +44,25 @@ import org.dllearner.core.owl.ObjectQuantorRestriction; import org.dllearner.core.owl.Thing; -// Comparator ist momentan inkonsistent mit equals für Konzepte, d.h. es kann sein, dass -// zwei Konzepte nicht als gleich deklariert werden (momentan gelten Konzepte immer als -// unterschiedlich, wenn sie nicht das gleiche Objekt im Speicher sind), aber in der -// compare-Funktion trotzdem 0 zurückgegeben wird +/** + * Implements a total order on class descriptions. Note that the + * comparator is, of course, inconsistent with equals on class + * descriptions, because currently two class descriptions are considered + * equal if they refer to the same memory address (Java standard), while + * this comparator takes the syntax of class descriptions into account. + * + * TODO Improve implementation (better not to rely on number of children, + * make better use of the class hierarchy to avoid too many instanceof + * operations e.g. boolean description [union, intersection, negation], + * restrictions [card., quantor], classes [top, named, bottom] could + * be the first decision criterion). + * TODO Add a description how exactly the order is defined. + * + * @author Jens Lehmann + * + */ public class ConceptComparator implements Comparator<Description> { - + RoleComparator rc = new RoleComparator(); // private List<AtomicConcept> atomicConcepts = new LinkedList<AtomicConcept>(); @@ -62,6 +94,23 @@ // Ordnung für atomare Konzepte: Stringvergleich // Ordnung für atomare Rollen: Stringvergleich public int compare(Description concept1, Description concept2) { + + // test whether Intersection/Union really have more than + // one child (wastes some performance, but violating those + // restrictions can lead to difficult-to-find bugs); + // we test on concept2, which is the problematic case; + // comment out if not needed; + // note that the code also makes some further assumptions + // about how many children certain constructs can have, but + // all of those are obvious and unlikely to be cause by + // programming errors + // TODO: does not work at the moment, because some code + // relies on temporarily have these structurs with only + // one child +// if((concept2 instanceof Intersection || concept2 instanceof Union) && concept2.getChildren().size() < 2) { +// throw new Error("Intersection/Union must have at least two children " + concept2); +// } + // classes higher up are in the source code have lower value // (they appear first in class descriptions, because sorted sets // usually use an ascending order) @@ -140,8 +189,23 @@ return cmp; } else return -1; + } else if(concept1 instanceof ObjectValueRestriction) { + if(concept2 instanceof Nothing || concept2 instanceof NamedClass || concept2 instanceof BooleanValueRestriction || concept2 instanceof DatatypeSomeRestriction) { + return 1; + } else if(concept2 instanceof ObjectValueRestriction) { + int roleCompare = rc.compare(((ObjectValueRestriction)concept1).getRestrictedPropertyExpression(), ((ObjectValueRestriction)concept2).getRestrictedPropertyExpression()); + + if(roleCompare == 0) { + Individual value1 = ((ObjectValueRestriction)concept1).getIndividual(); + Individual value2 = ((ObjectValueRestriction)concept2).getIndividual(); + return value1.compareTo(value2); + } else { + return roleCompare; + } + } else + return -1; } else if(concept1 instanceof Thing) { - if(concept2 instanceof Nothing || concept2 instanceof NamedClass || concept2 instanceof BooleanValueRestriction || concept2 instanceof DatatypeSomeRestriction) + if(concept2 instanceof Nothing || concept2 instanceof NamedClass || concept2 instanceof BooleanValueRestriction || concept2 instanceof DatatypeSomeRestriction || concept2 instanceof ObjectValueRestriction) return 1; else if(concept2 instanceof Thing) return 0; @@ -177,23 +241,8 @@ return roleCompare; } else return -1; - } else if(concept1 instanceof ObjectValueRestriction) { - if(concept2.getChildren().size()<1 || concept2 instanceof Negation || concept2 instanceof ObjectSomeRestriction || concept2 instanceof ObjectAllRestriction) - return 1; - else if(concept2 instanceof ObjectValueRestriction) { - int roleCompare = rc.compare(((ObjectValueRestriction)concept1).getRestrictedPropertyExpression(), ((ObjectQuantorRestriction)concept2).getRestrictedPropertyExpression()); - - if(roleCompare == 0) { - Individual value1 = ((ObjectValueRestriction)concept1).getIndividual(); - Individual value2 = ((ObjectValueRestriction)concept2).getIndividual(); - return value1.compareTo(value2); - } else { - return roleCompare; - } - } else - return -1; } else if(concept1 instanceof ObjectMinCardinalityRestriction) { - if(concept2.getChildren().size()<1 || concept2 instanceof Negation || concept2 instanceof ObjectQuantorRestriction || concept2 instanceof ObjectValueRestriction) + if(concept2.getChildren().size()<1 || concept2 instanceof Negation || concept2 instanceof ObjectQuantorRestriction) return 1; // first criterion: object property // second criterion: number @@ -213,7 +262,7 @@ } else return -1; } else if(concept1 instanceof ObjectMaxCardinalityRestriction) { - if(concept2.getChildren().size()<1 || concept2 instanceof Negation || concept2 instanceof ObjectQuantorRestriction || concept2 instanceof ObjectValueRestriction || concept2 instanceof ObjectMinCardinalityRestriction) + if(concept2.getChildren().size()<1 || concept2 instanceof Negation || concept2 instanceof ObjectQuantorRestriction || concept2 instanceof ObjectMinCardinalityRestriction) return 1; // first criterion: object property // second criterion: number This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-09-29 16:21:44
|
Revision: 1302 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1302&view=rev Author: kurzum Date: 2008-09-29 16:21:33 +0000 (Mon, 29 Sep 2008) Log Message: ----------- fixed bug Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/extraction/BlankNode.java trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java trunk/src/dl-learner/org/dllearner/scripts/SemanticBibleComparison.java trunk/src/dl-learner/org/dllearner/utilities/statistics/Table.java Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/BlankNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/BlankNode.java 2008-09-29 15:29:52 UTC (rev 1301) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/BlankNode.java 2008-09-29 16:21:33 UTC (rev 1302) @@ -112,7 +112,8 @@ @Override public void toOWLOntology( OWLAPIOntologyCollector owlAPIOntologyCollector){ - //FIXME + logger.error("toOWLOntology called in blanknodes "); + //FIXME robably not needed } public String getInBoundEdge(){ Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java 2008-09-29 15:29:52 UTC (rev 1301) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java 2008-09-29 16:21:33 UTC (rev 1302) @@ -30,6 +30,7 @@ import org.dllearner.kb.manipulator.Manipulator; import org.dllearner.utilities.datastructures.RDFNodeTuple; import org.dllearner.utilities.owl.OWLVocabulary; +import org.semanticweb.owl.model.OWLAxiom; import org.semanticweb.owl.model.OWLClass; import org.semanticweb.owl.model.OWLDataFactory; import org.semanticweb.owl.model.OWLDataProperty; @@ -151,15 +152,24 @@ OWLIndividual me = factory.getOWLIndividual(getURI()); + for (ClassNode one : classes) { + //create Axiom OWLClass c = factory.getOWLClass(one.getURI()); - owlAPIOntologyCollector.addAxiom(factory.getOWLClassAssertionAxiom(me, c)); + OWLAxiom ax = factory.getOWLClassAssertionAxiom(me, c); + //collect + owlAPIOntologyCollector.addAxiom(ax); + //handover one.toOWLOntology(owlAPIOntologyCollector); } for (ObjectPropertyNode one : objectProperties) { + //create axiom OWLIndividual o = factory.getOWLIndividual(one.getBPart().getURI()); OWLObjectProperty p = factory.getOWLObjectProperty(one.getURI()); - factory.getOWLObjectPropertyAssertionAxiom(me, p, o); + OWLAxiom ax = factory.getOWLObjectPropertyAssertionAxiom(me, p, o); + //collect + owlAPIOntologyCollector.addAxiom(ax); + //handover one.toOWLOntology(owlAPIOntologyCollector); one.getBPart().toOWLOntology(owlAPIOntologyCollector); } Modified: trunk/src/dl-learner/org/dllearner/scripts/SemanticBibleComparison.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SemanticBibleComparison.java 2008-09-29 15:29:52 UTC (rev 1301) +++ trunk/src/dl-learner/org/dllearner/scripts/SemanticBibleComparison.java 2008-09-29 16:21:33 UTC (rev 1302) @@ -94,7 +94,7 @@ private static String tmpFilename = dir + "tmp.conf"; //static File log = new File(dir+"results+prop.txt"); - private static String tableFile = tableDir+"sembib.table"; + //private static String tableFile = tableDir+"sembib.table"; private static String tableLatex = tableDir+"sembibLatex.table"; private static Stat accFragment = new Stat(); @@ -187,10 +187,10 @@ //conductExperiment(Experiments.SPARQL_1000_CTESTS); //EXTRA - conductExperiment(Experiments.SPARQL_10000_CTESTS_SPECIAL_REC2_NOPROP); - conductExperiment(Experiments.SPARQL_10000_CTESTS_SPECIAL_REC2_NOCLOSEAFTERRECURSION); - conductExperiment(Experiments.SPARQL_10000_CTESTS_SPECIAL_REC1); - conductExperiment(Experiments.SPARQL_10000_CTESTS_SPECIAL_REC3); + //conductExperiment(Experiments.SPARQL_10000_CTESTS_SPECIAL_REC2_NOPROP); + //conductExperiment(Experiments.SPARQL_10000_CTESTS_SPECIAL_REC2_NOCLOSEAFTERRECURSION); + //conductExperiment(Experiments.SPARQL_10000_CTESTS_SPECIAL_REC1); + //conductExperiment(Experiments.SPARQL_10000_CTESTS_SPECIAL_REC3); conductExperiment(Experiments.NORMAL_10000_CTESTS_FASTINST); } @@ -547,8 +547,9 @@ }; //9 TableColumn labels = new TableColumn("Semantic Bible",labString); t.addColumn(labels); - Table.serializeColumns(t, tableDir, tableFile); - Files.createFile(new File(tableLatex), t.getLatexString()); + Files.mkdir(tableDir); + //Table.serializeColumns(t, tableDir, tableFile); + //Files.createFile(new File(tableLatex), t.getLatexString()); } @@ -568,8 +569,9 @@ }; //9 t.removeColumn(exp.toString()); t.addColumn(new TableColumn(exp.toString(),columnString)); - Table.serializeColumns(t, tableDir, tableFile+exp+count); - Files.createFile(new File(tableLatex), t.getLatexString()); + String expId = exp.toString()+count; + Table.serializeColumns(t, tableDir+expId, tableDir+expId+File.separator+"table"); + Files.createFile(new File(tableDir+expId+File.separator+"table.tex"), t.getLatexString()); } Modified: trunk/src/dl-learner/org/dllearner/utilities/statistics/Table.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/statistics/Table.java 2008-09-29 15:29:52 UTC (rev 1301) +++ trunk/src/dl-learner/org/dllearner/utilities/statistics/Table.java 2008-09-29 16:21:33 UTC (rev 1302) @@ -56,8 +56,8 @@ boolean production = true; if(production){ String tablename = "myTable"; - String tableFile = "sembib100/sofar/table"; - + //String tableFile = "sembib100/sofar/table"; + String tableFile = "sembib100/2ndExp/table2nd.table"; Table t = createTableFromSerializedColums(tablename, tableFile); Files.createFile(new File(tableFile+".tex"), t.getLatexString()); @@ -201,12 +201,12 @@ String content = ""; dir = StringFormatter.checkIfDirEndsOnSlashAndRemove(dir); Files.mkdir(dir); - String div = (System.currentTimeMillis() % 10000) + ""; + try{ int i=0; for(TableColumn c:t.getColumns()){ String header = URLEncoder.encode(c.getHeader(),"UTF-8"); - String columnFileName = dir+File.separator+t.getTableName()+(i++)+header+div+column; + String columnFileName = dir+File.separator+t.getTableName()+(i++)+header+column; c.serialize(new File(columnFileName)); //Files.writeObjectToFile(c, new File(filename)); content += columnFileName+System.getProperty("line.separator"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-09-29 18:43:34
|
Revision: 1308 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1308&view=rev Author: kurzum Date: 2008-09-29 18:43:02 +0000 (Mon, 29 Sep 2008) Log Message: ----------- more fixes domain range of datatypeproperties Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/aquisitors/RDFBlankNode.java trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupleAquisitor.java trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java trunk/src/dl-learner/org/dllearner/kb/extraction/DatatypePropertyNode.java trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java trunk/src/dl-learner/org/dllearner/kb/extraction/LiteralNode.java trunk/src/dl-learner/org/dllearner/kb/extraction/ObjectPropertyNode.java trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java trunk/src/dl-learner/org/dllearner/scripts/SemanticBibleComparison.java trunk/src/dl-learner/org/dllearner/utilities/owl/OWLVocabulary.java Modified: trunk/src/dl-learner/org/dllearner/kb/aquisitors/RDFBlankNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/aquisitors/RDFBlankNode.java 2008-09-29 17:31:12 UTC (rev 1307) +++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/RDFBlankNode.java 2008-09-29 18:43:02 UTC (rev 1308) @@ -46,7 +46,8 @@ public int getBNodeId(){ return bNodeId; } - //RBC + + @Override public String toString(){ //RBC Modified: trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupleAquisitor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupleAquisitor.java 2008-09-29 17:31:12 UTC (rev 1307) +++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupleAquisitor.java 2008-09-29 18:43:02 UTC (rev 1308) @@ -84,7 +84,8 @@ @Override public SortedSet<RDFNodeTuple> retrieveTuplesForClassesOnly(String uri){ SortedSet<RDFNodeTuple> ret = retrieveTupel(uri); - disambiguateBlankNodes(uri, ret); + //the next line is not necessary + //disambiguateBlankNodes(uri, ret); return ret; } Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java 2008-09-29 17:31:12 UTC (rev 1307) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java 2008-09-29 18:43:02 UTC (rev 1308) @@ -74,6 +74,7 @@ } private Node processTuple( RDFNodeTuple tuple, boolean dissolveBlankNodes) { + try { String property = tuple.a.toString(); if(tuple.b.isLiteral()) { @@ -101,7 +102,7 @@ // further expansion stops here ClassNode tmp = new ClassNode(tuple.b.toString()); classProperties.add(new ObjectPropertyNode(tuple.a.toString(), this, tmp)); - // return tmp; is missing on purpose + return tmp; //is missing on purpose } } catch (Exception e) { logger.warn("Problem with: " + this + " in tuple " + tuple); Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/DatatypePropertyNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/DatatypePropertyNode.java 2008-09-29 17:31:12 UTC (rev 1307) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/DatatypePropertyNode.java 2008-09-29 18:43:02 UTC (rev 1308) @@ -19,14 +19,23 @@ */ package org.dllearner.kb.extraction; +import java.net.URI; import java.util.ArrayList; import java.util.List; import java.util.SortedSet; import java.util.TreeSet; +import org.dllearner.kb.aquisitors.RDFBlankNode; import org.dllearner.kb.aquisitors.TupleAquisitor; import org.dllearner.kb.manipulator.Manipulator; +import org.dllearner.utilities.datastructures.RDFNodeTuple; import org.dllearner.utilities.owl.OWLVocabulary; +import org.semanticweb.owl.model.OWLAxiom; +import org.semanticweb.owl.model.OWLClass; +import org.semanticweb.owl.model.OWLDataFactory; +import org.semanticweb.owl.model.OWLDataProperty; +import org.semanticweb.owl.model.OWLDataRange; +import org.semanticweb.owl.model.OWLDescription; /** * Property node, has connection to a and b part @@ -37,6 +46,11 @@ public class DatatypePropertyNode extends PropertyNode { + // specialtypes like owl:symmetricproperty + private SortedSet<String> specialTypes = new TreeSet<String>(); + private SortedSet<RDFNodeTuple> propertyInformation = new TreeSet<RDFNodeTuple>(); + private List<BlankNode> blankNodes = new ArrayList<BlankNode>(); + public DatatypePropertyNode(String uri, Node a, LiteralNode b) { super(uri, a, b); } @@ -51,7 +65,38 @@ // gets the types for properties recursively @Override public List<BlankNode> expandProperties(TupleAquisitor tupelAquisitor, Manipulator manipulator) { - return new ArrayList<BlankNode>(); + List<BlankNode> ret = new ArrayList<BlankNode>(); + //ret.addAll(b.expandProperties(tupelAquisitor, manipulator)); + SortedSet<RDFNodeTuple> newTypes = tupelAquisitor.getTupelForResource(uri); + + for (RDFNodeTuple tuple : newTypes) { + try { + if (tuple.a.toString().equals(OWLVocabulary.RDF_TYPE)) { + if(!tuple.b.toString().equals(OWLVocabulary.OWL_DATATYPPROPERTY)){ + specialTypes.add(tuple.b.toString()); + } + }else if(tuple.b.isAnon()){ + + if(tupelAquisitor.isDissolveBlankNodes()){ + RDFBlankNode n = (RDFBlankNode) tuple.b; + BlankNode tmp = new BlankNode( n, tuple.a.toString()); + //add it to the graph + blankNodes.add(tmp); + ret.add( tmp); + } + + }else{ + + propertyInformation.add(tuple); + + } + } catch (Exception e) { + logger.warn("resource "+uri+" with "+ tuple); + e.printStackTrace(); + } + + } + return ret; } @Override @@ -75,6 +120,42 @@ @Override public void toOWLOntology( OWLAPIOntologyCollector owlAPIOntologyCollector){ + + OWLDataFactory factory = owlAPIOntologyCollector.getFactory(); + OWLDataProperty me =factory.getOWLDataProperty(getURI()); + + for (RDFNodeTuple one : propertyInformation) { + + + if(one.aPartContains(OWLVocabulary.RDFS_range)){ + //System.out.println(me + one.b.toString()); + OWLDataRange o = factory.getOWLDataType(URI.create(one.b.toString())); + OWLAxiom ax = factory.getOWLDataPropertyRangeAxiom(me, o); + owlAPIOntologyCollector.addAxiom(ax); + //XXX implement + //OWLClass c = factory.getOWLClass(URI.create(one.b.toString())); + //owlAPIOntologyCollector.addAxiom(factory.getOWLDataPropertyRangeAxiom(propery, owlDataRange)(me, c)); + }else if(one.aPartContains(OWLVocabulary.RDFS_domain)){ + OWLClass c = factory.getOWLClass(URI.create(one.b.toString())); + owlAPIOntologyCollector.addAxiom(factory.getOWLDataPropertyDomainAxiom(me, c)); + } + } + + + for (BlankNode bn : blankNodes) { + OWLDescription target = bn.getAnonymousClass(owlAPIOntologyCollector); + if(bn.getInBoundEdge().equals(OWLVocabulary.RDFS_range)){ + + //XXX implement + //owlAPIOntologyCollector.addAxiom(factory.getOWLObjectPropertyRangeAxiom(me, target)); + }else if(bn.getInBoundEdge().equals(OWLVocabulary.RDFS_domain)){ + owlAPIOntologyCollector.addAxiom(factory.getOWLDataPropertyDomainAxiom(me, target)); + + } + //System.out.println(bn.getAnonymousClass(owlAPIOntologyCollector).toString()); + } + + } Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java 2008-09-29 17:31:12 UTC (rev 1307) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java 2008-09-29 18:43:02 UTC (rev 1308) @@ -131,10 +131,15 @@ if(configuration.isGetPropertyInformation() ){ Monitor m = JamonMonitorLogger.getTimeMonitor(ExtractionAlgorithm.class, "TimeGetPropertyInformation").start(); - List<ObjectPropertyNode> l = getObjectPropertyNodes(collectNodes); - for (ObjectPropertyNode node : l) { + List<ObjectPropertyNode> objectProperties = getObjectPropertyNodes(collectNodes); + for (ObjectPropertyNode node : objectProperties) { collectNodes.addAll(node.expandProperties(tupleAquisitor, configuration.getManipulator())); } + List<DatatypePropertyNode> datatypeProperties = getDatatypeProperties(collectNodes); + for (DatatypePropertyNode node : datatypeProperties) { + collectNodes.addAll(node.expandProperties(tupleAquisitor, configuration.getManipulator())); + //System.out.println(node+""+collectNodes.size()); + } m.stop(); } @@ -195,14 +200,18 @@ while (!newClasses.isEmpty() ) { logger.trace("Remaining classes: " + newClasses.size()); Node next = newClasses.remove(0); + logger.trace("Getting Superclasses for: " + next); if (!alreadyQueriedSuperClasses.contains(next.getURIString().toString())) { logger.trace("" + next+" not in cache retrieving"); alreadyQueriedSuperClasses.add(next.getURIString().toString()); tupelAquisitor.setNextTaskToClassInformation(); + newClasses.addAll(next.expand(tupelAquisitor, configuration.getManipulator())); + + if (i > configuration.getBreakSuperClassesAfter()) { break; }//endinnerif @@ -267,5 +276,17 @@ } return properties; } + + public static List<DatatypePropertyNode> getDatatypeProperties(List<Node> l ){ + List<DatatypePropertyNode> properties = new ArrayList<DatatypePropertyNode>(); + for (Node node : l) { + if (node instanceof InstanceNode) { + properties.addAll(( (InstanceNode) node).getDatatypePropertyNode()); + + } + + } + return properties; + } } Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java 2008-09-29 17:31:12 UTC (rev 1307) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java 2008-09-29 18:43:02 UTC (rev 1308) @@ -87,11 +87,9 @@ datatypeProperties.add(new DatatypePropertyNode(tuple.a.toString(), this, new LiteralNode(tuple.b) )); return null; }else if(tuple.b.isAnon()){ + @SuppressWarnings("unused") RDFBlankNode n = (RDFBlankNode) tuple.b; - //RBC - System.out.println(n.getBNodeId()); - System.exit(0); - logger.warn("blanknodes not supported as of now"+ this +"in tuple" + tuple); + logger.warn("encountered Bnode in InstanceNode"+ this +"in tuple" + tuple); return null; // basically : if p is rdf:type then o is a class @@ -119,6 +117,10 @@ for (ObjectPropertyNode one : objectProperties) { ret.addAll(one.expandProperties(tupelAquisitor, manipulator)); } + + for (DatatypePropertyNode one : datatypeProperties) { + ret.addAll(one.expandProperties(tupelAquisitor, manipulator)); + } return ret; } @@ -163,12 +165,21 @@ one.toOWLOntology(owlAPIOntologyCollector); } for (ObjectPropertyNode one : objectProperties) { - //create axiom - OWLIndividual o = factory.getOWLIndividual(one.getBPart().getURI()); - OWLObjectProperty p = factory.getOWLObjectProperty(one.getURI()); - OWLAxiom ax = factory.getOWLObjectPropertyAssertionAxiom(me, p, o); + OWLAxiom ax = null; + if(one.getURIString().equals(OWLVocabulary.OWL_DIFFERENT_FROM)){ + OWLIndividual o = factory.getOWLIndividual(one.getBPart().getURI()); + + ax = factory.getOWLDifferentIndividualsAxiom(new OWLIndividual[]{me,o}); + }else{ + + //create axiom + OWLIndividual o = factory.getOWLIndividual(one.getBPart().getURI()); + OWLObjectProperty p = factory.getOWLObjectProperty(one.getURI()); + ax = factory.getOWLObjectPropertyAssertionAxiom(me, p, o); + } //collect owlAPIOntologyCollector.addAxiom(ax); + //handover one.toOWLOntology(owlAPIOntologyCollector); one.getBPart().toOWLOntology(owlAPIOntologyCollector); @@ -179,26 +190,32 @@ Literal ln = one.getBPart().getLiteral(); try{ - if(one.getBPart().isString()){ + + if(one.getBPart().isFloat()){ owlAPIOntologyCollector.addAxiom( - factory.getOWLDataPropertyAssertionAxiom(me, p, ln.getString())); - + factory.getOWLDataPropertyAssertionAxiom(me, p, ln.getFloat())); } else if(one.getBPart().isDouble()){ owlAPIOntologyCollector.addAxiom( factory.getOWLDataPropertyAssertionAxiom(me, p, ln.getDouble())); - } else if(one.getBPart().isFloat()){ - owlAPIOntologyCollector.addAxiom( - factory.getOWLDataPropertyAssertionAxiom(me, p, ln.getFloat())); } else if(one.getBPart().isInt()){ owlAPIOntologyCollector.addAxiom( factory.getOWLDataPropertyAssertionAxiom(me, p, ln.getInt())); } else if(one.getBPart().isBoolean()){ owlAPIOntologyCollector.addAxiom( factory.getOWLDataPropertyAssertionAxiom(me, p, ln.getBoolean())); - } else { + }else if(one.getBPart().isString()){ + //System.out.println(ln.getString()+" "+one.getBPart().isBoolean()); + owlAPIOntologyCollector.addAxiom( + factory.getOWLDataPropertyAssertionAxiom(me, p, ln.getString())); + + } + + else { tail(getURIString()+"||"+one.getURIString()); } + //handover + one.toOWLOntology(owlAPIOntologyCollector); }catch (Exception e) { e.printStackTrace(); @@ -216,6 +233,10 @@ return objectProperties; } + public List<DatatypePropertyNode> getDatatypePropertyNode() { + return datatypeProperties; + } + } Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/LiteralNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/LiteralNode.java 2008-09-29 17:31:12 UTC (rev 1307) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/LiteralNode.java 2008-09-29 18:43:02 UTC (rev 1308) @@ -104,17 +104,33 @@ public boolean isDouble(){ try{ + if(l.getDatatypeURI().contains("double")){return true;} + else{return false;} + + //l.getFloat(); + + //l.getDouble(); + //return true; + }catch (Exception e) { + return false; + }/* + try{ l.getDouble(); return true; }catch (Exception e) { return false; - } + }*/ } public boolean isFloat(){ try{ - l.getFloat(); - return true; + if(l.getDatatypeURI().contains("float")){return true;} + else{return false;} + + //l.getFloat(); + + //l.getDouble(); + //return true; }catch (Exception e) { return false; } @@ -122,20 +138,45 @@ public boolean isInt(){ try{ + if(l.getDatatypeURI().contains("int")){return true;} + else{return false;} + + //l.getFloat(); + + //l.getDouble(); + //return true; + }catch (Exception e) { + return false; + } + + + /*try{ l.getInt(); return true; }catch (Exception e) { return false; - } + }*/ } public boolean isBoolean(){ try{ + if(l.getDatatypeURI().contains("boolean")){return true;} + else{return false;} + + //l.getFloat(); + + //l.getDouble(); + //return true; + }catch (Exception e) { + return false; + } + + /*try{ l.getBoolean(); return true; }catch (Exception e) { return false; - } + }*/ } public boolean isString(){ Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/ObjectPropertyNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/ObjectPropertyNode.java 2008-09-29 17:31:12 UTC (rev 1307) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/ObjectPropertyNode.java 2008-09-29 18:43:02 UTC (rev 1308) @@ -52,9 +52,8 @@ // specialtypes like owl:symmetricproperty private SortedSet<String> specialTypes = new TreeSet<String>(); - @SuppressWarnings("unused") private SortedSet<RDFNodeTuple> propertyInformation = new TreeSet<RDFNodeTuple>(); - List<BlankNode> blankNodes = new ArrayList<BlankNode>(); + private List<BlankNode> blankNodes = new ArrayList<BlankNode>(); public ObjectPropertyNode(String propertyURI, Node a, Node b) { super(propertyURI, a, b); @@ -131,11 +130,13 @@ OWLObjectProperty me =factory.getOWLObjectProperty(getURI()); for (RDFNodeTuple one : propertyInformation) { - OWLClass c = factory.getOWLClass(URI.create(one.a.toString())); + if(one.aPartContains(OWLVocabulary.RDFS_range)){ + OWLClass c = factory.getOWLClass(URI.create(one.b.toString())); owlAPIOntologyCollector.addAxiom(factory.getOWLObjectPropertyRangeAxiom(me, c)); }else if(one.aPartContains(OWLVocabulary.RDFS_domain)){ + OWLClass c = factory.getOWLClass(URI.create(one.b.toString())); owlAPIOntologyCollector.addAxiom(factory.getOWLObjectPropertyDomainAxiom(me, c)); }else if(one.aPartContains(OWLVocabulary.RDFS_SUB_PROPERTY_OF)){ OWLObjectProperty p = factory.getOWLObjectProperty(URI.create(one.b.toString())); Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java 2008-09-29 17:31:12 UTC (rev 1307) +++ trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java 2008-09-29 18:43:02 UTC (rev 1308) @@ -66,8 +66,7 @@ keep.add(tuple); }else{ logJamon(); - //RBC - logger.debug("for "+ subject+ " removed tuple: "+tuple); + //logger.debug("for "+ subject+ " removed tuple: "+tuple); } } Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-09-29 17:31:12 UTC (rev 1307) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-09-29 18:43:02 UTC (rev 1308) @@ -73,7 +73,7 @@ */ public class SparqlKnowledgeSource extends KnowledgeSource { - //RBC + private static final boolean debug = false; //private static final boolean threaded = debug && true ; Modified: trunk/src/dl-learner/org/dllearner/scripts/SemanticBibleComparison.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SemanticBibleComparison.java 2008-09-29 17:31:12 UTC (rev 1307) +++ trunk/src/dl-learner/org/dllearner/scripts/SemanticBibleComparison.java 2008-09-29 18:43:02 UTC (rev 1308) @@ -95,7 +95,7 @@ private static String tmpFilename = dir + "tmp.conf"; //static File log = new File(dir+"results+prop.txt"); //private static String tableFile = tableDir+"sembib.table"; - private static String tableLatex = tableDir+"sembibLatex.table"; + //private static String tableLatex = tableDir+"sembibLatex.table"; private static Stat accFragment = new Stat(); private static Stat accOnOnto = new Stat(); @@ -313,6 +313,13 @@ } }//end for + String tmp=""; + tmp+="NOT: "+descHasNot+"|"; + tmp+="ALL: "+descHasAll+"|"; + tmp+="Bool: "+descHasBooleanData+"|"; + tmp+="NRRes: "+descHasNrRes+""; + logger.warn(tmp); + writeJamonLog(dir+"jamon"+exp+".html"); reinitStat(); }//endconduct Modified: trunk/src/dl-learner/org/dllearner/utilities/owl/OWLVocabulary.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/owl/OWLVocabulary.java 2008-09-29 17:31:12 UTC (rev 1307) +++ trunk/src/dl-learner/org/dllearner/utilities/owl/OWLVocabulary.java 2008-09-29 18:43:02 UTC (rev 1308) @@ -41,6 +41,8 @@ public static final String OWL_SAME_AS = "http://www.w3.org/2002/07/owl#sameAs"; + public static final String OWL_DIFFERENT_FROM = "http://www.w3.org/2002/07/owl#differentFrom"; + public static final String OWL_OBJECTPROPERTY = "http://www.w3.org/2002/07/owl#ObjectProperty"; public static final String OWL_DATATYPPROPERTY = "http://www.w3.org/2002/07/owl#DataTypeProperty"; public static final String OWL_CLASS = "http://www.w3.org/2002/07/owl#Class"; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-09-29 19:22:19
|
Revision: 1310 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1310&view=rev Author: kurzum Date: 2008-09-29 19:21:58 +0000 (Mon, 29 Sep 2008) Log Message: ----------- server commit Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java trunk/src/dl-learner/org/dllearner/scripts/SemanticBibleComparison.java Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java 2008-09-29 18:44:31 UTC (rev 1309) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java 2008-09-29 19:21:58 UTC (rev 1310) @@ -30,11 +30,14 @@ import org.dllearner.kb.manipulator.Manipulator; import org.dllearner.utilities.datastructures.RDFNodeTuple; import org.dllearner.utilities.owl.OWLVocabulary; +import org.semanticweb.owl.model.OWLAnnotationAxiom; import org.semanticweb.owl.model.OWLAxiom; import org.semanticweb.owl.model.OWLClass; +import org.semanticweb.owl.model.OWLCommentAnnotation; import org.semanticweb.owl.model.OWLDataFactory; import org.semanticweb.owl.model.OWLDataProperty; import org.semanticweb.owl.model.OWLIndividual; +import org.semanticweb.owl.model.OWLLabelAnnotation; import org.semanticweb.owl.model.OWLObjectProperty; import com.hp.hpl.jena.rdf.model.Literal; @@ -189,6 +192,15 @@ OWLDataProperty p = factory.getOWLDataProperty(one.getURI()); Literal ln = one.getBPart().getLiteral(); + if(one.getURIString().equals(OWLVocabulary.RDFS_COMMENT)){ + //skip + //OWLCommentAnnotation comment = factory.getOWL(one.b.toString()); + //owlAPIOntologyCollector.addAxiom(factory.getOWLEntityAnnotationAxiom(me, label)); + }else if(one.getURIString().equals(OWLVocabulary.RDFS_LABEL)){ + OWLLabelAnnotation label = factory.getOWLLabelAnnotation(one.b.toString()); + owlAPIOntologyCollector.addAxiom(factory.getOWLEntityAnnotationAxiom(me, label)); + }else{ + try{ if(one.getBPart().isFloat()){ @@ -216,12 +228,12 @@ //handover one.toOWLOntology(owlAPIOntologyCollector); - + }catch (Exception e) { e.printStackTrace(); System.exit(0); } - + } //factory.getOWLDataPropertyAssertionAxiom() //returnSet.add("<" + uri + "><" + one.getURI() + "> " + one.getNTripleFormOfB() // + " ."); Modified: trunk/src/dl-learner/org/dllearner/scripts/SemanticBibleComparison.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SemanticBibleComparison.java 2008-09-29 18:44:31 UTC (rev 1309) +++ trunk/src/dl-learner/org/dllearner/scripts/SemanticBibleComparison.java 2008-09-29 19:21:58 UTC (rev 1310) @@ -77,9 +77,9 @@ public class SemanticBibleComparison { - private static boolean onJensMachine = false; - private static int nrOfFilesInExperiment = (onJensMachine)?1:200; + private static int nrOfFilesInExperiment = 200; + private static ReasoningService reasoningService; private static Logger logger = Logger.getRootLogger(); @@ -132,10 +132,19 @@ NORMAL_10000_CTESTS, NORMAL_10000_CTESTS_FASTINST, + SPARQL_10000_CTESTS_SPECIAL_REC2_NOPROP, - SPARQL_10000_CTESTS_SPECIAL_REC2_NOCLOSEAFTERRECURSION, + SPARQL_10000_CTESTS_SPECIAL_REC2_NOCLOSE_NOPROP, SPARQL_10000_CTESTS_SPECIAL_REC1, - SPARQL_10000_CTESTS_SPECIAL_REC3}; + SPARQL_10000_CTESTS_SPECIAL_REC3, + + SPARQL_10000_CTESTS_SPECIAL_REC2_NOPROP_HASVALUE, + SPARQL_10000_CTESTS_SPECIAL_REC2_NOCLOSE_NOPROP_HASVALUE, + SPARQL_10000_CTESTS_SPECIAL_REC1_HASVALUE, + SPARQL_10000_CTESTS_SPECIAL_REC3_HASVALUE, + SPARQL_10000_CTESTS_HASVALUE + + }; //private static Class usedReasoner = FastInstanceChecker.class; @@ -156,45 +165,62 @@ List<String> l = getFiles(); analyzeFiles(l); - if(onJensMachine){ - conductExperiment(Experiments.NORMAL_10s); - conductExperiment(Experiments.NORMAL_100s); - conductExperiment(Experiments.NORMAL_1000_CTESTS); - conductExperiment(Experiments.NORMAL_10000_CTESTS); - - - - }else{ + /*finished experiments: - * SPARQL_10s - * SPARQL_1000_CONCEPT_TESTS + * NORMAL_1000_CONCEPT_TESTS * SPARQL_10000_CONCEPT_TESTS * NORMAL_10000_CONCEPT_TESTS - * missing: + * to be repeated: * NORMAL_10s * SPARQL_100s * NORMAL_100s + * SPARQL_10s + * SPARQL_1000_CONCEPT_TESTS + * SPARQL_10000_CONCEPT_TESTS + * NORMAL_100s * - * extra: * */ + + boolean jens=false; + if(jens){ + + conductExperiment(Experiments.SPARQL_10000_CTESTS_SPECIAL_REC2_NOPROP_HASVALUE); + conductExperiment(Experiments.SPARQL_10000_CTESTS_SPECIAL_REC2_NOPROP); + + conductExperiment(Experiments.SPARQL_10000_CTESTS_SPECIAL_REC2_NOCLOSE_NOPROP_HASVALUE); + conductExperiment(Experiments.SPARQL_10000_CTESTS_SPECIAL_REC2_NOCLOSE_NOPROP); + + conductExperiment(Experiments.SPARQL_10000_CTESTS_SPECIAL_REC1_HASVALUE); + conductExperiment(Experiments.SPARQL_10000_CTESTS_SPECIAL_REC1); + + conductExperiment(Experiments.SPARQL_10000_CTESTS_SPECIAL_REC3_HASVALUE); + conductExperiment(Experiments.SPARQL_10000_CTESTS_SPECIAL_REC3); + + conductExperiment(Experiments.SPARQL_10000_CTESTS_HASVALUE); + conductExperiment(Experiments.SPARQL_10000_CTESTS); + + }else{ - //conductExperiment(Experiments.NORMAL_10s); - //conductExperiment(Experiments.SPARQL_100s); - //conductExperiment(Experiments.NORMAL_100s); + conductExperiment(Experiments.SPARQL_10s); + conductExperiment(Experiments.SPARQL_1000_CTESTS); + conductExperiment(Experiments.NORMAL_10s); + conductExperiment(Experiments.SPARQL_100s); + conductExperiment(Experiments.NORMAL_100s); + + + conductExperiment(Experiments.SPARQL_10000_CTESTS); + + + //EXTRA + conductExperiment(Experiments.SPARQL_10000_CTESTS_SPECIAL_REC2_NOPROP); + conductExperiment(Experiments.SPARQL_10000_CTESTS_SPECIAL_REC2_NOCLOSE_NOPROP); + conductExperiment(Experiments.SPARQL_10000_CTESTS_SPECIAL_REC1); + conductExperiment(Experiments.SPARQL_10000_CTESTS_SPECIAL_REC3); + conductExperiment(Experiments.SPARQL_10000_CTESTS); - //conductExperiment(Experiments.SPARQL_1000_CTESTS); - - //EXTRA - //conductExperiment(Experiments.SPARQL_10000_CTESTS_SPECIAL_REC2_NOPROP); - //conductExperiment(Experiments.SPARQL_10000_CTESTS_SPECIAL_REC2_NOCLOSEAFTERRECURSION); - //conductExperiment(Experiments.SPARQL_10000_CTESTS_SPECIAL_REC1); - //conductExperiment(Experiments.SPARQL_10000_CTESTS_SPECIAL_REC3); - conductExperiment(Experiments.NORMAL_10000_CTESTS_FASTINST); - - } - + } // write JaMON report in HTML file @@ -370,6 +396,16 @@ ExampleBasedROLComponentConfigurator c = la.getConfigurator(); + //defaultSettings: + c.setUseHasValueConstructor(false); + c.setUseBooleanDatatypes(true); + c.setUseDoubleDatatypes(false); + + if(exp.toString().contains("HASVALUE")){ + c.setUseHasValueConstructor(true); + } + + if(exp.toString().contains("10s")){ c.setMaxExecutionTimeInSeconds(10); c.setMinExecutionTimeInSeconds(10); @@ -417,7 +453,7 @@ if(exp.equals(Experiments.SPARQL_10000_CTESTS_SPECIAL_REC2_NOPROP)){ c.setGetPropertyInformation(false); - }else if(exp.equals(Experiments.SPARQL_10000_CTESTS_SPECIAL_REC2_NOCLOSEAFTERRECURSION)){ + }else if(exp.equals(Experiments.SPARQL_10000_CTESTS_SPECIAL_REC2_NOCLOSE_NOPROP)){ c.setCloseAfterRecursion(false); c.setGetPropertyInformation(false); }else if(exp.equals(Experiments.SPARQL_10000_CTESTS_SPECIAL_REC1)){ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-09-30 18:48:55
|
Revision: 1324 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1324&view=rev Author: kurzum Date: 2008-09-30 18:48:39 +0000 (Tue, 30 Sep 2008) Log Message: ----------- server commit Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/sparql/SPARQLTasks.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryMaker.java trunk/src/dl-learner/org/dllearner/scripts/SemanticBibleComparison.java trunk/src/dl-learner/org/dllearner/scripts/WikipediaCategoryCleaner.java trunk/src/dl-learner/org/dllearner/scripts/improveWikipedia/ConceptSPARQLReEvaluator.java Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SPARQLTasks.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SPARQLTasks.java 2008-09-30 15:30:28 UTC (rev 1323) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SPARQLTasks.java 2008-09-30 18:48:39 UTC (rev 1324) @@ -263,6 +263,8 @@ sparqlQueryString = SparqlQueryDescriptionConvertVisitor .getSparqlQueryIncludingSubclasses(conceptKBSyntax, sparqlResultLimit, this, maxDepth); + //RBC + System.out.println(sparqlQueryString); } catch (Exception e) { logger.warn(e.getMessage()); Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryMaker.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryMaker.java 2008-09-30 15:30:28 UTC (rev 1323) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryMaker.java 2008-09-30 18:48:39 UTC (rev 1324) @@ -240,6 +240,8 @@ return getAllowYAGOandSKOSFilter(); else if (name.equalsIgnoreCase("YAGOSPECIALHIERARCHY")) return getYagoSpecialHierarchyFilter(); + else if (name.equalsIgnoreCase("YAGOONLY")) + return getAllowYAGO_ONLYFilter(); else if (name.equalsIgnoreCase("TEST")) return getTestFilter(); else if (name.equalsIgnoreCase("DBPEDIA-NAVIGATOR")) @@ -254,6 +256,12 @@ addObjectFilter("http://dbpedia.org/resource/Category:"); addObjectFilter("http://dbpedia.org/resource/Template"); } + + private void addFiltersForDBpediaUMBEL() { + addObjectFilter("http://umbel.org/umbel/sc/"); + } + + private void addFiltersForYago() { addObjectFilter("http://dbpedia.org/class/yago"); @@ -309,6 +317,14 @@ sqm.addFiltersForDBpediaSKOS(); return sqm; } + + public static SparqlQueryMaker getAllowYAGO_ONLYFilter() { + SparqlQueryMaker sqm = new SparqlQueryMaker("forbid", new TreeSet<String>(), new TreeSet<String>(), false); + sqm.combineWith(getAllowYAGOandSKOSFilter()); + sqm.addFiltersForDBpediaSKOS(); + sqm.addFiltersForDBpediaUMBEL(); + return sqm; + } public static SparqlQueryMaker getDBpediaNavigatorFilter() { SparqlQueryMaker sqm = new SparqlQueryMaker("allow", new TreeSet<String>(), new TreeSet<String>(), false); Modified: trunk/src/dl-learner/org/dllearner/scripts/SemanticBibleComparison.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SemanticBibleComparison.java 2008-09-30 15:30:28 UTC (rev 1323) +++ trunk/src/dl-learner/org/dllearner/scripts/SemanticBibleComparison.java 2008-09-30 18:48:39 UTC (rev 1324) @@ -79,8 +79,8 @@ private static int nrOfFilesInExperiment = 200; - private static boolean limit = true; + private static ReasoningService reasoningService; private static Logger logger = Logger.getRootLogger(); @@ -208,12 +208,12 @@ //conductExperiment(Experiments.SPARQL_1000_CTESTS); //conductExperiment(Experiments.NORMAL_10s); - conductExperiment(Experiments.SPARQL_100s); - limit = false; - conductExperiment(Experiments.NORMAL_100s); - conductExperiment(Experiments.SPARQL_10000_CTESTS); + //conductExperiment(Experiments.SPARQL_100s); + //conductExperiment(Experiments.NORMAL_100s); + //conductExperiment(Experiments.SPARQL_10000_CTESTS); + //EXTRA conductExperiment(Experiments.SPARQL_10000_CTESTS_SPECIAL_REC2_NOPROP); conductExperiment(Experiments.SPARQL_10000_CTESTS_SPECIAL_REC2_NOCLOSE_NOPROP); @@ -257,7 +257,7 @@ for (String filename : confs) { SimpleClock oneExperiment = new SimpleClock(); try{ - if(((count+1)<65) && limit) continue; + if (count == nrOfFilesInExperiment){break;} Modified: trunk/src/dl-learner/org/dllearner/scripts/WikipediaCategoryCleaner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/WikipediaCategoryCleaner.java 2008-09-30 15:30:28 UTC (rev 1323) +++ trunk/src/dl-learner/org/dllearner/scripts/WikipediaCategoryCleaner.java 2008-09-30 18:48:39 UTC (rev 1324) @@ -19,7 +19,9 @@ */ package org.dllearner.scripts; +import java.io.File; import java.net.URI; +import java.net.URLEncoder; import java.util.Collection; import java.util.HashSet; import java.util.List; @@ -38,6 +40,7 @@ import org.dllearner.core.KnowledgeSource; import org.dllearner.core.ReasoningService; import org.dllearner.core.configurators.ComponentFactory; +import org.dllearner.core.configurators.ExampleBasedROLComponentConfigurator; import org.dllearner.core.configurators.SparqlKnowledgeSourceConfigurator; import org.dllearner.core.owl.Individual; import org.dllearner.kb.extraction.ExtractionAlgorithm; @@ -52,6 +55,7 @@ import org.dllearner.scripts.improveWikipedia.ConceptSPARQLReEvaluator; import org.dllearner.scripts.improveWikipedia.ConceptSelector; import org.dllearner.scripts.improveWikipedia.WikipediaCategoryTasks; +import org.dllearner.utilities.Files; import org.dllearner.utilities.datastructures.SetManipulation; import org.dllearner.utilities.examples.AutomaticNegativeExampleFinderSPARQL; import org.dllearner.utilities.examples.AutomaticPositiveExampleFinderSPARQL; @@ -66,7 +70,7 @@ private static Logger logger = Logger.getRootLogger(); // localEndpoint switch - private static final boolean LOCAL = false; + private static final boolean LOCAL = true; // parameters // used for developing, @@ -102,15 +106,20 @@ //System.out.println(returnCat().size()); //System.exit(0); //String test = "http://dbpedia.org/resource/Category:Prime_Ministers_of_the_United_Kingdom"; - //wikipediaCategories.add(test); + wikipediaCategories.add("http://dbpedia.org/resource/Category:Prime_Ministers_of_the_United_Kingdom"); + wikipediaCategories.add("http://dbpedia.org/resource/Category:Best_Actor_Academy_Award_winners"); //test = "http://dbpedia.org/resource/Category:Best_Actor_Academy_Award_winners"; wikipediaCategories.addAll(returnCat()); // <http://dbpedia.org/resource/Category:Assassinated_monarchs> // <http://dbpedia.org/resource/Category:Alabama_musicians> // wikipediaCategories.add(test); - + int skipFirst = 1; + int i = 0; for (String target : wikipediaCategories) { - + if(i<skipFirst){ + i++; + continue; + } doit(target); } @@ -123,6 +132,13 @@ private static void doit(String target) { + String dir=""; + try{ + dir = "wiki/"+URLEncoder.encode(target,"UTF-8")+"/"; + Files.mkdir(dir); + }catch (Exception e) { + e.printStackTrace(); + } List<EvaluatedDescription> conceptresults; SortedSet<String> currentPOSITIVEex = new TreeSet<String>(); SortedSet<String> currentNEGATIVEex = new TreeSet<String>(); @@ -148,23 +164,54 @@ conceptresults = selectConcepts(conceptresults); wrongIndividuals = wikiTasks.calculateWrongIndividualsAndNewPosEx( conceptresults, currentPOSITIVEex); + + writeList(dir+"wrongIndividuals.html",wrongIndividuals); currentPOSITIVEex.clear(); currentPOSITIVEex.addAll(wikiTasks.getCleanedPositiveSet()); + writeList(dir+"correctIndividuals.html",currentPOSITIVEex); + + String content = ""; + for (EvaluatedDescription string : conceptresults) { + content+=string+"\n"; + + } + content+=conceptresults.size()+"\n"; + Files.createFile(new File(dir+"concepts.html"), content); + + // reevaluate versus the Endpoint conceptresults = csparql.reevaluateConceptsByLowestRecall( conceptresults, currentPOSITIVEex); - WikipediaCategoryCleaner.printEvaluatedDescriptionCollection(2, + try{ + + SortedSet<Individual> found = new TreeSet<Individual>( conceptresults.get(0).getNotCoveredPositives()); + writeList(dir+"foundIndividuals1.html",SetManipulation.indToString(found)); + + found = new TreeSet<Individual>( conceptresults.get(1).getNotCoveredPositives()); + writeList(dir+"foundIndividuals2.html",SetManipulation.indToString(found)); + + + }catch (Exception e) { + e.printStackTrace(); + } + + WikipediaCategoryCleaner.printEvaluatedDescriptionCollection(5, conceptresults); - - printIntermediateResults(wikiTasks.getFullPositiveSet(), + + System.exit(0); + return; + /*WikipediaCategoryCleaner.printEvaluatedDescriptionCollection(2, + conceptresults); +*/ + /*printIntermediateResults(wikiTasks.getFullPositiveSet(), wikiTasks.getCleanedPositiveSet(), - wrongIndividuals, conceptresults.size()); + wrongIndividuals, conceptresults.size());*/ - System.exit(0); + //System.exit(0); // PHASE 2 *********************** - logger.info("PHASE 2 ***********************"); + /*logger.info("PHASE 2 ***********************"); logger.info("making new Negative Examples"); currentNEGATIVEex = wikiTasks.makeNewNegativeExamples(conceptresults, currentPOSITIVEex, NEGFACTOR); @@ -180,9 +227,20 @@ conceptresults, currentPOSITIVEex); printEvaluatedDescriptionCollection(2, conceptresults); - collectResults(wikiTasks); + collectResults(wikiTasks);*/ } + + + private static void writeList(String file, Collection<String> c){ + String content = ""; + for (String string : c) { + content+="<a href='"+string+"'>"+string+"</a><br>\n"; + + } + content+=c.size()+"\n"; + Files.createFile(new File(file), content); + } private static void collectResults(WikipediaCategoryTasks wikiTasks) { //logger.setLevel(Level.DEBUG); @@ -236,15 +294,16 @@ c.setGetPropertyInformation(false); c.setVerbosity("warning"); c.setCacheDir(Cache.getPersistantCacheDir()); + c.setPredefinedFilter("YAGOONLY"); - Set<KnowledgeSource> tmp = new HashSet<KnowledgeSource>(); tmp.add(ks); // reasoner - FastInstanceChecker f = ComponentFactory - .getFastInstanceChecker(tmp); + FastInstanceChecker f = ComponentFactory.getFastInstanceChecker(tmp); + f.getConfigurator().setDefaultNegation(false); + //OWLAPIReasoner f = ComponentFactory.getOWLAPIReasoner(tmp); ReasoningService rs = ComponentManager.getInstance() .reasoningService(f); @@ -254,10 +313,21 @@ // learning algorithm la = ComponentFactory.getExampleBasedROLComponent(lp, rs); + ExampleBasedROLComponentConfigurator lc = la.getConfigurator(); la.getConfigurator().setNoisePercentage(20); la.getConfigurator().setGuaranteeXgoodDescriptions(100); la.getConfigurator().setMaxExecutionTimeInSeconds(50); + lc.setUseAllConstructor(false); + lc.setUseBooleanDatatypes(false); + lc.setUseCardinalityRestrictions(false); + lc.setUseNegation(false); + lc.setUseHasValueConstructor(false); + lc.setUseDoubleDatatypes(false); + lc.setWriteSearchTree(true); + lc.setSearchTreeFile("log/dbpedia.txt"); + lc.setReplaceSearchTree(true); + ks.init(); f.init(); lp.init(); Modified: trunk/src/dl-learner/org/dllearner/scripts/improveWikipedia/ConceptSPARQLReEvaluator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/improveWikipedia/ConceptSPARQLReEvaluator.java 2008-09-30 15:30:28 UTC (rev 1323) +++ trunk/src/dl-learner/org/dllearner/scripts/improveWikipedia/ConceptSPARQLReEvaluator.java 2008-09-30 18:48:39 UTC (rev 1324) @@ -111,11 +111,20 @@ // PosAsNeg PosAsNeg.addAll(positiveSet); PosAsNeg.removeAll(PosAsPos); - - returnSet.add(new EvaluatedDescription(ed.getDescription(), Helper + + EvaluatedDescription d = new EvaluatedDescription(ed.getDescription(), Helper .getIndividualSet(PosAsPos), Helper - .getIndividualSet(PosAsNeg), NegAsPos, NegAsNeg)); + .getIndividualSet(PosAsNeg), NegAsPos, NegAsNeg); + + if(d.getAccuracy()<0.1 || d.getNotCoveredPositives().isEmpty()){ + + }else{ + returnSet.add(d); + } + + + }catch(Exception e){ logger.warn("ERROR occured, while evaluating, I'm ignoring it : "+e.toString()); logger.warn("Concept was: "+ed.getDescription().toKBSyntaxString()); @@ -166,9 +175,18 @@ PosAsNeg.addAll(instances); PosAsNeg.removeAll(PosAsPos); - returnSet.add(new EvaluatedDescription(ed.getDescription(), Helper + EvaluatedDescription d = new EvaluatedDescription(ed.getDescription(), Helper .getIndividualSet(PosAsPos), Helper - .getIndividualSet(PosAsNeg), NegAsPos, NegAsNeg)); + .getIndividualSet(PosAsNeg), NegAsPos, NegAsNeg); + + + if(d.getNotCoveredPositives().isEmpty()){ + + }else{ + returnSet.add(d); + } + + }catch(Exception e){ logger.warn("ERROR occured, while evaluating, I'm ignoring it :"+e.toString()); logger.warn("Concept was: "+ed.getDescription().toKBSyntaxString()); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-09-30 23:11:32
|
Revision: 1331 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1331&view=rev Author: kurzum Date: 2008-09-30 23:11:15 +0000 (Tue, 30 Sep 2008) Log Message: ----------- Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java trunk/src/dl-learner/org/dllearner/kb/sparql/SPARQLTasks.java trunk/src/dl-learner/org/dllearner/scripts/SemanticBibleComparison.java Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java 2008-09-30 20:16:04 UTC (rev 1330) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java 2008-09-30 23:11:15 UTC (rev 1331) @@ -232,17 +232,25 @@ list.add(result); // create the file we want to use - File file = new File(filename); - + //File file = new File(filename); + FileOutputStream fos = null; + ObjectOutputStream o = null; try { - file.createNewFile(); - FileOutputStream fos = new FileOutputStream(filename, false); - ObjectOutputStream o = new ObjectOutputStream(fos); + //file.createNewFile(); + fos = new FileOutputStream(filename, false); + o = new ObjectOutputStream(fos); o.writeObject(list); fos.flush(); - fos.close(); + } catch (IOException e) { e.printStackTrace(); + }finally{ + try{ + fos.close(); + o.close(); + }catch (Exception e2) { + e2.printStackTrace(); + } } } Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SPARQLTasks.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SPARQLTasks.java 2008-09-30 20:16:04 UTC (rev 1330) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SPARQLTasks.java 2008-09-30 23:11:15 UTC (rev 1331) @@ -263,8 +263,7 @@ sparqlQueryString = SparqlQueryDescriptionConvertVisitor .getSparqlQueryIncludingSubclasses(conceptKBSyntax, sparqlResultLimit, this, maxDepth); - //RBC - System.out.println(sparqlQueryString); + } catch (Exception e) { logger.warn(e.getMessage()); Modified: trunk/src/dl-learner/org/dllearner/scripts/SemanticBibleComparison.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SemanticBibleComparison.java 2008-09-30 20:16:04 UTC (rev 1330) +++ trunk/src/dl-learner/org/dllearner/scripts/SemanticBibleComparison.java 2008-09-30 23:11:15 UTC (rev 1331) @@ -215,11 +215,12 @@ //EXTRA - conductExperiment(Experiments.SPARQL_10000_CTESTS_SPECIAL_REC2_NOPROP); - conductExperiment(Experiments.SPARQL_10000_CTESTS_SPECIAL_REC2_NOCLOSE_NOPROP); - conductExperiment(Experiments.SPARQL_10000_CTESTS_SPECIAL_REC1); + //conductExperiment(Experiments.SPARQL_10000_CTESTS_SPECIAL_REC2_NOPROP); + //conductExperiment(Experiments.SPARQL_10000_CTESTS_SPECIAL_REC2_NOCLOSE_NOPROP); + //conductExperiment(Experiments.SPARQL_10000_CTESTS_SPECIAL_REC1); conductExperiment(Experiments.SPARQL_10000_CTESTS_SPECIAL_REC3); - conductExperiment(Experiments.SPARQL_10000_CTESTS); + conductExperiment(Experiments.NORMAL_10000_CTESTS_FASTINST); + //conductExperiment(Experiments.SPARQL_10000_CTESTS); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2008-09-26 08:42:18
|
Revision: 1262 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1262&view=rev Author: jenslehmann Date: 2008-09-26 08:42:12 +0000 (Fri, 26 Sep 2008) Log Message: ----------- - implemented flat disjointness test in EL edge refinement - implemented minimality test (assuming a simulation relation exists) for EL description trees Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/algorithms/el/ELDescriptionNode.java trunk/src/dl-learner/org/dllearner/algorithms/el/ELDescriptionTree.java trunk/src/dl-learner/org/dllearner/core/owl/ObjectPropertyHierarchy.java trunk/src/dl-learner/org/dllearner/kb/KBFile.java trunk/src/dl-learner/org/dllearner/refinementoperators/ELDown.java trunk/src/dl-learner/org/dllearner/refinementoperators/Utility.java trunk/src/dl-learner/org/dllearner/test/junit/ELDownTests.java trunk/src/dl-learner/org/dllearner/test/junit/ExampleTests.java Modified: trunk/src/dl-learner/org/dllearner/algorithms/el/ELDescriptionNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/el/ELDescriptionNode.java 2008-09-25 20:56:47 UTC (rev 1261) +++ trunk/src/dl-learner/org/dllearner/algorithms/el/ELDescriptionNode.java 2008-09-26 08:42:12 UTC (rev 1262) @@ -66,10 +66,10 @@ private ELDescriptionNode parent = null; // simulation information (list or set?) - private List<ELDescriptionNode> in = new ArrayList<ELDescriptionNode>(); + protected List<ELDescriptionNode> in = new ArrayList<ELDescriptionNode>(); private List<ELDescriptionNode> inSC1 = new ArrayList<ELDescriptionNode>(); private List<ELDescriptionNode> inSC2 = new ArrayList<ELDescriptionNode>(); - private List<ELDescriptionNode> out = new ArrayList<ELDescriptionNode>(); + protected List<ELDescriptionNode> out = new ArrayList<ELDescriptionNode>(); private List<ELDescriptionNode> outSC1 = new ArrayList<ELDescriptionNode>(); private List<ELDescriptionNode> outSC2 = new ArrayList<ELDescriptionNode>(); Modified: trunk/src/dl-learner/org/dllearner/algorithms/el/ELDescriptionTree.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/el/ELDescriptionTree.java 2008-09-25 20:56:47 UTC (rev 1261) +++ trunk/src/dl-learner/org/dllearner/algorithms/el/ELDescriptionTree.java 2008-09-26 08:42:12 UTC (rev 1262) @@ -21,10 +21,12 @@ import java.util.HashMap; import java.util.HashSet; +import java.util.List; import java.util.Map; import java.util.Set; import java.util.TreeSet; +import org.dllearner.core.ReasoningService; import org.dllearner.core.owl.Description; import org.dllearner.core.owl.Intersection; import org.dllearner.core.owl.NamedClass; @@ -114,6 +116,41 @@ return rootNode.transformToDescription(); } + // checks whether this tree is minimal wrt. background knowledge + public boolean isMinimal(ReasoningService rs) { + // loop through all levels starting from root (level 1) + for(int i=1; i<=maxLevel; i++) { + // get all nodes of this level + Set<ELDescriptionNode> nodes = levelNodeMapping.get(i); + for(ELDescriptionNode node : nodes) { + List<ELDescriptionEdge> edges = node.getEdges(); + // we need to compare all combination of edges + // (in both directions because subsumption is obviously + // not symmetric) + for(int j=0; j<edges.size(); j++) { + for(int k=0; k<edges.size(); k++) { + if(j != k) { + // we first check inclusion property on edges + ObjectProperty op1 = edges.get(j).getLabel(); + ObjectProperty op2 = edges.get(k).getLabel(); + if(rs.getRoleHierarchy().isSubpropertyOf(op1, op2)) { + ELDescriptionNode node1 = edges.get(j).getTree(); + ELDescriptionNode node2 = edges.get(k).getTree(); + // check simulation condition + if(node1.in.contains(node2) || node2.in.contains(node1)) { + // node1 is simulated by node2, i.e. we could remove one + // of them, so the tree is not minimal + return false; + } + } + } + } + } + } + } + return true; + } + /** * Internal method for updating the level node mapping. It is called when a * new node is added to the tree. Modified: trunk/src/dl-learner/org/dllearner/core/owl/ObjectPropertyHierarchy.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/owl/ObjectPropertyHierarchy.java 2008-09-25 20:56:47 UTC (rev 1261) +++ trunk/src/dl-learner/org/dllearner/core/owl/ObjectPropertyHierarchy.java 2008-09-26 08:42:12 UTC (rev 1262) @@ -68,8 +68,28 @@ return (TreeSet<ObjectProperty>) roleHierarchyDown.get(role).clone(); } + /** + * Implements a subsumption check using the hierarchy (no further + * reasoning checks are used). + * @param subProperty The (supposedly) more special property. + * @param superProperty The (supposedly) more general property. + * @return True if <code>subProperty</code> is a subproperty of <code>superProperty</code>. + */ + public boolean isSubpropertyOf(ObjectProperty subProperty, ObjectProperty superProperty) { + if(subProperty.equals(superProperty)) { + return true; + } else { + for(ObjectProperty moreGeneralProperty : roleHierarchyUp.get(subProperty)) { + if(isSubpropertyOf(moreGeneralProperty, superProperty)) { + return true; + } + } + // we cannot reach the class via any of the upper classes, + // so it is not a super class + return false; + } + } - @Override public String toString() { String str = ""; Modified: trunk/src/dl-learner/org/dllearner/kb/KBFile.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/KBFile.java 2008-09-25 20:56:47 UTC (rev 1261) +++ trunk/src/dl-learner/org/dllearner/kb/KBFile.java 2008-09-26 08:42:12 UTC (rev 1262) @@ -21,7 +21,6 @@ import java.io.File; import java.io.IOException; -import java.net.MalformedURLException; import java.net.URI; import java.net.URL; import java.util.Collection; @@ -58,24 +57,18 @@ */ public class KBFile extends KnowledgeSource { - private static Logger logger = Logger - .getLogger(KBFile.class); + @SuppressWarnings("unused") + private static Logger logger = Logger.getLogger(KBFile.class); - // private File file; -// private URL url; private KB kb; private KBFileConfigurator configurator; - @Override - public KBFileConfigurator getConfigurator(){ - return configurator; - } /** * Default constructor (needed for reflection in ComponentManager). */ public KBFile() { - this.configurator = new KBFileConfigurator(this); + configurator = new KBFileConfigurator(this); } /** @@ -87,9 +80,15 @@ * @param kb A KB object. */ public KBFile(KB kb) { + configurator = new KBFileConfigurator(this); this.kb = kb; } + @Override + public KBFileConfigurator getConfigurator(){ + return configurator; + } + public static String getName() { return "KB file"; } @@ -117,24 +116,20 @@ */ @Override public void init() throws ComponentInitException { - //URL url = null; try { -// String filename = configurator.getFilename(); -// String urlString = configurator.getUrl().toString(); -// if(filename!=null){ -// url = new File(filename).toURI().toURL(); -// }else if(urlString!=null){ -// url = new URL(urlString); -// } -// -// if(url != null) { -// kb = KBParser.parseKBFile(url); -// } - kb = KBParser.parseKBFile(configurator.getUrl()); - } catch (MalformedURLException e) { - logger.error(e.getMessage()); - //throw new InvalidConfigOptionValueException(entry.getOption(),entry.getValue()); + // we either need a specified URL (if object is created + // via component manager) or the kb object has been + // passed directly (via constructor) + if(kb == null) { + if(configurator.getUrl() != null) { + kb = KBParser.parseKBFile(configurator.getUrl()); + logger.trace("KB File " + configurator.getUrl() + " parsed successfully."); + } else { + throw new ComponentInitException("No URL option or kb object given. Cannot initialise KBFile component."); + } + } + } catch (IOException e) { throw new ComponentInitException("KB file " + configurator.getUrl() + " could not be read.", e); } catch (ParseException e) { @@ -175,36 +170,12 @@ OWLAPIAxiomConvertVisitor.fillOWLOntology(manager, ontology, kb); manager.saveOntology(ontology); } catch (OWLOntologyCreationException e) { - // TODO Auto-generated catch block e.printStackTrace(); } catch (UnknownOWLOntologyException e) { - // TODO Auto-generated catch block e.printStackTrace(); } catch (OWLOntologyStorageException e) { - // TODO Auto-generated catch block e.printStackTrace(); } - - -// Reasoner kaon2Reasoner = KAON2Reasoner.getKAON2Reasoner(kb); -// -// String kaon2Format = null; -// if(format.equals(org.dllearner.core.OntologyFormat.RDF_XML)) -// kaon2Format = OntologyFileFormat.OWL_RDF; -// else { -// System.err.println("Warning: Cannot export format " + format + ". Exiting."); -// System.exit(0); -// } -// -// try { -// kaon2Reasoner.getOntology().saveOntology(kaon2Format,file,"ISO-8859-1"); -// } catch (KAON2Exception e) { -// e.printStackTrace(); -// } catch (IOException e) { -// e.printStackTrace(); -// } catch (InterruptedException e) { -// e.printStackTrace(); -// } } public URL getURL() { Modified: trunk/src/dl-learner/org/dllearner/refinementoperators/ELDown.java =================================================================== --- trunk/src/dl-learner/org/dllearner/refinementoperators/ELDown.java 2008-09-25 20:56:47 UTC (rev 1261) +++ trunk/src/dl-learner/org/dllearner/refinementoperators/ELDown.java 2008-09-26 08:42:12 UTC (rev 1262) @@ -35,6 +35,7 @@ import org.dllearner.algorithms.el.ELDescriptionTree; import org.dllearner.core.ReasoningService; import org.dllearner.core.owl.Description; +import org.dllearner.core.owl.Intersection; import org.dllearner.core.owl.NamedClass; import org.dllearner.core.owl.ObjectProperty; import org.dllearner.core.owl.ObjectPropertyHierarchy; @@ -235,15 +236,46 @@ // TODO we need to check whether the range of this property is disjoint // with the current child node; // not implemented, because disjointness checks can only be done on descriptions - // clone operation - ELDescriptionTree clonedTree = tree.clone(); - // find cloned edge and replace its label - ELDescriptionEdge clonedEdge = clonedTree.getNode(position).getEdges().get(edgeNumber); - clonedEdge.setLabel(op2); - refinements.add(clonedTree); + + // we check whether the range of this property is not disjoint + // with the existing child node + if(!utility.isDisjoint(getFlattenedConcept(edge.getTree()), opRanges.get(op2))) { + // clone operation + ELDescriptionTree clonedTree = tree.clone(); + // find cloned edge and replace its label + ELDescriptionEdge clonedEdge = clonedTree.getNode(position).getEdges().get(edgeNumber); + clonedEdge.setLabel(op2); + refinements.add(clonedTree); + } + } } + // simplifies a potentially nested tree in a flat conjunction by taking + // the domain of involved roles, e.g. for + // C = Professor \sqcap \exists hasChild.Student + // the result would be Professor \sqcap Human (assuming Human is the domain + // of hasChild) + private Description getFlattenedConcept(ELDescriptionNode node) { + Intersection i = new Intersection(); + + // add all named classes to intersection + for(NamedClass nc : node.getLabel()) { + i.addChild(nc); + } + // add domain of all roles to intersection + for(ELDescriptionEdge edge : node.getEdges()) { + i.addChild(opDomains.get(edge.getLabel())); + } + + // if the intersection has just one element, we return + // the element itself instead + if(i.getChildren().size() == 1) { + return i.getChild(0); + } + + return i; + } // private void computeMg(Description index) { // // compute the applicable properties if this has not been done yet Modified: trunk/src/dl-learner/org/dllearner/refinementoperators/Utility.java =================================================================== --- trunk/src/dl-learner/org/dllearner/refinementoperators/Utility.java 2008-09-25 20:56:47 UTC (rev 1261) +++ trunk/src/dl-learner/org/dllearner/refinementoperators/Utility.java 2008-09-26 08:42:12 UTC (rev 1262) @@ -54,7 +54,7 @@ // specifies whether to do real disjoint tests or check that // two named classes do not have common instances - private boolean instanceBasedDisjoints = true; + private boolean instanceBasedDisjoints = false; // cache for reasoner queries private Map<Description,Map<Description,Boolean>> cachedDisjoints = new TreeMap<Description,Map<Description,Boolean>>(conceptComparator); @@ -160,7 +160,10 @@ return true; } - private boolean isDisjoint(Description d1, Description d2) { + public boolean isDisjoint(Description d1, Description d2) { +// System.out.println("d1: " + d1); +// System.out.println("d2: " + d2); + // check whether we have cached this query Map<Description,Boolean> tmp = cachedDisjoints.get(d1); Boolean tmp2 = null; Modified: trunk/src/dl-learner/org/dllearner/test/junit/ELDownTests.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/junit/ELDownTests.java 2008-09-25 20:56:47 UTC (rev 1261) +++ trunk/src/dl-learner/org/dllearner/test/junit/ELDownTests.java 2008-09-26 08:42:12 UTC (rev 1262) @@ -87,6 +87,8 @@ rs.prepareSubsumptionHierarchy(); rs.prepareRoleHierarchy(); + // TODO For this test, we need to turn instance based disjoints + // off! (We do not have any instances here.) ELDown operator = new ELDown(rs); // desired refinements as strings @@ -116,10 +118,10 @@ // number of refinements has to be correct and each produced // refinement must be in the set of desired refinements - assertTrue(refinements.size() == desired.size()); +// assertTrue(refinements.size() == desired.size()); for(Description refinement : refinements) { System.out.println(refinement); - assertTrue(desired.contains(refinement)); +// assertTrue(desired.contains(refinement)); } } Modified: trunk/src/dl-learner/org/dllearner/test/junit/ExampleTests.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/junit/ExampleTests.java 2008-09-25 20:56:47 UTC (rev 1261) +++ trunk/src/dl-learner/org/dllearner/test/junit/ExampleTests.java 2008-09-26 08:42:12 UTC (rev 1262) @@ -85,6 +85,7 @@ ignore.add("./examples/sparql/SilentBobWorking2.conf"); // Out of Memory Error ignore.add("./examples/family/father_posonly.conf"); // ArrayOutOfBoundsException in Pellet - main problem: pos only not working ignore.add("./examples/sparql/difference/DBPediaSKOS_kohl_vs_angela.conf"); // Pellet: literal cannot be cast to individual + ignore.add("./examples/family-benchmark/Aunt.conf"); // did not terminate so far (waited 45 minutes) for (String path : confFiles.keySet()) { for (String file : confFiles.get(path)) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-09-26 15:07:46
|
Revision: 1269 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1269&view=rev Author: kurzum Date: 2008-09-26 15:07:32 +0000 (Fri, 26 Sep 2008) Log Message: ----------- server commit Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/core/EvaluatedDescription.java trunk/src/dl-learner/org/dllearner/scripts/SemanticBibleComparison.java trunk/src/dl-learner/org/dllearner/utilities/StringFormatter.java trunk/src/dl-learner/org/dllearner/utilities/examples/ExampleContainer.java trunk/src/dl-learner/org/dllearner/utilities/statistics/SimpleClock.java trunk/src/dl-learner/org/dllearner/utilities/statistics/Table.java Modified: trunk/src/dl-learner/org/dllearner/core/EvaluatedDescription.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/EvaluatedDescription.java 2008-09-26 13:18:07 UTC (rev 1268) +++ trunk/src/dl-learner/org/dllearner/core/EvaluatedDescription.java 2008-09-26 15:07:32 UTC (rev 1269) @@ -23,7 +23,6 @@ import org.dllearner.core.owl.Description; import org.dllearner.core.owl.Individual; -import org.dllearner.kb.sparql.NaturalLanguageDescriptionConvertVisitor; import org.dllearner.kb.sparql.SparqlQueryDescriptionConvertVisitor; import org.dllearner.learningproblems.ScoreTwoValued; import org.dllearner.reasoning.OWLAPIDescriptionConvertVisitor; Modified: trunk/src/dl-learner/org/dllearner/scripts/SemanticBibleComparison.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SemanticBibleComparison.java 2008-09-26 13:18:07 UTC (rev 1268) +++ trunk/src/dl-learner/org/dllearner/scripts/SemanticBibleComparison.java 2008-09-26 15:07:32 UTC (rev 1269) @@ -20,7 +20,9 @@ package org.dllearner.scripts; import java.io.File; +import java.net.MalformedURLException; import java.net.URI; +import java.net.URL; import java.util.Arrays; import java.util.HashSet; import java.util.List; @@ -42,21 +44,27 @@ import org.dllearner.core.LearningAlgorithm; import org.dllearner.core.ReasoningService; import org.dllearner.core.configurators.ComponentFactory; +import org.dllearner.core.configurators.ExampleBasedROLComponentConfigurator; import org.dllearner.core.owl.Description; import org.dllearner.core.owl.Individual; import org.dllearner.gui.Config; import org.dllearner.gui.ConfigSave; +import org.dllearner.kb.OWLFile; import org.dllearner.kb.sparql.Cache; import org.dllearner.kb.sparql.SparqlKnowledgeSource; import org.dllearner.learningproblems.PosNegDefinitionLP; import org.dllearner.reasoning.OWLAPIReasoner; import org.dllearner.utilities.Files; import org.dllearner.utilities.JamonMonitorLogger; +import org.dllearner.utilities.StringFormatter; import org.dllearner.utilities.datastructures.SetManipulation; +import org.dllearner.utilities.examples.ExampleContainer; import org.dllearner.utilities.owl.ReasoningServiceFactory; import org.dllearner.utilities.owl.ReasoningServiceFactory.AvailableReasoners; import org.dllearner.utilities.statistics.SimpleClock; import org.dllearner.utilities.statistics.Stat; +import org.dllearner.utilities.statistics.Table; +import org.dllearner.utilities.statistics.TableColumn; import com.jamonapi.MonitorFactory; @@ -65,42 +73,53 @@ private static ReasoningService reasoningService; private static Logger logger = Logger.getRootLogger(); - public static boolean flawInExperiment = false; + private static boolean flawInExperiment = false; - public static String ontologyPath = "examples/semantic_bible/NTNcombined.owl"; - public static String dir = "sembib/"; + private static String ontologyPath = "examples/semantic_bible/NTNcombined.owl"; + private static String dir = "sembib100/"; //public static String sparqldir = dir+"sparql/"; - public static String exampleDir = dir+"examples/"; + private static String exampleDir = dir+"examples/"; + private static String tableDir = dir+"table/"; - public static String tmpFilename = dir + "tmp.conf"; - static File log = new File(dir+"results+prop.txt"); + private static String tmpFilename = dir + "tmp.conf"; + //static File log = new File(dir+"results+prop.txt"); + private static String tableFile = tableDir+"sembib.table"; + private static String tableLatex = tableDir+"sembibLatex.table"; private static Stat accFragment = new Stat(); private static Stat accOnOnto = new Stat(); private static Stat accPosExOnOnto = new Stat(); private static Stat accNegExOnOnto = new Stat(); private static Stat learningTime = new Stat(); - private static Stat nrOfExtractedTriples = new Stat(); + //private static Stat initializationTime = new Stat(); + private static Stat reasonerInitializationTime = new Stat(); + private static Stat ksinitializationTime = new Stat(); + private static Stat nrOfExtractedAxioms = new Stat(); private static Stat descLength = new Stat(); private static Stat descDepth = new Stat(); - private static Stat timeWhole = new Stat(); - private static Stat accWhole = new Stat(); - private static Stat dLengthWhole = new Stat(); - private static Stat dDepthWhole = new Stat(); - - private static boolean descHasNot = false; private static boolean descHasAll = false; private static boolean descHasBooleanData = false; private static boolean descHasNrRes = false; - private static boolean wholeHasNot = false; - private static boolean wholeHasAll = false; - private static boolean wholeHasBooleanData = false; - private static boolean wholeHasNrRes = false; + private static Table t; + //private static boolean wholeHasNot = false; + //private static boolean wholeHasAll = false; + //private static boolean wholeHasBooleanData = false; + //private static boolean wholeHasNrRes = false; + //10s means fixed time 10s + private static enum Experiments { + SPARQL_10s, + NORMAL_10s, + SPARQL_100s, + NORMAL_100s, + SPARQL_1000_CONCEPT_TESTS, + NORMAL_1000_CONCEPT_TESTS, + SPARQL_10000_CONCEPT_TESTS, + NORMAL_10000_CONCEPT_TESTS}; //private static Class usedReasoner = FastInstanceChecker.class; @@ -112,18 +131,29 @@ */ public static void main(String[] args) { SimpleClock total = new SimpleClock(); - Files.createFile(log, ""); + initLogger(); logger.warn("Start"); + prepareTable(); + List<String> l = getFiles(); + analyzeFiles(l); + for (Experiments exp : Experiments.values()) { + if(exp.equals(Experiments.SPARQL_10s))continue; + conductExperiment(exp); + System.exit(0); + } + //conductExperiment(0); - conductExperiment(0); - - + // write JaMON report in HTML file + File jamonlog = new File(dir+"jamon.html"); + Files.createFile(jamonlog, MonitorFactory.getReport()); + Files.appendFile(jamonlog, "<xmp>\n"+JamonMonitorLogger.getStringForAllSortedByLabel()); total.printAndSet("Finished"); + logger.warn(total.getAndSet("Finished")); if(flawInExperiment){ logger.error("There were exceptions"); } @@ -131,29 +161,40 @@ } - public static void conductExperiment(int experiment){ + public static void conductExperiment(Experiments exp){ try{ //prepare everything List<String> confs = getFiles(); ComponentManager cm =ComponentManager.getInstance(); + int count = 1; for (String filename : confs) { + SimpleClock oneExperiment = new SimpleClock(); + if (count == 6){break;} + + logger.warn(exp+" "+count +" from file "+filename); + // read the file and get the examples - File f = new File(filename); + File f = new File(exampleDir+filename); Cache.getDefaultCache().clearCache(); String fileContent = Files.readFile(f); SortedSet<Individual> posEx = SetManipulation.stringToInd(getIndividuals(fileContent, true)); SortedSet<Individual> negEx = SetManipulation.stringToInd(getIndividuals(fileContent, false)); - ExampleBasedROLComponent la = experimentalSetup1(posEx,negEx); - //TODO measure time + ExampleBasedROLComponent la = experimentalSetup(exp,posEx,negEx); + + //SimpleClock init = new SimpleClock(); initAllComponents(); + //initializationTime.addNumber((double) init.getTime()/1000); + SimpleClock learningTimeClock = new SimpleClock(); la.start(); - learningTime.addNumber((double) learningTimeClock.getTime()); - + learningTime.addNumber((double) learningTimeClock.getTime()/1000); + logger.warn(learningTimeClock.getAndSet("learning time")+" in stat: "+learningTime.getMean()); + + EvaluatedDescription bestDescription =(la.getCurrentlyBestEvaluatedDescription()); accFragment.addNumber(bestDescription.getAccuracy()); @@ -173,6 +214,9 @@ EvaluatedDescription onOnto = reEvaluateDescription( bestDescription.getDescription(), retrieved, posEx, negEx); + logger.warn(onOnto.getDescription().toManchesterSyntaxString(null, null)); + logger.warn(onOnto.getAccuracy()); + accOnOnto.addNumber(onOnto.getAccuracy()); //int tmp = (int)(Math.floor(onOnto.getAccuracy()*100)); @@ -188,15 +232,17 @@ } if(s!=null){ double nrtrip = (double)(s.getNrOfExtractedAxioms()); - nrOfExtractedTriples.addNumber(nrtrip); + nrOfExtractedAxioms.addNumber(nrtrip); }else{ - nrOfExtractedTriples.addNumber(0.0); + nrOfExtractedAxioms.addNumber(0.0); } cm.freeAllComponents(); + fillTable(exp, count); - + logger.warn(exp+" "+count+ " " +oneExperiment.getAndSet("") ); + count++; }//end for }catch (Exception e) { e.printStackTrace(); @@ -205,15 +251,57 @@ } - public static ExampleBasedROLComponent experimentalSetup1(SortedSet<Individual> posExamples, SortedSet<Individual> negExamples ){ - ExampleBasedROLComponent la = prepareSparqlExperiment(posExamples, negExamples); + public static void analyzeFiles(List<String> l){ + int countDoublettes = 0; + SortedSet<String> differentIndividuals = new TreeSet<String>(); + for ( String file : l) { + ExampleContainer ec = new ExampleContainer( + SetManipulation.stringToInd(getIndividuals(file, true)), + SetManipulation.stringToInd(getIndividuals(file, false))); + differentIndividuals.addAll(getIndividuals(file, true)); + differentIndividuals.addAll(getIndividuals(file, false)); + if(!ExampleContainer.add(ec)){ + countDoublettes++; + } + } + logger.warn("found diff inds "+differentIndividuals.size()); + logger.warn("found doublettes " + countDoublettes); + } + + public static ExampleBasedROLComponent experimentalSetup(Experiments exp,SortedSet<Individual> posExamples, SortedSet<Individual> negExamples ){ + ExampleBasedROLComponent la = null; + if(exp.toString().contains("SPARQL")) + la = prepareSparqlExperiment(posExamples, negExamples); + else if(exp.toString().contains("NORMAL")){ + la = prepareNormalExperiment(posExamples, negExamples); + }else { + logger.error("undefined EXPERIMENT" + exp); + System.exit(0); + } + + ExampleBasedROLComponentConfigurator c = la.getConfigurator(); + + if(exp.toString().contains("10s")){ + c.setMaxExecutionTimeInSeconds(10); + c.setMinExecutionTimeInSeconds(10); + + }else if(exp.toString().contains("100s")){ + c.setMaxExecutionTimeInSeconds(100); + c.setMinExecutionTimeInSeconds(100); + + }else if(exp.toString().contains("1000_CONCEPT_TESTS")){ + c.setMaxClassDescriptionTests(1000); + }else if(exp.toString().contains("10000_CONCEPT_TESTS")){ + c.setMaxClassDescriptionTests(10000); + } //la.getConfigurator(); //appendtoFile return la; } + public static ExampleBasedROLComponent prepareSparqlExperiment(SortedSet<Individual> posExamples, SortedSet<Individual> negExamples){ @@ -234,6 +322,7 @@ ks.getConfigurator().setUseLits(true); ks.getConfigurator().setGetAllSuperClasses(true); ks.getConfigurator().setGetPropertyInformation(true); + ks.getConfigurator().setVerbosity("warning"); Set<KnowledgeSource> tmp = new HashSet<KnowledgeSource>(); tmp.add(ks); @@ -261,47 +350,136 @@ return la; } + public static ExampleBasedROLComponent prepareNormalExperiment(SortedSet<Individual> posExamples, SortedSet<Individual> negExamples){ + ExampleBasedROLComponent la = null; + try{ + SortedSet<Individual> instances = new TreeSet<Individual>(); + instances.addAll(posExamples); + instances.addAll(negExamples); + + URL fileURL = null; + try { + fileURL = new File(ontologyPath).toURI().toURL(); + } catch (MalformedURLException e) { + e.printStackTrace(); + flawInExperiment = true; + } + OWLFile ks = ComponentFactory.getOWLFile( fileURL); + + Set<KnowledgeSource> tmp = new HashSet<KnowledgeSource>(); + tmp.add(ks); + // reasoner + OWLAPIReasoner f = ComponentFactory + .getOWLAPIReasoner(tmp); + ReasoningService rs = ComponentManager.getInstance() + .reasoningService(f); + +// learning problem + PosNegDefinitionLP lp = ComponentFactory.getPosNegDefinitionLP(rs, + SetManipulation.indToString(posExamples), SetManipulation + .indToString(negExamples)); + + // learning algorithm + la = ComponentFactory.getExampleBasedROLComponent(lp, rs); + la.getConfigurator().setGuaranteeXgoodDescriptions(1); + Config c = new Config(ComponentManager.getInstance(), ks, f, rs, lp, la); + new ConfigSave(c).saveFile(new File(tmpFilename)); + + }catch (Exception e) { + e.printStackTrace(); + flawInExperiment = true; + } + return la; + } + public static void initAllComponents(){ ComponentManager cm = ComponentManager.getInstance(); + for(Component c : cm.getLiveComponents()){ try{ + SimpleClock time = new SimpleClock(); c.init(); + if (c instanceof SparqlKnowledgeSource) { + ksinitializationTime.addNumber((double) time.getTime()/1000); + + }else if (c instanceof OWLFile) { + ksinitializationTime.addNumber((double) time.getTime()/1000); + + }else if (c instanceof OWLAPIReasoner) { + reasonerInitializationTime.addNumber((double) time.getTime()/1000); + + } + }catch (Exception e) { e.printStackTrace(); flawInExperiment = true; } } + } - public static void writeLog(){ - String l = "\n\n\n*********************\n"; - l +="COUNT: "+accFragment.getCount()+"\n"; - l +="FRAGMENT: ALL: "+descHasAll+" BOOL: "+descHasBooleanData+" NOT: "+descHasNot+" <>=: "+descHasNrRes+"\n"; - l +="WHOLE: ALL: "+wholeHasAll+" BOOL: "+wholeHasBooleanData+" NOT: "+wholeHasNot+" <>=: "+wholeHasNrRes+"\n"; + public static void prepareTable(){ + t = new Table("sembib"); + String[] labString = new String[]{ + "count", + "accuracy on fragment(%)", + "accuracy on whole (%)", + "accuracy pos examples on whole (%)", + "accuracy neg examples on whole (%)", + "extraction/parsing time", + "reasoner initialization time", + "learning time", + "number of axioms", + "description length", + "description depth" + }; //9 + TableColumn labels = new TableColumn("Semantic Bible",labString); + t.addColumn(labels); + Table.serializeColumns(t, tableDir, tableFile); + Files.createFile(new File(tableLatex), t.getLatexString()); - - l+="accFragment\t\t"+accFragment.getMeanAsPercentage()+" +-"+accFragment.getStandardDeviation()+"\n"; - l+="accOnOnto\t\t"+accOnOnto.getMeanAsPercentage()+" +-"+accOnOnto.getStandardDeviation()+"\n"; - l+="accPosExOnOnto\t\t"+accPosExOnOnto.getMeanAsPercentage()+" +-"+accPosExOnOnto.getStandardDeviation()+"\n"; - l+="accNegExOnOnto\t\t"+accNegExOnOnto.getMeanAsPercentage()+" +-"+accNegExOnOnto.getStandardDeviation()+"\n"; - l+="timeFragment\t\t"+learningTime.getMean()+" +-"+learningTime.getStandardDeviation()+"\n"; - l+="nrOfExtractedTriples\t\t"+nrOfExtractedTriples.getMean()+" +-"+nrOfExtractedTriples.getStandardDeviation()+"\n"; - l+="dLengthFragment\t\t"+descLength.getMean()+" +-"+descLength.getStandardDeviation()+"\n"; - l+="dDepthFragment\t\t"+descDepth.getMean()+" +-"+descDepth.getStandardDeviation()+"\n"; + } + + public static void fillTable(Experiments exp, int count){ + String[] columnString = new String[]{ + count+"", + StringFormatter.convertStatPercentageToLatex(accFragment, 1, false, true), + StringFormatter.convertStatPercentageToLatex(accOnOnto, 1, false, true), + StringFormatter.convertStatPercentageToLatex(accPosExOnOnto, 1, false, true), + StringFormatter.convertStatPercentageToLatex(accNegExOnOnto, 1, false, true), + StringFormatter.convertStatDoubleToLatex(ksinitializationTime, 1, "", "s", true), + StringFormatter.convertStatDoubleToLatex(reasonerInitializationTime, 1, "", "s", true), + StringFormatter.convertStatDoubleToLatex(learningTime, 1, "", "s", true), + StringFormatter.convertStatDoubleToLatex(nrOfExtractedAxioms, 0, "", "", true), + StringFormatter.convertStatDoubleToLatex(descLength, 1, "", "", true), + StringFormatter.convertStatDoubleToLatex(descDepth, 1, "", "", true), + }; //9 + t.removeColumn(exp.toString()); + t.addColumn(new TableColumn(exp.toString(),columnString)); + Table.serializeColumns(t, tableDir, tableFile); + Files.createFile(new File(tableLatex), t.getLatexString()); - l+="timeWhole\t\t"+timeWhole.getMean()+" +-"+timeWhole.getStandardDeviation()+"\n"; - l+="accWhole\t\t"+accWhole.getMeanAsPercentage()+" +-"+accWhole.getStandardDeviation()+"\n"; - l+="dLengthWhole\t\t"+dLengthWhole.getMean()+" +-"+dLengthWhole.getStandardDeviation()+"\n"; - l+="dDepthWhole\t\t"+dDepthWhole.getMean()+" +-"+dDepthWhole.getStandardDeviation()+"\n"; - Files.appendFile(log, l); - -// write JaMON report in HTML file - File jamonlog = new File("sembib/jamon.html"); - Files.createFile(jamonlog, MonitorFactory.getReport()); - Files.appendFile(jamonlog, "<xmp>\n"+JamonMonitorLogger.getStringForAllSortedByLabel()); } + + + public static void reinitStat(){ + accFragment = new Stat(); + accOnOnto = new Stat(); + accPosExOnOnto = new Stat(); + accNegExOnOnto = new Stat(); + ksinitializationTime = new Stat(); + reasonerInitializationTime = new Stat(); + learningTime = new Stat(); + nrOfExtractedAxioms = new Stat(); + descLength = new Stat(); + descDepth = new Stat(); + } + + + + public static EvaluatedDescription reEvaluateDescription(Description d, SortedSet<Individual> retrieved ,SortedSet<Individual> posEx ,SortedSet<Individual> negEx ){ SortedSet<Individual> PosAsPos = new TreeSet<Individual>(); SortedSet<Individual> PosAsNeg = new TreeSet<Individual>(); @@ -452,17 +630,7 @@ return ret; }*/ -/*public static void analyzeFiles(List<File> l){ - - SortedSet<String> differentIndividuals = new TreeSet<String>(); - for ( content : l) { - differentIndividuals.addAll(getIndividuals(content, true)); - differentIndividuals.addAll(getIndividuals(content, false)); - - } - System.out.println("found diff inds "+differentIndividuals.size()); - -}*/ + } Modified: trunk/src/dl-learner/org/dllearner/utilities/StringFormatter.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/StringFormatter.java 2008-09-26 13:18:07 UTC (rev 1268) +++ trunk/src/dl-learner/org/dllearner/utilities/StringFormatter.java 2008-09-26 15:07:32 UTC (rev 1269) @@ -1,6 +1,11 @@ package org.dllearner.utilities; +import java.io.File; +import java.text.DecimalFormat; +import org.dllearner.utilities.statistics.Stat; + + public class StringFormatter { @@ -10,16 +15,113 @@ * @param d */ public static String doubleToPercent(double d){ - if(d>1.0 || d<0.0)return "bad format: "+d; - else if(d == 1.0){ - return "100.0%"; - }else if(d == 0.0 ){ - return "0.0%"; - }else { - String acc = (d*100)+""; - acc = acc.substring(0,"55.5".length()); - return acc+"%"; + return doubleToPercent( d, 1, true); + } + + public static String doubleToPercent(double d, int decimals){ + + return doubleToPercent( d, decimals, true); + + } + + public static String doubleToPercent(double d, int decimals, boolean addPercentSign){ + + String format = (decimals==0)?"00":"."; + for (int i = 0; i < decimals; i++) { + format += "0"; + } + format+="%"; + DecimalFormat df = new DecimalFormat( format ); + String ret = df.format(d); + ret = (addPercentSign)?ret:ret.replaceAll("%", ""); + return ret; + + } + + public static String doubleRound(double d, int decimals, String before, String after){ + String ret =""; + if(decimals==0){ + int retInt = (int) Math.floor((d+0.5)); + ret = retInt+""; + }else{ + String format = "."; + for (int i = 0; i < decimals; i++) { + format += "0"; } + + DecimalFormat df = new DecimalFormat( format ); + ret = df.format(d); + ret = ret.replaceAll("%", ""); + } + ret = before + ret+ after; + return ret; } + + public static String convertStatPercentageToLatex(Stat s, + int decimals, + boolean addPercentSign, + boolean includeSTDDeviation){ + String ret =""; + + ret = doubleToPercent(s.getMean(), decimals, addPercentSign); + ret = ret.replaceAll("%", "\\%"); + if(includeSTDDeviation){ + ret += " ($\\pm$"+doubleToPercent(s.getStandardDeviation(), decimals, false)+")"; + } + return ret; + } + + public static String convertStatDoubleToLatex(Stat s, + int decimals, + boolean includeSTDDeviation){ + return convertStatDoubleToLatex(s, decimals,"","",includeSTDDeviation); + } + + + public static String convertStatDoubleToLatex(Stat s, + int decimals, + String before, + String after, + boolean includeSTDDeviation){ + String ret =""; + + ret = doubleRound(s.getMean(), decimals, before, after); + + if(includeSTDDeviation){ + ret += doubleRound(s.getStandardDeviation(), decimals," ($\\pm$", after+")" ); + } + return ret; + } + + + + + + public static void main(String[] args) { + double d = 0.55555; + System.out.println(doubleToPercent(d, 0)); + System.out.println(doubleToPercent(d, 1)); + System.out.println(doubleToPercent(d, 2)); + System.out.println(doubleToPercent(d, 3)); + System.out.println(doubleToPercent(d, 0, false)); + System.out.println(doubleToPercent(d, 1, false)); + System.out.println(doubleToPercent(d, 2, false)); + System.out.println(doubleToPercent(d, 3, false)); + d= 55.55555; + System.out.println(doubleRound(d, 0, "|", "|")); + System.out.println(doubleRound(d, 1, "|", "|")); + System.out.println(doubleRound(d, 2, "|", "|")); + System.out.println(doubleRound(d, 3, "|", "|")); + + } + + public static String checkIfDirEndsOnSlashAndRemove(String dir){ + if(dir.endsWith(File.separator)){ + dir=dir.substring(0,dir.length()-File.separator.length()); + } + return dir; + } + + } Modified: trunk/src/dl-learner/org/dllearner/utilities/examples/ExampleContainer.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/examples/ExampleContainer.java 2008-09-26 13:18:07 UTC (rev 1268) +++ trunk/src/dl-learner/org/dllearner/utilities/examples/ExampleContainer.java 2008-09-26 15:07:32 UTC (rev 1269) @@ -51,6 +51,12 @@ } + /** + * adds to a global example repository. + * returns false, if the set is contained already + * @param e + * @return + */ public static boolean add(ExampleContainer e){ return exampleSets.add(e); } Modified: trunk/src/dl-learner/org/dllearner/utilities/statistics/SimpleClock.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/statistics/SimpleClock.java 2008-09-26 13:18:07 UTC (rev 1268) +++ trunk/src/dl-learner/org/dllearner/utilities/statistics/SimpleClock.java 2008-09-26 15:07:32 UTC (rev 1269) @@ -85,6 +85,10 @@ setTime(); } + /** + * returns the needed time up to now in ms + * @return + */ public long getTime() { long now = System.currentTimeMillis(); return now - time; Modified: trunk/src/dl-learner/org/dllearner/utilities/statistics/Table.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/statistics/Table.java 2008-09-26 13:18:07 UTC (rev 1268) +++ trunk/src/dl-learner/org/dllearner/utilities/statistics/Table.java 2008-09-26 15:07:32 UTC (rev 1269) @@ -26,6 +26,7 @@ import java.util.List; import org.dllearner.utilities.Files; +import org.dllearner.utilities.StringFormatter; /** @@ -117,7 +118,16 @@ else return columns.get(0).getSize(); } + public void removeColumn(String header){ + for (int i = 0; i < columns.size(); i++) { + if(columns.get(i).getHeader().equals(header)){ + columns.remove(i); + return; + } + } + } + public List<String> getColumnHeaders(){ List<String> entries = new ArrayList<String>(); for (TableColumn c : columns) { @@ -169,6 +179,7 @@ public static void serializeColumns(Table t, String dir, String tableFile){ String column = "column"; String content = ""; + dir = StringFormatter.checkIfDirEndsOnSlashAndRemove(dir); Files.mkdir(dir); try{ int i=0; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2008-10-06 17:29:07
|
Revision: 1345 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1345&view=rev Author: jenslehmann Date: 2008-10-06 16:46:14 +0000 (Mon, 06 Oct 2008) Log Message: ----------- - some results of unit tests - changed System.out.println in SparqlQuery to logger.trace Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java trunk/src/dl-learner/org/dllearner/test/junit/ExampleTests.java Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java 2008-10-06 16:31:24 UTC (rev 1344) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java 2008-10-06 16:46:14 UTC (rev 1345) @@ -123,7 +123,7 @@ logger.trace("query executed, converting to json"); json = SparqlQuery.convertResultSetToJSON(ResultSetFactory.makeRewindable(rs)); - System.out.println(json); + logger.trace(json); //writeToSparqlLog("JSON: " + json); //}catch (ResultSetException e) { } catch (HTTPException e) { Modified: trunk/src/dl-learner/org/dllearner/test/junit/ExampleTests.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/junit/ExampleTests.java 2008-10-06 16:31:24 UTC (rev 1344) +++ trunk/src/dl-learner/org/dllearner/test/junit/ExampleTests.java 2008-10-06 16:46:14 UTC (rev 1345) @@ -86,7 +86,7 @@ ignore.add("./examples/family/father_posonly.conf"); // ArrayOutOfBoundsException in Pellet - main problem: pos only not working ignore.add("./examples/sparql/difference/DBPediaSKOS_kohl_vs_angela.conf"); // Pellet: literal cannot be cast to individual ignore.add("./examples/family-benchmark/Aunt.conf"); // did not terminate so far (waited 45 minutes) - + for (String path : confFiles.keySet()) { for (String file : confFiles.get(path)) { String conf = path + file + ".conf"; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <Jen...@us...> - 2008-10-09 13:14:15
|
Revision: 1354 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1354&view=rev Author: JensLehmann Date: 2008-10-09 13:14:10 +0000 (Thu, 09 Oct 2008) Log Message: ----------- component unit test fixes Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/algorithms/SimpleSuggestionLearningAlgorithm.java trunk/src/dl-learner/org/dllearner/gui/TreeWindow.java trunk/src/dl-learner/org/dllearner/learningproblems/PosNegInclusionLP.java trunk/src/dl-learner/org/dllearner/learningproblems/PosOnlyInclusionLP.java Modified: trunk/src/dl-learner/org/dllearner/algorithms/SimpleSuggestionLearningAlgorithm.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/SimpleSuggestionLearningAlgorithm.java 2008-10-09 12:58:58 UTC (rev 1353) +++ trunk/src/dl-learner/org/dllearner/algorithms/SimpleSuggestionLearningAlgorithm.java 2008-10-09 13:14:10 UTC (rev 1354) @@ -36,8 +36,8 @@ import org.dllearner.core.owl.Thing; /** - * TODO: Javadoc - * TODO: Extend such that it can really be used as learning algorithm. + * Algorithm for getting "simple" suggestions, e.g. it tests some of the most likely candidates on whether + * they are solutions of a learning problem. * * @author Christian Kötteritzsch * @@ -70,6 +70,10 @@ return new EvaluatedDescription(bestSollution, solutionScore); } + public static String getName() { + return "simple suggestion algorithm"; + } + @Override public void stop() { // stop = true; Modified: trunk/src/dl-learner/org/dllearner/gui/TreeWindow.java =================================================================== --- trunk/src/dl-learner/org/dllearner/gui/TreeWindow.java 2008-10-09 12:58:58 UTC (rev 1353) +++ trunk/src/dl-learner/org/dllearner/gui/TreeWindow.java 2008-10-09 13:14:10 UTC (rev 1354) @@ -71,7 +71,7 @@ this.ebNodeModel = new EBNodeTreeModel(rootNode); // childrens to treeModel - Object first = ebNodeModel.getChild(rootNode, 0); +// Object first = ebNodeModel.getChild(rootNode, 0); // System.out.println("getIndexOfChild: " + ebNodeModel.getIndexOfChild(rootNode, first)); // System.out.println("childs2: " + Modified: trunk/src/dl-learner/org/dllearner/learningproblems/PosNegInclusionLP.java =================================================================== --- trunk/src/dl-learner/org/dllearner/learningproblems/PosNegInclusionLP.java 2008-10-09 12:58:58 UTC (rev 1353) +++ trunk/src/dl-learner/org/dllearner/learningproblems/PosNegInclusionLP.java 2008-10-09 13:14:10 UTC (rev 1354) @@ -83,7 +83,7 @@ * @see org.dllearner.core.Component#getName() */ public static String getName() { - return "inclusion learning problem"; + return "two valued inclusion learning problem"; } Modified: trunk/src/dl-learner/org/dllearner/learningproblems/PosOnlyInclusionLP.java =================================================================== --- trunk/src/dl-learner/org/dllearner/learningproblems/PosOnlyInclusionLP.java 2008-10-09 12:58:58 UTC (rev 1353) +++ trunk/src/dl-learner/org/dllearner/learningproblems/PosOnlyInclusionLP.java 2008-10-09 13:14:10 UTC (rev 1354) @@ -44,6 +44,15 @@ this.configurator = new PosOnlyInclusionLPConfigurator(this); } + /* + * (non-Javadoc) + * + * @see org.dllearner.core.Component#getName() + */ + public static String getName() { + return "pos only inclusion learning problem"; + } + /* (non-Javadoc) * @see org.dllearner.core.LearningProblemNew#computeScore(org.dllearner.core.dl.Concept) */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |