Genifer GUI ready (sort-of)

19 views
Skip to first unread message

YKY (Yan King Yin, 甄景贤)

unread,
May 26, 2012, 10:57:25 AM5/26/12
to codea...@googlegroups.com, peter, Cheng Joseph, S H, general-in...@googlegroups.com
You can now enter English (or any natural-language) sentences visually using the GUI.

A few screen shots:

"We haven't got that spirit here since 1969"

Inline image 3

"They stab it with their steely knives"

Inline image 2

Chinese:  "过往 概 一切 都 似 梦"

Inline image 4

This is the cheat sheet:

Inline image 1

The explanations may be inadequate.  I want to know if it is easy for lay people to use the interface.  Let me know if anything is unclear =)

PS:  it's not hosted on a server yet...
Code on Github:
--
KY
"The ultimate goal of mathematics is to eliminate any need for intelligent thought" -- Alfred North Whitehead

image.png
image.png
image.png
image.png

Jean-Marc Vanel

unread,
May 26, 2012, 11:29:07 AM5/26/12
to general-in...@googlegroups.com, Arié Benichou, Cyril Hansen, Ruset Zeno
Hi YKY

Nice work.
I was able to run it in 2mn :

git clone https://github.com/automenta/genifer-java.git
cd  genifer-java ..
ant
java -jar  dist/genifer-java.jar
# open http://localhost:9090/


An Automatic layout of the graph would be useful.
There are algos with elastic links and repulsive short range forces .

What the GUI does with 2 sentences is not satisfying.
I tried:
KY is a good programmer.
The governement creates a new policy.

Then, after moving some nodes, I found several nodes unconnected .

Also, my understanding is that the user must first push "Tokenize" then "Make Formula" .
So either have only one button, or at the minimum button "Make Formula" runs "Tokenize" first .

2012/5/26 YKY (Yan King Yin, 甄景贤) <generic.in...@gmail.com>



--
Jean-Marc Vanel
Déductions SARL - Consulting, services, training,
Rule-based programming, Semantic Web
http://jmvanel.free.fr/ - EulerGUI, a turntable GUI for Semantic Web + rules, XML, UML, eCore, Java bytecode
+33 (0)6 89 16 29 52
chat :  irc://irc.freenode.net#eulergui
image.png
image.png
image.png
image.png

YKY (Yan King Yin, 甄景贤)

unread,
May 26, 2012, 11:45:12 AM5/26/12
to general-in...@googlegroups.com, Arié Benichou, Cyril Hansen, Ruset Zeno
On Sat, May 26, 2012 at 11:29 PM, Jean-Marc Vanel <jeanmar...@gmail.com> wrote:
Hi YKY

Nice work.
I was able to run it in 2mn :

git clone https://github.com/automenta/genifer-java.git
cd  genifer-java ..
ant
java -jar  dist/genifer-java.jar
# open http://localhost:9090/


An Automatic layout of the graph would be useful.
There are algos with elastic links and repulsive short range forces .

Yes, that's on the to-do =)
 
What the GUI does with 2 sentences is not satisfying.
I tried:
KY is a good programmer.
The governement creates a new policy.

Then, after moving some nodes, I found several nodes unconnected .

The intention is, you must enter only 1 logical statement at a time.  An atomic proposition is the minimal entity that can have a truth value.  Anything beyond that must be connected by special connectives for propositions, such as the /\ and \/ that we're most familiar with.

Also, my understanding is that the user must first push "Tokenize" then "Make Formula" .

The procedure is:
1.  type English sentence in text box
2.  press "tokenize" to generate the nodes
3.  arrange nodes and links to satisfaction
4.  press "make formula"

KY

YKY (Yan King Yin, 甄景贤)

unread,
May 26, 2012, 12:21:40 PM5/26/12
to codea...@googlegroups.com, peter, Cheng Joseph, S H, general-in...@googlegroups.com
PS:  forgot the credits:  the code base was created by Seh , he's been building GUIs for several A.I.'s for a long time =)

Joseph Cheng has also started to work on the front end and we'll see his work soon =)

YKY (Yan King Yin, 甄景贤)

unread,
May 29, 2012, 10:20:31 PM5/29/12
to general-in...@googlegroups.com, Jean-Marc Vanel
Hey Jean-Marc (and others):

I have a question -- is it possible to use an existing ontology without actually storing the ontology data in Genifer's KB?  Would the 3rd-party ontology be served over the net?  Or we install it locally at our server, so Genifer talks to it locally?  The access speed must be fast because a lot of inference depends on it...

If this is feasible, can free up more space for Genifer's own KB...

KY

Matt Mahoney

unread,
May 30, 2012, 1:23:56 PM5/30/12
to general-in...@googlegroups.com
On Tue, May 29, 2012 at 10:20 PM, YKY (Yan King Yin, 甄景贤)
<generic.in...@gmail.com> wrote:
> Hey Jean-Marc (and others):
>
> I have a question -- is it possible to use an existing ontology without
> actually storing the ontology data in Genifer's KB?  Would the 3rd-party
> ontology be served over the net?  Or we install it locally at our server, so
> Genifer talks to it locally?  The access speed must be fast because a lot of
> inference depends on it...

