rdf

2020-03-19T16:47:57.000700Z

Reposting here from #announcements :

2020-03-19T16:48:00.000900Z

https://github.com/ont-app/igraph

2020-03-19T16:49:01.002100Z

:thumbsup: @eric.d.scott I’m curious what your plans for the above and the other ont-app projects. It seems like you’re taking similar approaches, or at least trying to solve some of the same problems as myself

2020-03-19T16:51:18.004300Z

Well, the motivation for the project is that I think there could be a really good fit between clojure's functional programming paradigm and graph-based representations that use a ontology-driven approach.

2020-03-19T16:52:37.005800Z

I spent several years working in Python with semantic technologies, and when I came back to Clojure, I had this feeling that S-P-O-type graphs could make a really expressive sort of 'super-map'

2020-03-19T16:53:12.006700Z

> S-P-O-type graphs could make a really expressive sort of ‘super-map’ This is definitely my experience too. It’s why I wrote matcha

2020-03-19T16:55:04.009Z

Also I think other people have had similar ideas; cgrand spoke about this at clojurex last year — IIRC he called it “map fatigue”, and was suggesting datalog approaches. Obviously not a new idea, e.g. datomic/datascript particularly in the browser etc. Datalog is almost sparql though right?

👆 1
2020-03-19T16:55:57.009900Z

need to go AFK for 10-15mins be back soon though

2020-03-19T16:56:43.010600Z

Yes I remember seeing Matcha and making a mental note to revisit it after I finished my thought with igraph.

2020-03-19T16:58:33.012500Z

I'm kind of looking for a common abstraction over a whole range of graph-based representations. Right now I'm in the early stages of sussing out an approach to neo4j.

2020-03-19T17:03:43.013800Z

At some point, I'm hoping that some common approach can be developed for bringing all these disparate query languages under the same tent.

2020-03-19T17:10:28.014600Z

I guess the talk you're referring to is described here:

2020-03-19T17:28:02.015600Z

> At some point, I’m hoping that some common approach can be developed for bringing all these disparate query languages under the same tent. This is what I don’t really understand; for what purpose?

2020-03-19T17:29:04.015700Z

yes that’s the one

2020-03-19T17:32:00.017400Z

The idea of this protocol is to serve as an abstraction over a variety of graph implementations.

2020-03-19T17:32:18.018Z

Main usecase matcha was made for is to provide BGP queries over in memory RDF graphs. Typically we use it to after CONSTRUCT ing a subset of graph data from the triplestore with sparql; then we throw it into a matcha graph; and query that model a bunch of times to build out a UI/tree.

2020-03-19T17:33:35.019900Z

But what kind of libraries or applications want that portability?

quoll 2020-03-26T21:49:08.000600Z

Naga was written specifically to be agnostic over databases like that. (The original goal was to switch between Datomic and SPARQL, and expand from there)

quoll 2020-03-26T21:49:10.000800Z

Sorry for the late response. I don’t look at the Clojurians slack very frequently.

2020-03-19T17:33:38.020Z

The various IFn forms allow some degree of generalization, but if you want to take a common view of datomic-based and say Wikidata-based content, you have to write datalog for one and SPARQL for the other.

2020-03-19T17:37:37.022200Z

The domain-driven- and behavior-driven-development folks talk a lot of about "Ubiquitous Vocabulary". A lot of what's driving my thinking here is that there could be an ontology-driven approach to development where that vocabulary takes the form of an ontology.

✔️ 1
2020-03-19T17:41:34.025900Z

So the idea is that you sit down with your domain expert and systematically name the pertinent set of collections and relationships, but instead of parlaying that into a set of Java classes, you use this vocabulary to describe your application state as a graph or perhaps a set of graphs.

2020-03-19T17:42:25.026900Z

RDF graphs make sense for many cases, but say, Datomic and Neo4j make sense for others.

2020-03-19T17:43:51.028800Z

There may even be advantages to viewing table-based data or web APIs using the same basic abstraction.

Ivan 2020-03-19T17:46:10.032100Z

the way I view things, if you have such an encoding in RDF, you can then model -on top of it- graph relations or other types of relations. How e-a-v is ordered and indexed makes this possible.

2020-03-19T17:47:11.033100Z

Would this involve translating your e-a-v data into a triple store?

2020-03-19T17:50:20.034500Z

@eric.d.scott Sure. I don’t disagree with any of that, though I’m not sure I understand whats special about the approach. If you were doing it in an RDBMS, you’d just model the the vocabulary in tables and foreign keys. Isn’t it natural that if you were to do it in RDF you’d coin an ontology? Or do you see it more the other way round, bringing Ontologies to non-RDF systems?

2020-03-19T17:51:18.034700Z

Yes, bringing ontologies to non-RDF systems.

2020-03-19T17:53:07.034900Z

ok cool… next question: What do you think ontologies bring to these other systems? They typically have some form of schema already — which is more or less equivalent.

