abraxaz
Joined 7 years ago
Joined 7 years ago
RDF is quite flexible and using a combination of domain specific ontologies like cheminf[1] and other top level ontologies like BFO[2] should allow you to capture most of the semantics.
[1]: https://www.ebi.ac.uk/ols/ontologies/cheminf [2]: https://en.wikipedia.org/wiki/Basic_Formal_Ontology?wprov=sf...
Other resources: https://github.com/semantalytics/awesome-semantic-web
If you have this problem, consider giving RDF a look - you can fairly easily use RDF based technologies to map the data in these systems onto a common model, some examples of tools that may be useful here is https://www.w3.org/TR/r2rml/ and https://github.com/ontop/ontop - you can also use JSON-LD to convert most JSON data to RDF. For more info ask in https://gitter.im/linkeddata/chat
RDF has concrete syntaxes, one of them being JSON-LD, and it can be used to model relational databases fairly well with R2RML (https://www.w3.org/TR/r2rml/) which essentially turns relation databases into a concrete syntax for RDF.
schema.org is also based on RDF, and is essentially an ontology (one of many) that can be used for RDF and non RDF data, but mainly because almost all data can be represented as RDF - so non RDF data is just data that does not have a formal mapping to RDF yet.
Ontologies is a concept used frequently in RDF but rarely outside of it, it is quite important for federated or distributed knowledge, or descriptions of entities. It focuses heavily on modelling properties instead of modelling objects, and then whenever a property occurs that property can be understood within the context of an ontology.
An example is the age of a person (https://schema.org/birthDate)
When I get a semantic triple:
<example:JohnSmith> <https://schema.org/birthDate> "2000-01-01"^^<https://schema.org/Date>
This tells me that the entity identified by the IRI <example:JohnSmith> is a person - and their birth date is 2000-01-01. I however don't expect that i will get all other descriptions of this person at the same time, I won't necessarily get their <https://schema.org/nationality> for example, even though this is a property of a <https://schema.org/Person> defined by schema.org
I can also combine https://schema.org/ based descriptions with other descriptions, and these descriptions can be merged from multiple sources and then queried together using SPARQL.
Indeed, it is an incredibly rewarding experience. Take one thing you use and like, go to it's issue backlog and start fixing/improving things - if there is nothing take the next thing, there are likely 10s of thins you rely on every day that need contributors and contributions. The first issue will be hard, the next one easier, you will be a happier person for doing it, you will make a bigger impact than starting another project you won't finish and that nobody will use, and you will become a better engineer.
Another option is to fund actual open source projects, like go sponsor python: https://github.com/sponsors/python
This has been happening for 1000s of years already before NFTs.
> Never in history has anyone been able to buy shares of highly coveted art... maybe now you can?
Yes, they have: https://www.masterworks.io/
So for example, using turtle syntax [1], instead of
<https://engineering.zalando.com/posts/2022/04/functional-tes...> <http://example.com/graph-edge> <https://www.testcontainers.org/>
have
<https://engineering.zalando.com/posts/2022/04/functional-tes...> <http://purl.org/dc/terms/subject> <https://www.testcontainers.org/>
The semantics of http://purl.org/dc/terms/subject is given at the url itself, but in brief:
> A topic of the resource.
> Recommended practice is to refer to the subject with a URI. If this is not possible or feasible, a literal value that identifies the subject may be provided. Both should preferably refer to a subject in a controlled vocabulary.
This would be similar to how wikidata expresses knowledge [2]:
<http://www.wikidata.org/entity/Q28315661> <http://www.wikidata.org/prop/direct/P921> <http://www.wikidata.org/entity/Q750997>
Or in English:
"Go To Statement Considered Harmful"(Q28315661)'s "main subject"(P921) is "goto"(Q750997)
This also makes it easier to query [4], for example, you could get all articles covering a "goto" with the following SPARQL[5] query:
SELECT ?item WHERE { ?item <http://www.wikidata.org/prop/direct/P921> <http://www.wikidata.org/entity/Q750997> }
May help to read the RDF primer [3] also.
[1]: https://www.w3.org/TR/turtle/
[2]: https://www.wikidata.org/wiki/Q28315661
[3]: https://www.w3.org/TR/rdf11-primer/
[4]: https://w.wiki/5RW2
[5]: https://docs.stardog.com/tutorials/learn-sparql