Wouldn't an ontology have to be learned from the environment?


-- Matt Mahoney, mattma...@gmail.com

Jean-Marc Vanel

unread,
May 30, 2012, 1:46:56 PM5/30/12
to general-in...@googlegroups.com
2012/5/30 Matt Mahoney <mattma...@gmail.com>:
> On Tue, May 29, 2012 at 10:20 PM, YKY (Yan King Yin, 甄景贤)
> <generic.in...@gmail.com> wrote:
>> Hey Jean-Marc (and others):
>>
>> I have a question -- is it possible to use an existing ontology without
>> actually storing the ontology data in Genifer's KB?  Would the 3rd-party
>> ontology be served over the net?  Or we install it locally at our server, so
>> Genifer talks to it locally?  The access speed must be fast because a lot of
>> inference depends on it...

An ontology is not necessarily big, but I cannot imagine how to use it
without having it in the KB.
What I'm doing in my project (EulerGUI) is using generic rules in N3
language for the OWL 2 RL (large) subset of OWL.
These generic rules work by interpreting domain specific ontologies and facts .

Here is a sample of these rules:

{?P @has owl:inverseOf ?Q. ?S ?P ?O} => {?O ?Q ?S}.
{?P @has rdf:type owl:SymmetricProperty. ?S ?P ?O} => {?O ?P ?S}.

{?P @has rdf:type owl:TransitiveProperty. ?X ?P ?O. ?S ?P ?X} => {?S ?P ?O}.

{?R @has owl:onProperty ?P; owl:hasValue ?Y. ?X a ?R} => {?X ?P ?Y}.

{?P @has rdf:type owl:InverseFunctionalProperty. ?X ?P ?O. ?Y ?P ?O}
=> {?X owl:sameAs ?Y}.
{?P @has rdf:type owl:FunctionalProperty. ?S ?P ?X. ?S ?P ?Y} => {?X
owl:sameAs ?Y}.
{?L rdf:first ?A; rdf:rest ?B. ?M rdf:first ?C; rdf:rest ?D. ?A
owl:sameAs ?C. ?B owl:sameAs ?D} => {?L owl:sameAs ?M}.
{?C1 @has owl:equivalentClass ?A. ?A owl:onProperty ?P1;
owl:someValuesFrom ?C3. ?P1 @has rdfs:domain ?C1; @has rdfs:range ?C3;
@has rdf:type owl:FunctionalProperty; owl:inverseOf ?P9. ?C1 @has
owl:equivalentClass ?B. ?B owl:onProperty ?P3; owl:someValuesFrom ?C5.
?P3 @has rdfs:domain ?C1; @has rdfs:range ?C5; @has rdf:type
owl:FunctionalProperty; owl:inverseOf ?P7. ?C5 @has
owl:equivalentClass ?C. ?C owl:onProperty ?P2; owl:someValuesFrom ?C3.
?P2 @has rdfs:domain ?C5; @has rdfs:range ?C3; @has rdf:type
owl:FunctionalProperty; owl:inverseOf ?P8. ?C5 @has
owl:equivalentClass ?D. ?D owl:onProperty ?P7; owl:cardinality ?X1.
?X1 @has owl:sameAs ?Y1. ?C3 @has owl:equivalentClass ?F. ?F
owl:onProperty ?P8; owl:cardinality ?X2. ?X2 @has owl:sameAs ?Y2. ?C3
@has owl:equivalentClass ?G. ?G owl:onProperty ?P9; owl:cardinality
?X3. ?C3 @has owl:oneOf ?E. ?E rdf:first ?Z; rdf:rest rdf:nil. (?Y1
?Y2) math:product ?Z3. ?Z3 math:equalTo ?Y3} => {?X3 owl:sameAs ?Y3}.
{?C1 @has owl:equivalentClass ?A. ?A owl:onProperty ?P1;
owl:someValuesFrom ?C3. ?P1 @has rdfs:domain ?C1; @has rdfs:range ?C3;
@has rdf:type owl:FunctionalProperty; owl:inverseOf ?P9. ?C1 @has
owl:equivalentClass ?B. ?B owl:onProperty ?P3; owl:someValuesFrom ?C5.
?P3 @has rdfs:domain ?C1; @has rdfs:range ?C5; @has rdf:type
owl:FunctionalProperty; owl:inverseOf ?P7. ?C5 @has
owl:equivalentClass ?C. ?C owl:onProperty ?P2; owl:someValuesFrom ?C3.
?P2 @has rdfs:domain ?C5; @has rdfs:range ?C3; @has rdf:type
owl:FunctionalProperty; owl:inverseOf ?P8. ?C5 @has
owl:equivalentClass ?D. ?D owl:onProperty ?P7; owl:cardinality ?X1.
?C3 @has owl:equivalentClass ?F. ?F owl:onProperty ?P8;
owl:cardinality ?X2. ?C3 @has owl:equivalentClass ?G. ?G
owl:onProperty ?P9; owl:cardinality ?X3. ?X3 @has owl:sameAs ?Y3. ?C3
@has owl:oneOf ?E. ?E rdf:first ?Z; rdf:rest rdf:nil. ?O @has
owl:oneOf ?L1. ?L1 :item ?X1, ?X2. ?O @has owl:oneOf ?L2. ?L2 :item
?Z1, ?Z2. (?Y3 ?Y2) math:integerQuotient ?Y1} => {?Z2 owl:sameAs ?Y2}.