2020-03-19T17:53:52.035200Z

open world modelling assumption?

2020-03-19T17:54:24.035500Z

globally shared, namespaced property identifiers?

2020-03-19T17:54:47.035700Z

access to existing RDF vocabularies/ontologies?

2020-03-19T17:55:34.036200Z

Yes, the primary benefit here is I think the expressiveness of a common, public vocabulary.

👍 1
2020-03-19T17:57:17.037500Z

Speaking of the OWA, I wonder if a better alternative might be in many cases to just publish your close-world data as an immutable graph, then leave it to me to decide whether and how to use that data as a resource.

2020-03-19T17:58:16.038100Z

The hoops that OWL makes you jump through in order to support the OWA add a lot of friction to the whole process.

2020-03-19T17:59:02.038500Z

I remember going to a conference a few years back, and Peter Norvig was the invited speaker. The subject of RDF came up in the context of Knowledge Graphs.

Ivan 2020-03-19T17:59:05.038700Z

What I understand that you're talking about is a generic interface that gives you the ability to plug into different systems to manipulate the data. Which, in other words, means that the data are "viewed" in different formats by the (db) systems, but can be manipulated in other formats, too - because this generic interface allows for this. Which in turn reminds me of the "Polyglot Data" talk by Greg Young - ie, the database system is a projection of the data; data can have multiple projections but only a single source.

👍 1
2020-03-20T12:38:05.052900Z

Thanks @ivan.kanak_clojurians, that was a good talk.

2020-03-19T17:59:19.038800Z

haha I’ve heard this story I think…

2020-03-19T17:59:33.039Z

semantic web is always X years away?

2020-03-19T17:59:41.039200Z

He said something to the effect that he wouldn't feel right making his engineers wrap their heads around OWL.

2020-03-19T18:00:34.039400Z

When the head of research for Google doesn't want to subject his engineers to your technology, I think that's significant.

2020-03-19T18:01:53.039600Z

> Speaking of the OWA, I wonder if a better alternative might be in many cases to just publish your close-world data as an immutable graph, then leave it to me to decide whether and how to use that data as a resource. > The hoops that OWL makes you jump through in order to support the OWA add a lot of friction to the whole process. Indeed. I think in practice that’s what most people do already though. Almost all real applications want to make some closed world assumptions about the data.

2020-03-19T18:02:43.040Z

This one, I guess?

2020-03-19T18:03:01.040400Z

however I think OWA is useful in a modelling context. I just think you often want additional closed world constraints on the data you load.

2020-03-19T18:03:37.040800Z

Thanks, I'll have to watch this.

2020-03-19T18:04:32.041Z

backing up a bit… There’s a difference between OWL and RDF though. When you speak about bringing ontologies to other systems, do you mean OWL-like reasoning?

2020-03-19T18:05:58.041200Z

Or is that the bit you want to leave out?

2020-03-19T18:07:21.041500Z

That's a bit I'd like to make optional 🙂

Ivan 2020-03-19T18:07:30.041700Z

https://www.youtube.com/watch?v=dQWcD2_FzAU#t=28m6s on 28:06

2020-03-19T18:07:45.042Z

As I understand it, default logic is inconsistent with the OWA.

2020-03-19T18:07:55.042200Z

Well it already is optional — even in RDF. 🙂

2020-03-19T18:10:21.042900Z

I definitely want to leave the door open to putting whatever data you have into a triple/quad store, and firing up the reasoner, if you can tame your data to the point where everything fits together just so.

2020-03-19T18:11:22.043100Z

My experience with RDF was almost entirely ingesting crowd-sourced Linked Data, and my data was seldom that tame. I mostly used property paths and did my reasoning lazily.

2020-03-19T18:11:43.043300Z

The traversal functions in IGraph are directly inspired by that.

2020-03-19T18:13:31.043500Z

Funny you should mention defeasible logics; I used to work for a company that made what was I think at the time one of the first real implementations of a defeasible reasoner — based on the logic of Henry Prakken.

2020-03-19T18:16:22.043700Z

Either way it’s an interesting objection to raise against OWL. At the time we certainly had those objections to it too… IIRC our CTO felt OWL was pretty conservative. Are you actually applying or wanting to apply defeasible reasoning against your data? If so what for?

2020-03-19T18:21:27.044Z

Well I'm far from the point where I'm ready to announce this yet, but I've started a project here: https://github.com/ont-app/prototypes

2020-03-19T18:22:15.044300Z

It's quite raw, and even the README is crappy.

2020-03-19T18:22:31.044500Z

we will forgive you having one crap readme 🙂

2020-03-19T18:22:39.044700Z

the others were great

2020-03-19T18:23:02.044900Z

Oh thanks!

2020-03-19T18:23:29.045100Z

If you're interested, I guess you might get some idea from the test file:

2020-03-19T18:25:38.045800Z

hold on let me find something you’ll find interesting