Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: general cleanup / fix typos

...

Triple Pattern Fragments is a form of Linked Data Fragments (see References) for querying a triple store to retrieve a set of triples matching a specified pattern. The pattern is always of the form subject predicate object, where any or all of the elements of the pattern may be unspecified, that is, wildcards.

SPARQL and Linked DataFragmentsData Fragments, alternatives to Triple Pattern Fragments, are very powerful, and as a result, can generate queries that take a long time to run, slowing the server, and in some cases, making the server unavailable. This results in sites shutting down their access points for fear of losing availability to long-running queries. Triple Pattern Fragments solves this problem by allowing only one kind of query, the pattern. Pattern matching is indexed and very fast, insuring the servers remain available while handling queries.

For example the pattern <uri> * * finds all the triples which have the specified uri URI as a subject. The pattern * <uri> * finds all the triples with the specified predicate, and * * <uri> finds all the triples with the specified object.

...

Each of the elements in each of the triples is a link. Clicking a link will issue a TPF query with the selected element as the specified value in a triple. For example, clicking on "Tokyo" in the esample example above, generates a TPF request of the form * * "Tokyo" – that is, find all the triples that have the text string "Tokyo" as an object. The result is shown below:

...

We see that OpenVIVO has 601 triples with "Tokyo" as an object. The displayed triples show Tokyo as a locality in an address. Putting double quotes around literal values is required.   TPF supports the use of language tags to select literal values with specifix specific language tags.

To specify a URI in a pattern, give the full URI (no prefix, no truncation) with no brackets. For example, to find all the triples with a subject of http://openvivo.org/a/orcid0000-0002-1304-8447, put the URI in the subject field and leave predicate field and the object field empty.   See below:

199 triples are returned.  Each has the specified subject.  Data managers might note:

  1. There are many RO_0000053 predciatespredicates.  These are "bearer_of" role assertions.  See Ontology Reference for diagrams showing how VIVO uses roles and represents information.  TPF can be a very good tools for exploring the data and learning about information representation.
  2. The sixth triple is an assertion that the subject in question is a person.  At the bottom of the screen shot we see that the person has two labels.  "Michael Conlon" and "Michael Conlon"@en-US.  Is this something that is expected, or something that should be changed?  TPF makes a good tool for discussing VIVO data practices with others.
  3. We see that the person is relatedBy an authorship.  How many relatedBy assertions does this person have?  We could issue a TPF query for the subject and for related by as a predicate.  The results are shown below:

...

To try this yourself, you can use the Linked Data Fragments Server of OpenVIVO, available here: http://openvivo.org/tpf


Curl

Curl curl can be used to issue triple pattern fragment queries and return JSONRDF/XML.  For example:

Code Block
curl http://openvivo.org/tpf/core

returns 169 lines of RFRDF/XML, output truncated below

...

  1. The return is RDF/XML containing the first 100 triples of the result set.   We see a company being described with a series of assertions.
  2. The return contains a description of the returned data.  There is a void:Dataset description containing information about the query, its size (5,113,025 triples), and that 100 are included. The description also contains URL than can be used to navigate to the next page and firstpage first page in the result set.

IRI Patterns

...

Returns an RD/XML document containing the first 100 triples regarding the specified subject.

Programmatic Access

Programmtic Programmatic access follows the same approach as curl.   Issue an HTTP request for the specified data.   Here's a simple python program making a TPF request.

...

  1. Linked Data Fragments In-depth http://linkeddatafragments.org/in-depth/
  2. Triple Pattern Fragments specification http://www.hydra-cg.com/spec/latest/triple-pattern-fragments/
  3. Verborgh, R. et al. Triple Pattern Fragments: A low cost knowledege knowledge graph interface for the web https://www.sciencedirect.com/science/article/pii/S1570826816000214?via%3Dihub
  4. Verborgh, R. The Future is Federated. Invited presentation at 2016 VIVO Conference, Denver, Colorado. http://openvivo.org/display/doi10.6084/m9.figshare.3680310
  5. LinkedDataFragments Server. Github. https://github.com/LinkedDataFragments/Server.Java