{?X log:notEqualTo ?Y. ?A owl:distinctMembers ?L. ?L :item ?X, ?Y} =>
{?X owl:differentFrom ?Y}.
{?A @has owl:disjointWith ?B. ?X a ?A. ?Y a ?B } => {?X owl:differentFrom ?Y}.

{?A rdfs:subPropertyOf ?B. ?B rdfs:subPropertyOf ?A} => {?A
owl:equivalentProperty ?B}.

{?A owl:inverseOf ?C. ?B owl:inverseOf ?C} => {?A rdfs:subPropertyOf ?B}.


The rest is here :
https://eulersharp.svn.sourceforge.net/svnroot/eulersharp/trunk/2003/03swap/owl-rules.n3

> Wouldn't an ontology have to be learned from the environment?

That's a good idea.
On the other hand, the environment today includes data sources coming
with their ontologies, like dbpedia and all the rest in the Linked
Open Data:
http://linkeddata.org/

>
> -- Matt Mahoney, mattma...@gmail.com

james northrup

unread,
May 30, 2012, 3:57:05 PM5/30/12
to general-in...@googlegroups.com
On Wed, May 30, 2012 at 10:46 AM, Jean-Marc Vanel <jeanmar...@gmail.com> wrote:
2012/5/30 Matt Mahoney <mattma...@gmail.com>:
> On Tue, May 29, 2012 at 10:20 PM, YKY (Yan King Yin, 甄景贤)
> <generic.in...@gmail.com> wrote:
>> Hey Jean-Marc (and others):
>>
>> I have a question -- is it possible to use an existing ontology without
>> actually storing the ontology data in Genifer's KB?  Would the 3rd-party
>> ontology be served over the net?  Or we install it locally at our server, so
>> Genifer talks to it locally?  The access speed must be fast because a lot of
>> inference depends on it...

An ontology is not necessarily big, but I cannot imagine how to use it
without having it in the KB. 

consider c macros as a primer to this notion. 

YKY (Yan King Yin, 甄景贤)

unread,
May 31, 2012, 4:03:17 AM5/31/12
to general-in...@googlegroups.com
On Thu, May 31, 2012 at 1:46 AM, Jean-Marc Vanel <jeanmar...@gmail.com> wrote:
An ontology is not necessarily big, but I cannot imagine how to use it
without having it in the KB.
What I'm doing in my project (EulerGUI) is using generic rules in N3
language for the OWL 2 RL (large) subset of OWL.
These generic rules work by interpreting domain specific ontologies and facts .

Here is a sample of these rules:  [...]


Thanks, I'm surprised that the axioms are very abstract and general, and they can define foundational mathematics.  Inference in such systems could be intractable, I wonder how they deal with this.

Perhaps Genifer can read one of those ontologies and internalize it.  Some minor translations of keywords or operators may be needed.

KY

james northrup

unread,
Jun 4, 2012, 7:51:47 AM6/4/12
to general-in...@googlegroups.com
wouldn't learning an error rate for happenstance machine-readable kb's take off slightly faster ?
 

Matt Mahoney

unread,
Jun 4, 2012, 8:22:29 AM6/4/12
to general-in...@googlegroups.com
What do you mean by "take off"?


--
-- Matt Mahoney, mattma...@gmail.com

james northrup

unread,
Jun 4, 2012, 6:26:45 PM6/4/12
to general-in...@googlegroups.com
>> > Genifer talks to it locally?  The access speed must be fast because a
>> > lot of
>> > inference depends on it...
>>
>> Wouldn't an ontology have to be learned from the environment?
>
> wouldn't learning an error rate for happenstance machine-readable kb's take
> off slightly faster ?
>

What do you mean by "take off"?

'take off' to mean gain momentum in a number of ways, with simpler goals, greater available resources and access to data and humans who have guided the creation of the machine readable parts and the supporting programs.

the humans will certainly learn the ontology the program needs to learn or be unable to justify its success and continued funding.

Matt Mahoney

unread,
Jun 4, 2012, 8:11:01 PM6/4/12
to general-in...@googlegroups.com
I thought you meant "take off" in reference to launching a
singularity. But I don't think there is any danger of that.
Reply all
Reply to author
Forward
0 new messages