@[C:\Users\Chris\my excel file.xls]
![MS Excel Workbook]
#created:01/03/2019 #filesize:120kb
#worksheet: @[Sheet 1]
#worksheet: @[Sheet 2]
#worksheet: @[Sheet 3]
I think a system like this could be used to create the Itemized OS that Alexander Obenauer writes about, on top of the OSes that we already have.Kartik Agaram
05/23/2022, 10:00 PMChris Knott
05/24/2022, 6:22 AM?var
notation for this which actually fits with the rest of the syntax neatly.
I was planning to use something like this for the functional calculation side, like;
@Chris
!Person
#email:chris@chris.com
#email:chris@other.com
#sent-emails:?[Chris's sent emails]
?[Chris's sent emails]
!Email <- filter to !Email's
?[Chris email address] = @Chris #email
#from:?[Chris email address] <-- filter using var
?[Chris email recipients]
?addr = ?[Chris's sent emails] #to
#email: ?addr
I haven't really thought it through properly, I just wanted to actually try out some of the things I had been discussing in the mentioned threadsJack Rusher
05/24/2022, 7:14 AM@prefix : <<http://example.org/elements>> .
<<http://en.wikipedia.org/wiki/Helium>>
:atomicNumber 2 ; # xsd:integer
:atomicMass 4.002602 ; # xsd:decimal
:specificGravity 1.663E-4 . # xsd:double
Chris Knott
05/24/2022, 7:47 AM#sibling: @Bart
Is translated to the following Cypher query (it would be similar in SPARQL);
match (v_: Entity {{name:"Bart"}})
match p_v = ((v:Entity)-[:IMPLIES*0..]->(v_))
with distinct v, [m in nodes(p_v) where 'Context' in labels(m)] as contexts
match (k_:Attribute {name:"sibling"})
match p_k = ((k:Attribute)-[:IMPLIES*0..]->(k_))
with distinct v, k, [m in nodes(p_k) where 'Context' in labels(m)]+contexts as contexts
match (k)-[:VALUE]->(c:Context)-[:VALUE]->(v),
(c)-[:CONTEXT]->(n:Entity)
with distinct n, contexts
where size(contexts) = 0 or
all(c in contexts where exists((c)-[:CONTEXT]->()<-[:IMPLIES*0..]-()<-[:CATEGORY|ATTRIBUTE*0..1]-()<-[:IMPLIES*0..]-(n)))
return distinct n
Which is not reasonable for a user to write.Konrad Hinsen
05/24/2022, 8:12 AMChris Knott
05/24/2022, 8:30 AM@Bart
and @[Bart Simpson]
are separate entities, marking it as synonymous just allows them to be switched in/out in a query. This was meant to be like Wikipedia titles. The canonical title will be something globally unique like "Queen Victoria (British monarch)", "Victoria (Australian state)", but will typically be referred to by a name ("Victoria") which is only contextually unique. This was my attempt to reflect how humans use names, but without introducing too much "magic" on the computer side.
A dumb example that might be more clearer of the point of this feature;
@[My front door]
!Door
#closed
@[My garden door]
!Door
#not-open
@[Half open interval [0, 1)]
![Subset of the Reals]
#not-open #not-closed
!Door
#not-open = #closed
Then the query #closed
with return the two doors, but not the set, because the rule #not-open = #closed
does not apply in the context of !Set
, only !Door
.Jack Rusher
05/24/2022, 8:39 AM(query `{:select [?siblingLabel]
:where [[~(entity "Bart Simpson") ~(wdt :sibling) ?sibling]]})
;;=>
[{:siblingLabel "Lisa Simpson"}
{:siblingLabel "Maggie Simpson"}
{:siblingLabel "Hugo Simpson"}]
My own note-taking system includes a bunch of semantic web/GOFAI stuff, but also uses neural nets, &c. I strongly encourage this line of inquiry! 🙂 But I also wanted to give you some advice from farther down this road.Chris Knott
05/24/2022, 8:41 AMKartik Agaram
05/24/2022, 1:39 PMJack Rusher
05/24/2022, 3:51 PM